SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: buf0 = struct @align(4) {
  one: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, vec3<f32>, read_write> = var
    %d:ptr<function, f32, read_write> = var
    %6:ptr<uniform, f32, read> = access %x_6, 0u
    %7:f32 = load %6
    %x_36:f32 = let %7
    %9:vec3<f32> = construct %x_36, %x_36, %x_36
    %10:vec3<f32> = mix vec3<f32>(5.0f, 8.0f, -12.19999980926513671875f), vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f), %9
    store %v, %10
    %11:vec3<f32> = load %v
    %x_39:vec3<f32> = let %11
    %13:f32 = distance %x_39, vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f)
    store %d, %13
    %14:f32 = load %d
    %x_41:f32 = let %14
    %16:bool = lt %x_41, 0.10000000149011611938f
    if %16 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %17:f32 = load_vector_element %v, 0u
        %x_47:f32 = let %17
        %19:vec4<f32> = construct %x_47, 0.0f, 0.0f, 1.0f
        store %x_GLF_color, %19
        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: {
    %21:void = call %main_1
    %22:vec4<f32> = load %x_GLF_color
    %23:main_out = construct %22
    ret %23
  }
}

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