SKIP: FAILED

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

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

OuterS = struct @align(4) {
  a1:array<InnerS, 8> @offset(0)
}

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

%f = func(%p:ptr<function, OuterS, read_write>):void {
  $B2: {
    %v:ptr<function, InnerS, read_write> = var
    %5:ptr<uniform, u32, read> = access %uniforms, 0u
    %6:u32 = load %5
    %7:ptr<function, InnerS, read_write> = access %p, 0u, %6
    %8:InnerS = load %v
    store %7, %8
    ret
  }
}
%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
  $B3: {
    %s1:ptr<function, OuterS, read_write> = var
    %11:void = call %f, %s1
    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.  *
********************************************************************
