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
    %8:vec3<f32> = construct %7
    %9:vec3<f32> = mix vec3<f32>(5.0f, 8.0f, -12.19999980926513671875f), vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f), %8
    store %v, %9
    %10:vec3<f32> = load %v
    %11:f32 = distance %10, vec3<f32>(1.0f, 4.90000009536743164062f, -2.09999990463256835938f)
    store %d, %11
    %12:f32 = load %d
    %13:bool = lt %12, 0.10000000149011611938f
    if %13 [t: $B3, f: $B4] {  # if_1
      $B3: {  # true
        %14:f32 = load_vector_element %v, 0u
        %15:vec4<f32> = construct %14, 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.  *
********************************************************************
