SKIP: FAILED

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

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

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

%main_1 = func():void {
  $B2: {
    %j:ptr<function, i32, read_write> = var
    %x_41:ptr<function, f32, read_write> = var
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
        %7:f32 = load_vector_element %6, 0u
        %x_32:f32 = let %7
        %9:i32 = call %tint_f32_to_i32, %x_32
        store %j, %9
        loop [b: $B5] {  # loop_2
          $B5: {  # body
            %11:i32 = load %j
            %x_8:i32 = let %11
            %13:bool = lt %x_8, 2i
            if %13 [t: $B6, f: $B7] {  # if_1
              $B6: {  # true
                exit_if  # if_1
              }
              $B7: {  # false
                exit_loop  # loop_2
              }
            }
            ret
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %14:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
        %15:f32 = load_vector_element %14, 1u
        store %x_41, %15
        %16:f32 = load %x_41
        %17:bool = gt 0.0f, %16
        %18:bool = eq %17, false
        break_if %18  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    %19:f32 = load %x_41
    %20:i32 = call %tint_f32_to_i32, %19
    %x_43:i32 = let %20
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B8: {
    %23:void = call %main_1
    %24:vec4<f32> = load %x_GLF_color
    %25:main_out = construct %24
    ret %25
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B9: {
    %27:i32 = convert %value
    %28:bool = gte %value, -2147483648.0f
    %29:i32 = select -2147483648i, %27, %28
    %30:bool = lte %value, 2147483520.0f
    %31:i32 = select 2147483647i, %29, %30
    ret %31
  }
}

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.  *
********************************************************************
