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_9:ptr<function, array<i32, 1>, read_write> = var
    %x_10:ptr<function, i32, read_write> = var
    %6:ptr<function, i32, read_write> = access %x_9, 0u
    %7:i32 = load %6
    %x_6:i32 = let %7
    loop [b: $B3] {  # loop_1
      $B3: {  # body
        store %x_GLF_color, vec4<f32>(0.0f)
        %9:ptr<uniform, i32, read> = access %x_5, 0u
        %10:i32 = load %9
        %11:ptr<function, i32, read_write> = access %x_9, %10
        %12:i32 = load %11
        %13:bool = eq %12, %x_6
        if %13 [t: $B4] {  # if_1
          $B4: {  # true
            store %x_10, 1i
            exit_loop  # loop_1
          }
        }
        store %x_10, 2i
        exit_loop  # loop_1
      }
    }
    %14:i32 = load %x_10
    %15:bool = eq %14, 1i
    %16:i32 = load %x_10
    %17:bool = eq %16, 2i
    %18:bool = or %15, %17
    if %18 [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: {
    %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.  *
********************************************************************
