SKIP: FAILED

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

InnerS = struct @align(4) {
  v:i32 @offset(0)
}

OuterS = struct @align(4) {
  a1:array<array<InnerS, 8>, 8> @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: {
    %v:ptr<function, InnerS, read_write> = var
    %s1:ptr<function, OuterS, read_write> = var
    %5:ptr<uniform, u32, read> = access %uniforms, 0u
    %6:u32 = load %5
    %7:ptr<uniform, u32, read> = access %uniforms, 1u
    %8:u32 = load %7
    %9:ptr<function, InnerS, read_write> = access %s1, 0u, %6, %8
    %10:InnerS = load %v
    store %9, %10
    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.  *
********************************************************************
