SKIP: FAILED

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

%main_1 = func():void {
  $B2: {
    %x_24:ptr<function, vec4<f32>, read_write> = var
    store %x_GLF_color, vec4<f32>(0.0f)
    %5:ptr<uniform, i32, read> = access %x_6, 0u
    %6:i32 = load %5
    %x_26:i32 = let %6
    %8:bool = eq %x_26, 0i
    if %8 [t: $B3] {  # if_1
      $B3: {  # true
        ret
      }
    }
    store %x_24, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B4: {
    %10:void = call %main_1
    %11:vec4<f32> = load %x_GLF_color
    %12:main_out = construct %11
    ret %12
  }
}
%func_ = func():vec4<f32> {
  $B5: {
    ret vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
  }
}

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