SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Inner = struct @align(16) {
  scalar_f32:f32 @offset(0)
  scalar_i32:i32 @offset(4)
  scalar_u32:u32 @offset(8)
  vec2_f32:vec2<f32> @offset(16)
  vec2_i32:vec2<i32> @offset(24)
  vec2_u32:vec2<u32> @offset(32)
  vec3_f32:vec3<f32> @offset(48)
  vec3_i32:vec3<i32> @offset(64)
  vec3_u32:vec3<u32> @offset(80)
  vec4_f32:vec4<f32> @offset(96)
  vec4_i32:vec4<i32> @offset(112)
  vec4_u32:vec4<u32> @offset(128)
  mat2x2_f32:mat2x2<f32> @offset(144)
  mat2x3_f32:mat2x3<f32> @offset(160)
  mat2x4_f32:mat2x4<f32> @offset(192)
  mat3x2_f32:mat3x2<f32> @offset(224)
  mat3x3_f32:mat3x3<f32> @offset(256)
  mat3x4_f32:mat3x4<f32> @offset(304)
  mat4x2_f32:mat4x2<f32> @offset(352)
  mat4x3_f32:mat4x3<f32> @offset(384)
  mat4x4_f32:mat4x4<f32> @offset(448)
  arr2_vec3_f32:array<vec3<f32>, 2> @offset(512)
}

S = struct @align(16) {
  arr:array<Inner, 8> @offset(0)
}

%b1 = block {  # root
  %ub:ptr<uniform, S, read> = var @binding_point(0, 0)
}

%tint_symbol = @compute @workgroup_size(1, 1, 1) func(%idx:u32 [@local_invocation_index]):void -> %b2 {
  %b2 = block {
    %4:ptr<uniform, f32, read> = access %ub, 0u, %idx, 0u
    %scalar_f32:f32 = load %4
    %6:ptr<uniform, i32, read> = access %ub, 0u, %idx, 1u
    %scalar_i32:i32 = load %6
    %8:ptr<uniform, u32, read> = access %ub, 0u, %idx, 2u
    %scalar_u32:u32 = load %8
    %10:ptr<uniform, vec2<f32>, read> = access %ub, 0u, %idx, 3u
    %vec2_f32:vec2<f32> = load %10
    %12:ptr<uniform, vec2<i32>, read> = access %ub, 0u, %idx, 4u
    %vec2_i32:vec2<i32> = load %12
    %14:ptr<uniform, vec2<u32>, read> = access %ub, 0u, %idx, 5u
    %vec2_u32:vec2<u32> = load %14
    %16:ptr<uniform, vec3<f32>, read> = access %ub, 0u, %idx, 6u
    %vec3_f32:vec3<f32> = load %16
    %18:ptr<uniform, vec3<i32>, read> = access %ub, 0u, %idx, 7u
    %vec3_i32:vec3<i32> = load %18
    %20:ptr<uniform, vec3<u32>, read> = access %ub, 0u, %idx, 8u
    %vec3_u32:vec3<u32> = load %20
    %22:ptr<uniform, vec4<f32>, read> = access %ub, 0u, %idx, 9u
    %vec4_f32:vec4<f32> = load %22
    %24:ptr<uniform, vec4<i32>, read> = access %ub, 0u, %idx, 10u
    %vec4_i32:vec4<i32> = load %24
    %26:ptr<uniform, vec4<u32>, read> = access %ub, 0u, %idx, 11u
    %vec4_u32:vec4<u32> = load %26
    %28:ptr<uniform, mat2x2<f32>, read> = access %ub, 0u, %idx, 12u
    %mat2x2_f32:mat2x2<f32> = load %28
    %30:ptr<uniform, mat2x3<f32>, read> = access %ub, 0u, %idx, 13u
    %mat2x3_f32:mat2x3<f32> = load %30
    %32:ptr<uniform, mat2x4<f32>, read> = access %ub, 0u, %idx, 14u
    %mat2x4_f32:mat2x4<f32> = load %32
    %34:ptr<uniform, mat3x2<f32>, read> = access %ub, 0u, %idx, 15u
    %mat3x2_f32:mat3x2<f32> = load %34
    %36:ptr<uniform, mat3x3<f32>, read> = access %ub, 0u, %idx, 16u
    %mat3x3_f32:mat3x3<f32> = load %36
    %38:ptr<uniform, mat3x4<f32>, read> = access %ub, 0u, %idx, 17u
    %mat3x4_f32:mat3x4<f32> = load %38
    %40:ptr<uniform, mat4x2<f32>, read> = access %ub, 0u, %idx, 18u
    %mat4x2_f32:mat4x2<f32> = load %40
    %42:ptr<uniform, mat4x3<f32>, read> = access %ub, 0u, %idx, 19u
    %mat4x3_f32:mat4x3<f32> = load %42
    %44:ptr<uniform, mat4x4<f32>, read> = access %ub, 0u, %idx, 20u
    %mat4x4_f32:mat4x4<f32> = load %44
    %46:ptr<uniform, array<vec3<f32>, 2>, read> = access %ub, 0u, %idx, 21u
    %arr2_vec3_f32:array<vec3<f32>, 2> = load %46
    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.  *
********************************************************************
