SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: result = struct @align(4) {
  res0:i32 @offset(0)
  res1:i32 @offset(4)
  res2:i32 @offset(8)
}

block0 = struct @align(4) {
  data0:i32 @offset(0)
}

block1 = struct @align(4) {
  data1:i32 @offset(0)
}

block2 = struct @align(4) {
  data2:i32 @offset(0)
}

$B1: {  # root
  %x_4:ptr<storage, result, read_write> = var @binding_point(0, 3)
  %x_6:ptr<uniform, block0, read> = var @binding_point(0, 0)
  %x_8:ptr<uniform, block1, read> = var @binding_point(0, 1)
  %x_10:ptr<uniform, block2, read> = var @binding_point(0, 2)
}

%main_1 = func():void {
  $B2: {
    %6:ptr<storage, i32, read_write> = access %x_4, 0u
    %7:ptr<uniform, i32, read> = access %x_6, 0u
    %8:i32 = load %7
    store %6, %8
    %9:ptr<storage, i32, read_write> = access %x_4, 1u
    %10:ptr<uniform, i32, read> = access %x_8, 0u
    %11:i32 = load %10
    store %9, %11
    %12:ptr<storage, i32, read_write> = access %x_4, 2u
    %13:ptr<uniform, i32, read> = access %x_10, 0u
    %14:i32 = load %13
    store %12, %14
    ret
  }
}
%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
  $B3: {
    %16:void = call %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.  *
********************************************************************
