SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
  two:f32 @offset(0)
}

main_out = struct @align(16) {
  x_GLF_color_1:vec4<f32> @offset(0), @location(0)
}

$B1: {  # root
  %x_7:ptr<uniform, buf0, read> = var @binding_point(0, 0)
  %x_GLF_color:ptr<private, vec4<f32>, read_write> = var
}

%func_vf2_ = func(%v:ptr<function, vec2<f32>, read_write>):f32 {
  $B2: {
    %5:ptr<uniform, f32, read> = access %x_7, 0u
    %6:f32 = load %5
    store_vector_element %v, 0u, %6
    %7:f32 = load_vector_element %v, 1u
    %8:bool = lt %7, 1.0f
    if %8 [t: $B3] {  # if_1
      $B3: {  # true
        ret 1.0f
      }
    }
    ret 5.0f
  }
}
%main_1 = func():void {
  $B4: {
    %f:ptr<function, f32, read_write> = var
    %param:ptr<function, vec2<f32>, read_write> = var
    store %param, vec2<f32>(1.0f)
    %12:f32 = call %func_vf2_, %param
    %x_34:f32 = let %12
    store %f, %x_34
    %14:f32 = load %f
    %15:bool = eq %14, 5.0f
    if %15 [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: {
    %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.  *
********************************************************************
