SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
  zero:i32 @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_5:ptr<uniform, buf0, read> = var @binding_point(0, 0)
}

%main_1 = func():void {
  $B2: {
    %x_10:ptr<function, array<i32, 1>, read_write> = var
    %x_9:ptr<function, array<i32, 1>, read_write> = var
    %x_7:ptr<function, i32, read_write> = var
    %x_11_phi:ptr<function, i32, read_write> = var
    %8:ptr<uniform, i32, read> = access %x_5, 0u
    %9:i32 = load %8
    %x_6:i32 = let %9
    %11:ptr<function, i32, read_write> = access %x_9, 0i
    store %11, %x_6
    %12:array<i32, 1> = load %x_9
    %x_37:array<i32, 1> = let %12
    store %x_10, %x_37
    %14:ptr<function, i32, read_write> = access %x_9, 0i
    %15:i32 = load %14
    store %x_7, %15
    switch 0u [c: (default, $B3)] {  # switch_1
      $B3: {  # case
        store %x_GLF_color, vec4<f32>(0.0f)
        %16:ptr<function, i32, read_write> = access %x_10, 0i
        %17:i32 = load %16
        %x_8:i32 = let %17
        %19:i32 = load %x_7
        %20:i32 = bitcast %19
        %21:bool = eq %x_8, %20
        if %21 [t: $B4] {  # if_1
          $B4: {  # true
            store %x_11_phi, 1i
            exit_switch  # switch_1
          }
        }
        store %x_11_phi, 2i
        exit_switch  # switch_1
      }
    }
    %22:i32 = load %x_11_phi
    %x_11:i32 = let %22
    %24:bool = eq %x_11, 1i
    if %24 [t: $B5, f: $B6] {  # if_2
      $B5: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_2
      }
      $B6: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B7: {
    %26:void = call %main_1
    %27:vec4<f32> = load %x_GLF_color
    %28:main_out = construct %27
    ret %28
  }
}

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