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
    store %b, %11
    store %one, 0.0f
    %12:ptr<uniform, i32, read> = access %x_7, 0u
    %13:i32 = load %12
    %14:ptr<function, i32, read_write> = access %b, 0u, %13
    %15:i32 = load %14
    %16:bool = eq %15, 1i
    if %16 [t: $B3] {  # if_1
      $B3: {  # true
        store %one, 1.0f
        exit_if  # if_1
      }
    }
    %17:f32 = load %one
    %18:vec4<f32> = construct %17, 0.0f, 0.0f, 1.0f
    store %x_GLF_color, %18
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B4: {
    %20:void = call %main_1
    %21:vec4<f32> = load %x_GLF_color
    %22:main_out = construct %21
    ret %22
  }
}

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