SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: SB_RW_atomic = struct @align(4) {
  arg_0:atomic<u32> @offset(0)
}

$B1: {  # root
  %sb_rw:ptr<storage, SB_RW_atomic, read_write> = var @binding_point(0, 0)
}

%atomicLoad_fe6cc3 = func():void {
  $B2: {
    %res:ptr<function, u32, read_write> = var, 0u
    %4:ptr<storage, atomic<u32>, read_write> = access %sb_rw, 0u
    %5:u32 = atomicLoad %4
    %x_9:u32 = let %5
    store %res, %x_9
    ret
  }
}
%fragment_main_1 = func():void {
  $B3: {
    %8:void = call %atomicLoad_fe6cc3
    ret
  }
}
%fragment_main = @fragment func():void {
  $B4: {
    %10:void = call %fragment_main_1
    ret
  }
}
%compute_main_1 = func():void {
  $B5: {
    %12:void = call %atomicLoad_fe6cc3
    ret
  }
}
%compute_main = @compute @workgroup_size(1, 1, 1) func():void {
  $B6: {
    %14:void = call %compute_main_1
    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.  *
********************************************************************
