SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: PixelLocal = struct @align(4) {
  a:u32 @offset(0)
  b:i32 @offset(4)
  c:f32 @offset(8)
}

Out = struct @align(16) {
  x:vec4<f32> @offset(0), @location(0)
  y:vec4<f32> @offset(16), @location(2)
  z:vec4<f32> @offset(32), @location(4)
}

$B1: {  # root
  %P:ptr<pixel_local, PixelLocal, read_write> = var
}

%f0 = func():void {
  $B2: {
    %3:ptr<pixel_local, u32, read_write> = access %P, 0u
    %4:u32 = load %3
    %5:u32 = add %4, 9u
    store %3, %5
    ret
  }
}
%f1 = func():void {
  $B3: {
    %7:void = call %f0
    %8:ptr<pixel_local, u32, read_write> = access %P, 0u
    %9:u32 = load %8
    %10:u32 = add %9, 8u
    store %8, %10
    ret
  }
}
%f2 = func():void {
  $B4: {
    %12:ptr<pixel_local, u32, read_write> = access %P, 0u
    %13:u32 = load %12
    %14:u32 = add %13, 7u
    store %12, %14
    %15:void = call %f1
    ret
  }
}
%f = @fragment func():Out {
  $B5: {
    %17:void = call %f2
    ret Out(vec4<f32>(10.0f), vec4<f32>(20.0f), vec4<f32>(30.0f))
  }
}

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.  *
********************************************************************
