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> @offset(0)
}

%b1 = block {  # root
  %sb:ptr<storage, S, read_write> = 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<storage, f32, read_write> = access %sb, 0u, %idx, 0u
    store %4, 0.0f
    %5:ptr<storage, i32, read_write> = access %sb, 0u, %idx, 1u
    store %5, 0i
    %6:ptr<storage, u32, read_write> = access %sb, 0u, %idx, 2u
    store %6, 0u
    %7:ptr<storage, vec2<f32>, read_write> = access %sb, 0u, %idx, 3u
    store %7, vec2<f32>(0.0f)
    %8:ptr<storage, vec2<i32>, read_write> = access %sb, 0u, %idx, 4u
    store %8, vec2<i32>(0i)
    %9:ptr<storage, vec2<u32>, read_write> = access %sb, 0u, %idx, 5u
    store %9, vec2<u32>(0u)
    %10:ptr<storage, vec3<f32>, read_write> = access %sb, 0u, %idx, 6u
    store %10, vec3<f32>(0.0f)
    %11:ptr<storage, vec3<i32>, read_write> = access %sb, 0u, %idx, 7u
    store %11, vec3<i32>(0i)
    %12:ptr<storage, vec3<u32>, read_write> = access %sb, 0u, %idx, 8u
    store %12, vec3<u32>(0u)
    %13:ptr<storage, vec4<f32>, read_write> = access %sb, 0u, %idx, 9u
    store %13, vec4<f32>(0.0f)
    %14:ptr<storage, vec4<i32>, read_write> = access %sb, 0u, %idx, 10u
    store %14, vec4<i32>(0i)
    %15:ptr<storage, vec4<u32>, read_write> = access %sb, 0u, %idx, 11u
    store %15, vec4<u32>(0u)
    %16:ptr<storage, mat2x2<f32>, read_write> = access %sb, 0u, %idx, 12u
    store %16, mat2x2<f32>(vec2<f32>(0.0f))
    %17:ptr<storage, mat2x3<f32>, read_write> = access %sb, 0u, %idx, 13u
    store %17, mat2x3<f32>(vec3<f32>(0.0f))
    %18:ptr<storage, mat2x4<f32>, read_write> = access %sb, 0u, %idx, 14u
    store %18, mat2x4<f32>(vec4<f32>(0.0f))
    %19:ptr<storage, mat3x2<f32>, read_write> = access %sb, 0u, %idx, 15u
    store %19, mat3x2<f32>(vec2<f32>(0.0f))
    %20:ptr<storage, mat3x3<f32>, read_write> = access %sb, 0u, %idx, 16u
    store %20, mat3x3<f32>(vec3<f32>(0.0f))
    %21:ptr<storage, mat3x4<f32>, read_write> = access %sb, 0u, %idx, 17u
    store %21, mat3x4<f32>(vec4<f32>(0.0f))
    %22:ptr<storage, mat4x2<f32>, read_write> = access %sb, 0u, %idx, 18u
    store %22, mat4x2<f32>(vec2<f32>(0.0f))
    %23:ptr<storage, mat4x3<f32>, read_write> = access %sb, 0u, %idx, 19u
    store %23, mat4x3<f32>(vec3<f32>(0.0f))
    %24:ptr<storage, mat4x4<f32>, read_write> = access %sb, 0u, %idx, 20u
    store %24, mat4x4<f32>(vec4<f32>(0.0f))
    %25:ptr<storage, array<vec3<f32>, 2>, read_write> = access %sb, 0u, %idx, 21u
    store %25, array<vec3<f32>, 2>(vec3<f32>(0.0f))
    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.  *
********************************************************************
