SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
  threeandfour:vec2<f32> @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: {
    %v:ptr<function, vec4<f32>, read_write> = var
    store %v, vec4<f32>(2.0f, 3.0f, 4.0f, 5.0f)
    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %6:f32 = load_vector_element %5, 1u
    %x_40:f32 = let %6
    %8:vec2<f32> = construct 1.0f, %x_40
    %9:vec2<f32> = select vec2<f32>(2.0f, 6.0f), %8, vec2<bool>(true, false)
    %x_42:vec2<f32> = let %9
    %11:vec4<f32> = load %v
    %x_43:vec4<f32> = let %11
    %13:f32 = access %x_42, 0u
    %14:f32 = access %x_42, 1u
    %15:f32 = access %x_43, 2u
    %16:f32 = access %x_43, 3u
    %17:vec4<f32> = construct %13, %14, %15, %16
    store %v, %17
    %18:vec4<f32> = load %v
    %x_45:vec4<f32> = let %18
    %20:vec4<bool> = eq %x_45, vec4<f32>(1.0f, 6.0f, 4.0f, 5.0f)
    %21:bool = all %20
    if %21 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        exit_if  # if_1
      }
      $B4: {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out {
  $B5: {
    %23:void = call %main_1
    %24:vec4<f32> = load %x_GLF_color
    %25:main_out = construct %24
    ret %25
  }
}

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