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)
}

%performPartition_ = func():i32 {
  $B2: {
    %GLF_live0i:ptr<function, i32, read_write> = var
    %i:ptr<function, i32, read_write> = var
    %x_11:ptr<function, i32, read_write> = var
    %x_10_phi:ptr<function, i32, read_write> = var
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    store %x_10_phi, 0i
    loop [b: $B3, c: $B4] {  # loop_1
      $B3: {  # body
        %x_11_phi:ptr<function, i32, read_write> = var
        %9:i32 = load %x_10_phi
        %x_10:i32 = let %9
        %x_42:ptr<function, bool, read_write> = var
        %12:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
        %13:f32 = load_vector_element %12, 1u
        %x_41:f32 = let %13
        %15:bool = lt %x_41, 0.0f
        store %x_42, %15
        %16:bool = load %x_42
        if %16 [t: $B5, f: $B6] {  # if_1
          $B5: {  # true
            store %x_11_phi, %x_10
            continue  # -> $B4
          }
          $B6: {  # false
            store %GLF_live0i, 0i
            loop [b: $B7] {  # loop_2
              $B7: {  # body
                %x_47:bool = let true
                %18:bool = load %x_42
                if %18 [t: $B8] {  # if_2
                  $B8: {  # true
                    exit_loop  # loop_2
                  }
                }
                ret 1i
              }
            }
            %19:bool = load %x_42
            if %19 [t: $B9] {  # if_3
              $B9: {  # true
                loop [b: $B10] {  # loop_3
                  $B10: {  # body
                    ret 1i
                  }
                }
                exit_if  # if_3
              }
            }
            store %x_11_phi, %x_10
            continue  # -> $B4
          }
        }
        unreachable
      }
      $B4: {  # continuing
        %20:i32 = load %x_11_phi
        store %x_11, %20
        %21:i32 = load %x_11
        store %x_10_phi, %21
        break_if true  # -> [t: exit_loop loop_1, f: $B3]
      }
    }
    %22:i32 = load %x_11
    ret %22
  }
}
%main_1 = func():void {
  $B11: {
    %24:i32 = call %performPartition_
    %x_9:i32 = let %24
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B12: {
    %27:void = call %main_1
    %28:vec4<f32> = load %x_GLF_color
    %29:main_out = construct %28
    ret %29
  }
}

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