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)
}

%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
    loop [i: $B3, b: $B4, c: $B5] {  # loop_1
      $B3: {  # initializer
        %i:ptr<function, i32, read_write> = var, 0i
        next_iteration  # -> $B4
      }
      $B4: {  # body
        %6:i32 = load %i
        %7:bool = lt %6, 4i
        if %7 [t: $B6, f: $B7] {  # if_1
          $B6: {  # true
            exit_if  # if_1
          }
          $B7: {  # false
            exit_loop  # loop_1
          }
        }
        %8:i32 = load %i
        %9:i32 = add %8, 1i
        store %i, %9
        continue  # -> $B5
      }
      $B5: {  # continuing
        %10:ptr<uniform, u32, read> = access %uniforms, 0u
        %11:u32 = load %10
        %12:ptr<function, InnerS, read_write> = access %s1, 0u, %11
        %13:InnerS = load %v
        store %12, %13
        next_iteration  # -> $B4
      }
    }
    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.  *
********************************************************************
