SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 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 = block {  # 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 {
  %b2 = block {
    %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 = block {  # 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 = block {  # false
        store %x_GLF_color, vec4<f32>(0.0f)
        exit_if  # if_1
      }
    }
    ret
  }
}
%tint_symbol = @fragment func():main_out -> %b5 {
  %b5 = block {
    %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.  *
********************************************************************
