SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
  one: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: {
    %mixed:ptr<function, vec2<f32>, read_write> = var
    %5:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %6:vec2<f32> = load %5
    %x_30:vec2<f32> = let %6
    %8:vec2<f32> = mix vec2<f32>(1.0f), %x_30, vec2<f32>(0.5f)
    store %mixed, %8
    %9:vec2<f32> = load %mixed
    %x_33:vec2<f32> = let %9
    %11:vec2<bool> = eq %x_33, vec2<f32>(1.0f)
    %12:bool = all %11
    if %12 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %13:f32 = load_vector_element %mixed, 0u
        %x_40:f32 = let %13
        %15:vec4<f32> = construct %x_40, 0.0f, 0.0f, 1.0f
        store %x_GLF_color, %15
        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: {
    %17:void = call %main_1
    %18:vec4<f32> = load %x_GLF_color
    %19:main_out = construct %18
    ret %19
  }
}

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