SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(8) {
  zeroOne: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, vec2<f32>, read_write> = var
    %d:ptr<function, f32, read_write> = var
    %6:ptr<uniform, vec2<f32>, read> = access %x_6, 0u
    %7:vec2<f32> = load %6
    %8:vec2<f32> = mix vec2<f32>(2.0f, 3.0f), vec2<f32>(4.0f, 5.0f), %7
    store %v, %8
    %9:vec2<f32> = load %v
    %10:f32 = distance %9, vec2<f32>(2.0f, 5.0f)
    store %d, %10
    %11:f32 = load %d
    %12:bool = lt %11, 0.10000000149011611938f
    if %12 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %13:f32 = load_vector_element %v, 0u
        %14:f32 = sub %13, 1.0f
        %15:f32 = load_vector_element %v, 1u
        %16:f32 = sub %15, 5.0f
        %17:vec4<f32> = construct %14, %16, 0.0f, 1.0f
        store %x_GLF_color, %17
        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: {
    %19:void = call %main_1
    %20:vec4<f32> = load %x_GLF_color
    %21:main_out = construct %20
    ret %21
  }
}

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