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_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%main_1 = func():void {
  $B2: {
    %x_36:ptr<function, bool, read_write> = var, false
    %x_37:ptr<function, bool, read_write> = var
    %x_7:ptr<function, i32, read_write> = var
    %x_38:ptr<function, bool, read_write> = var
    %color:ptr<function, vec3<f32>, read_write> = var
    %x_40:ptr<function, bool, read_write> = var
    %x_42:ptr<function, vec3<f32>, read_write> = var
    %x_43:ptr<function, vec3<f32>, read_write> = var
    %x_56:ptr<function, bool, read_write> = var
    store %x_40, false
    store %x_42, vec3<f32>(0.0f)
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %13:ptr<uniform, vec2<f32>, read> = access %x_5, 0u
        %14:f32 = load_vector_element %13, 1u
        %x_47:f32 = let %14
        %16:vec3<f32> = load %x_42
        store %x_43, %16
        %17:bool = lt %x_47, 0.0f
        if %17 [t: $B5] {  # if_1
          $B5: {  # true
            store %color, vec3<f32>(1.0f)
            store %x_43, vec3<f32>(1.0f)
            exit_if  # if_1
          }
        }
        continue  # -> $B4
      }
      $B4: {  # continuing
        %18:bool = load %x_40
        store %x_40, %18
        %19:vec3<f32> = load %x_43
        store %x_42, %19
        break_if true  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    store %x_36, false
    %20:bool = load %x_40
    store %x_56, %20
    loop [b: $B6] {  # loop_2
      $B6: {  # body
        %x_62:ptr<function, bool, read_write> = var
        store %x_7, 0i
        %22:bool = load %x_56
        store %x_62, %22
        loop [b: $B7] {  # loop_3
          $B7: {  # body
            %x_68:bool = let true
            if true [t: $B8, f: $B9] {  # if_2
              $B8: {  # true
                exit_if  # if_2
              }
              $B9: {  # false
                exit_loop  # loop_3
              }
            }
            store %x_36, true
            store %x_37, true
            exit_loop  # loop_3
          }
        }
        if true [t: $B10] {  # if_3
          $B10: {  # true
            exit_loop  # loop_2
          }
        }
        store %x_36, true
        exit_loop  # loop_2
      }
    }
    store %x_38, true
    %24:f32 = load_vector_element %x_43, 0u
    %25:f32 = load_vector_element %x_43, 1u
    %26:f32 = load_vector_element %x_43, 2u
    %27:vec4<f32> = construct %24, %25, %26, 1.0f
    %28:vec4<f32> = add %27, vec4<f32>(1.0f)
    store %x_GLF_color, %28
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B11: {
    %30:void = call %main_1
    %31:vec4<f32> = load %x_GLF_color
    %32:main_out = construct %31
    ret %32
  }
}

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