SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
  resolution:vec2<f32> @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

$B1: {  # root
  %gl_FragCoord:ptr<private, vec4<f32>, read_write> = var
  %x_6:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %indexable:ptr<function, array<vec4<f32>, 16>, read_write> = var
    %x_69:ptr<function, i32, read_write> = var
    %x_72:ptr<function, i32, read_write> = var
    %8:vec4<f32> = load %gl_FragCoord
    %9:vec2<f32> = swizzle %8, xy
    %10:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %11:vec2<f32> = load %10
    %12:vec2<f32> = div %9, %11
    %x_59:vec2<f32> = let %12
    %14:f32 = access %x_59, 0u
    %15:f32 = mul %14, 10.0f
    %16:i32 = call %tint_f32_to_i32, %15
    %18:i32 = let %16
    %19:f32 = access %x_59, 1u
    %20:f32 = mul %19, 10.0f
    %21:i32 = call %tint_f32_to_i32, %20
    %22:i32 = mul %21, 10i
    %23:i32 = add %18, %22
    %x_67:i32 = let %23
    store %x_69, 100i
    store %x_72, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %x_70:ptr<function, i32, read_write> = var
        %x_73:ptr<function, i32, read_write> = var
        %27:i32 = load %x_72
        %28:bool = lt %27, %x_67
        if %28 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            exit_if  # if_1
          }
          $B6: {  # false
            exit_loop  # loop_1
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %29:i32 = load %x_69
        %30:i32 = mul 4i, %29
        %31:i32 = load %x_69
        %32:i32 = sub 1000i, %31
        %33:i32 = mul %30, %32
        %34:i32 = call %tint_div_i32, %33, 1000i
        store %x_70, %34
        %36:i32 = load %x_72
        %37:i32 = add %36, 1i
        store %x_73, %37
        %38:i32 = load %x_70
        store %x_69, %38
        %39:i32 = load %x_73
        store %x_72, %39
        next_iteration  # -> $B3
      }
    }
    store %indexable, array<vec4<f32>, 16>(vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.0f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.5f, 0.5f, 0.5f, 1.0f), vec4<f32>(0.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(1.0f, 1.0f, 0.0f, 1.0f), vec4<f32>(0.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(1.0f, 0.0f, 1.0f, 1.0f), vec4<f32>(0.0f, 1.0f, 1.0f, 1.0f), vec4<f32>(1.0f))
    %x_80:vec2<f32> = let vec2<f32>(1.0f, 0.5f)
    %41:i32 = load %x_69
    %42:i32 = call %tint_mod_i32, %41, 16i
    %44:ptr<function, vec4<f32>, read_write> = access %indexable, %42
    %45:vec4<f32> = load %44
    store %x_GLF_color, %45
    ret
  }
}
%tint_symbol = @fragment func(%gl_FragCoord_param:vec4<f32> [@position]):main_out {
  $B7: {
    store %gl_FragCoord, %gl_FragCoord_param
    %48:void = call %main_1
    %49:vec4<f32> = load %x_GLF_color
    %50:main_out = construct %49
    ret %50
  }
}
%tint_div_i32 = func(%lhs:i32, %rhs:i32):i32 {
  $B8: {
    %53:bool = eq %rhs, 0i
    %54:bool = eq %lhs, -2147483648i
    %55:bool = eq %rhs, -1i
    %56:bool = and %54, %55
    %57:bool = or %53, %56
    %58:i32 = select %rhs, 1i, %57
    %59:i32 = div %lhs, %58
    ret %59
  }
}
%tint_mod_i32 = func(%lhs_1:i32, %rhs_1:i32):i32 {  # %lhs_1: 'lhs', %rhs_1: 'rhs'
  $B9: {
    %62:bool = eq %rhs_1, 0i
    %63:bool = eq %lhs_1, -2147483648i
    %64:bool = eq %rhs_1, -1i
    %65:bool = and %63, %64
    %66:bool = or %62, %65
    %67:i32 = select %rhs_1, 1i, %66
    %68:i32 = let %67
    %69:i32 = div %lhs_1, %68
    %70:i32 = mul %69, %68
    %71:i32 = sub %lhs_1, %70
    ret %71
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B10: {
    %73:i32 = convert %value
    %74:bool = gte %value, -2147483648.0f
    %75:i32 = select -2147483648i, %73, %74
    %76:bool = lte %value, 2147483520.0f
    %77:i32 = select 2147483647i, %75, %76
    ret %77
  }
}

unhandled variable address space
********************************************************************
*  The tint shader compiler has encountered an unexpected error.   *
*                                                                  *
*  Please help us fix this issue by submitting a bug report at     *
*  crbug.com/tint with the source program that triggered the bug.  *
********************************************************************
