SKIP: FAILED

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

Result = struct @align(4) {
  out:i32 @offset(0)
}

S = struct @align(4) {
  data:array<i32, 64> @offset(0)
}

$B1: {  # root
  %ubo:ptr<uniform, UBO, read> = var @binding_point(0, 0)
  %result:ptr<storage, Result, read_write> = var @binding_point(0, 1)
  %s:ptr<workgroup, S, read_write> = var
}

%f = @compute @workgroup_size(1, 1, 1) func(%tint_local_index:u32 [@local_invocation_index]):void {
  $B2: {
    loop [i: $B3, b: $B4, c: $B5] {  # loop_1
      $B3: {  # initializer
        next_iteration %tint_local_index  # -> $B4
      }
      $B4 (%idx:u32): {  # body
        %7:bool = gte %idx, 64u
        if %7 [t: $B6] {  # if_1
          $B6: {  # true
            exit_loop  # loop_1
          }
        }
        %8:ptr<workgroup, i32, read_write> = access %s, 0u, %idx
        store %8, 0i
        continue  # -> $B5
      }
      $B5: {  # continuing
        %9:u32 = add %idx, 1u
        next_iteration %9  # -> $B4
      }
    }
    %10:void = msl.threadgroup_barrier 4u
    %11:ptr<uniform, i32, read> = access %ubo, 0u
    %12:i32 = load %11
    %13:ptr<workgroup, i32, read_write> = access %s, 0u, %12
    store %13, 1i
    %14:ptr<storage, i32, read_write> = access %result, 0u
    %15:ptr<workgroup, i32, read_write> = access %s, 0u, 3i
    %16:i32 = load %15
    store %14, %16
    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.  *
********************************************************************
