SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Uniforms = struct @align(4) {
  i:u32 @offset(0)
}

OuterS = struct @align(16) {
  m1:mat2x4<f32> @offset(0)
}

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

%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
  $B2: {
    %s1:ptr<function, OuterS, read_write> = var
    %4:ptr<uniform, u32, read> = access %uniforms, 0u
    %5:u32 = load %4
    %6:ptr<function, vec4<f32>, read_write> = access %s1, 0u, %5
    store %6, vec4<f32>(1.0f)
    %7:ptr<uniform, u32, read> = access %uniforms, 0u
    %8:u32 = load %7
    %9:ptr<function, vec4<f32>, read_write> = access %s1, 0u, %8
    %10:ptr<uniform, u32, read> = access %uniforms, 0u
    %11:u32 = load %10
    store_vector_element %9, %11, 1.0f
    ret
  }
}

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