SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
  zero:i32 @offset(0)
}

Array = struct @align(4) {
  values:array<i32, 2> @offset(0)
}

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

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

%main_1 = func():void {
  $B2: {
    %a:ptr<function, Array, read_write> = var
    %b:ptr<function, Array, read_write> = var
    %one:ptr<function, f32, read_write> = var
    %7:ptr<uniform, i32, read> = access %x_7, 0u
    %8:i32 = load %7
    %x_10:i32 = let %8
    %10:ptr<function, i32, read_write> = access %a, 0u, %x_10
    store %10, 1i
    %11:Array = load %a
    %x_35:Array = let %11
    store %b, %x_35
    store %one, 0.0f
    %13:ptr<uniform, i32, read> = access %x_7, 0u
    %14:i32 = load %13
    %x_11:i32 = let %14
    %16:ptr<function, i32, read_write> = access %b, 0u, %x_11
    %17:i32 = load %16
    %x_12:i32 = let %17
    %19:bool = eq %x_12, 1i
    if %19 [t: $B3] {  # if_1
      $B3: {  # true
        store %one, 1.0f
        exit_if  # if_1
      }
    }
    %20:f32 = load %one
    %x_41:f32 = let %20
    %22:vec4<f32> = construct %x_41, 0.0f, 0.0f, 1.0f
    store %x_GLF_color, %22
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B4: {
    %24:void = call %main_1
    %25:vec4<f32> = load %x_GLF_color
    %26:main_out = construct %25
    ret %26
  }
}

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