SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Uniforms = struct @align(16) {
  modelViewProjectionMatrix:mat4x4<f32> @offset(0)
}

VertexOutput = struct @align(16) {
  vtxFragColor:vec4<f32> @offset(0), @location(0)
  Position:vec4<f32> @offset(16), @builtin(position)
}

VertexInput = struct @align(16) {
  cur_position:vec4<f32> @offset(0), @location(0)
  color:vec4<f32> @offset(16), @location(1)
}

$B1: {  # root
  %uniforms:ptr<uniform, Uniforms, read> = var @binding_point(0, 0)
}

%vtx_main = @vertex func(%input:VertexInput):VertexOutput {
  $B2: {
    %output:ptr<function, VertexOutput, read_write> = var
    %5:ptr<function, vec4<f32>, read_write> = access %output, 1u
    %6:ptr<uniform, mat4x4<f32>, read> = access %uniforms, 0u
    %7:mat4x4<f32> = load %6
    %8:vec4<f32> = access %input, 0u
    %9:vec4<f32> = mul %7, %8
    store %5, %9
    %10:ptr<function, vec4<f32>, read_write> = access %output, 0u
    %11:vec4<f32> = access %input, 1u
    store %10, %11
    %12:VertexOutput = load %output
    ret %12
  }
}
%frag_main = @fragment func(%fragColor:vec4<f32> [@location(0)]):vec4<f32> [@location(0)] {
  $B3: {
    ret %fragColor
  }
}

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