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_7: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, vec4<f32>, read_write> = var
    %res:ptr<function, vec4<f32>, read_write> = var
    store %v, vec4<f32>(8.3999996185302734375f, -864.66497802734375f, 945.41998291015625f, 1.0f)
    %6:ptr<uniform, f32, read> = access %x_7, 0u
    %x_31:f32 = load %6
    %x_37:vec4<f32> = load %v
    %9:vec4<f32> = construct %x_31, 0.0f, 0.0f, 0.0f
    %10:vec4<f32> = construct 0.0f, %x_31, 0.0f, 0.0f
    %11:vec4<f32> = construct 0.0f, 0.0f, %x_31, 0.0f
    %12:vec4<f32> = construct 0.0f, 0.0f, 0.0f, %x_31
    %13:mat4x4<f32> = construct %9, %10, %11, %12
    %14:vec4<f32> = mul %13, %x_37
    store %res, %14
    %x_39:vec4<f32> = load %v
    %x_40:vec4<f32> = load %res
    %17:f32 = distance %x_39, %x_40
    %18:bool = lt %17, 0.00999999977648258209f
    if %18 [t: %b3, f: %b4] {  # if_1
      %b3 = block {  # true
        store %x_GLF_color, vec4<f32>(1.0f, 0.0f, 0.0f, 1.0f)
        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 {
    %20:void = call %main_1
    %21:vec4<f32> = load %x_GLF_color
    %22:main_out = construct %21
    ret %22
  }
}

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