SKIP: FAILED

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