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_6: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, vec2<f32>, read_write> = var
    %b:ptr<function, vec2<f32>, read_write> = var
    store %a, vec2<f32>(1.0f)
    %6:ptr<uniform, i32, read> = access %x_6, 0u
    %7:i32 = load %6
    %x_38:i32 = let %7
    %9:bool = eq %x_38, 1i
    if %9 [t: $B3] {  # if_1
      $B3: {  # true
        %10:f32 = load_vector_element %a, 0u
        %x_43:f32 = let %10
        %12:f32 = add %x_43, 1.0f
        store_vector_element %a, 0u, %12
        exit_if  # if_1
      }
    }
    %13:f32 = load_vector_element %a, 1u
    %x_47:f32 = let %13
    %15:vec2<f32> = construct %x_47, %x_47
    %16:vec2<f32> = add %15, vec2<f32>(2.0f, 3.0f)
    store %b, %16
    %17:vec2<f32> = load %b
    %x_50:vec2<f32> = let %17
    %19:vec2<bool> = eq %x_50, vec2<f32>(3.0f, 4.0f)
    %20:bool = all %19
    if %20 [t: $B4, f: $B5] {  # if_2
      $B4: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_2
      }
      $B5: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_2
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B6: {
    %22:void = call %main_1
    %23:vec4<f32> = load %x_GLF_color
    %24:main_out = construct %23
    ret %24
  }
}

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