SKIP: FAILED

../../src/tint/lang/msl/writer/printer/printer.cc:500 internal compiler error: Inner = struct @align(4) {
  scalar_i32:i32 @offset(0)
  scalar_f32:f32 @offset(4)
}

S = 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)
  struct_inner:Inner @offset(544)
  array_struct_inner:array<Inner, 4> @offset(552)
}

$B1: {  # root
  %sb:ptr<storage, S, read> = var @binding_point(0, 0)
  %s:ptr<storage, i32, read_write> = var @binding_point(0, 1)
}

%tint_symbol = @compute @workgroup_size(1, 1, 1) func():void {
  $B2: {
    %4:ptr<storage, f32, read> = access %sb, 0u
    %5:f32 = load %4
    %scalar_f32:f32 = let %5
    %7:ptr<storage, i32, read> = access %sb, 1u
    %8:i32 = load %7
    %scalar_i32:i32 = let %8
    %10:ptr<storage, u32, read> = access %sb, 2u
    %11:u32 = load %10
    %scalar_u32:u32 = let %11
    %13:ptr<storage, vec2<f32>, read> = access %sb, 3u
    %14:vec2<f32> = load %13
    %vec2_f32:vec2<f32> = let %14
    %16:ptr<storage, vec2<i32>, read> = access %sb, 4u
    %17:vec2<i32> = load %16
    %vec2_i32:vec2<i32> = let %17
    %19:ptr<storage, vec2<u32>, read> = access %sb, 5u
    %20:vec2<u32> = load %19
    %vec2_u32:vec2<u32> = let %20
    %22:ptr<storage, vec3<f32>, read> = access %sb, 6u
    %23:vec3<f32> = load %22
    %vec3_f32:vec3<f32> = let %23
    %25:ptr<storage, vec3<i32>, read> = access %sb, 7u
    %26:vec3<i32> = load %25
    %vec3_i32:vec3<i32> = let %26
    %28:ptr<storage, vec3<u32>, read> = access %sb, 8u
    %29:vec3<u32> = load %28
    %vec3_u32:vec3<u32> = let %29
    %31:ptr<storage, vec4<f32>, read> = access %sb, 9u
    %32:vec4<f32> = load %31
    %vec4_f32:vec4<f32> = let %32
    %34:ptr<storage, vec4<i32>, read> = access %sb, 10u
    %35:vec4<i32> = load %34
    %vec4_i32:vec4<i32> = let %35
    %37:ptr<storage, vec4<u32>, read> = access %sb, 11u
    %38:vec4<u32> = load %37
    %vec4_u32:vec4<u32> = let %38
    %40:ptr<storage, mat2x2<f32>, read> = access %sb, 12u
    %41:mat2x2<f32> = load %40
    %mat2x2_f32:mat2x2<f32> = let %41
    %43:ptr<storage, mat2x3<f32>, read> = access %sb, 13u
    %44:mat2x3<f32> = load %43
    %mat2x3_f32:mat2x3<f32> = let %44
    %46:ptr<storage, mat2x4<f32>, read> = access %sb, 14u
    %47:mat2x4<f32> = load %46
    %mat2x4_f32:mat2x4<f32> = let %47
    %49:ptr<storage, mat3x2<f32>, read> = access %sb, 15u
    %50:mat3x2<f32> = load %49
    %mat3x2_f32:mat3x2<f32> = let %50
    %52:ptr<storage, mat3x3<f32>, read> = access %sb, 16u
    %53:mat3x3<f32> = load %52
    %mat3x3_f32:mat3x3<f32> = let %53
    %55:ptr<storage, mat3x4<f32>, read> = access %sb, 17u
    %56:mat3x4<f32> = load %55
    %mat3x4_f32:mat3x4<f32> = let %56
    %58:ptr<storage, mat4x2<f32>, read> = access %sb, 18u
    %59:mat4x2<f32> = load %58
    %mat4x2_f32:mat4x2<f32> = let %59
    %61:ptr<storage, mat4x3<f32>, read> = access %sb, 19u
    %62:mat4x3<f32> = load %61
    %mat4x3_f32:mat4x3<f32> = let %62
    %64:ptr<storage, mat4x4<f32>, read> = access %sb, 20u
    %65:mat4x4<f32> = load %64
    %mat4x4_f32:mat4x4<f32> = let %65
    %67:ptr<storage, array<vec3<f32>, 2>, read> = access %sb, 21u
    %68:array<vec3<f32>, 2> = load %67
    %arr2_vec3_f32:array<vec3<f32>, 2> = let %68
    %70:ptr<storage, Inner, read> = access %sb, 22u
    %71:Inner = load %70
    %struct_inner:Inner = let %71
    %73:ptr<storage, array<Inner, 4>, read> = access %sb, 23u
    %74:array<Inner, 4> = load %73
    %array_struct_inner:array<Inner, 4> = let %74
    %76:i32 = call %tint_f32_to_i32, %scalar_f32
    %78:i32 = add %76, %scalar_i32
    %79:i32 = let %78
    %80:i32 = convert %scalar_u32
    %81:i32 = add %79, %80
    %82:i32 = let %81
    %83:f32 = access %vec2_f32, 0u
    %84:i32 = call %tint_f32_to_i32, %83
    %85:i32 = add %82, %84
    %86:i32 = access %vec2_i32, 0u
    %87:i32 = add %85, %86
    %88:i32 = let %87
    %89:u32 = access %vec2_u32, 0u
    %90:i32 = convert %89
    %91:i32 = add %88, %90
    %92:i32 = let %91
    %93:f32 = access %vec3_f32, 1u
    %94:i32 = call %tint_f32_to_i32, %93
    %95:i32 = add %92, %94
    %96:i32 = access %vec3_i32, 1u
    %97:i32 = add %95, %96
    %98:i32 = let %97
    %99:u32 = access %vec3_u32, 1u
    %100:i32 = convert %99
    %101:i32 = add %98, %100
    %102:i32 = let %101
    %103:f32 = access %vec4_f32, 2u
    %104:i32 = call %tint_f32_to_i32, %103
    %105:i32 = add %102, %104
    %106:i32 = access %vec4_i32, 2u
    %107:i32 = add %105, %106
    %108:i32 = let %107
    %109:u32 = access %vec4_u32, 2u
    %110:i32 = convert %109
    %111:i32 = add %108, %110
    %112:i32 = let %111
    %113:f32 = access %mat2x2_f32, 0i, 0u
    %114:i32 = call %tint_f32_to_i32, %113
    %115:i32 = add %112, %114
    %116:i32 = let %115
    %117:f32 = access %mat2x3_f32, 0i, 0u
    %118:i32 = call %tint_f32_to_i32, %117
    %119:i32 = add %116, %118
    %120:i32 = let %119
    %121:f32 = access %mat2x4_f32, 0i, 0u
    %122:i32 = call %tint_f32_to_i32, %121
    %123:i32 = add %120, %122
    %124:i32 = let %123
    %125:f32 = access %mat3x2_f32, 0i, 0u
    %126:i32 = call %tint_f32_to_i32, %125
    %127:i32 = add %124, %126
    %128:i32 = let %127
    %129:f32 = access %mat3x3_f32, 0i, 0u
    %130:i32 = call %tint_f32_to_i32, %129
    %131:i32 = add %128, %130
    %132:i32 = let %131
    %133:f32 = access %mat3x4_f32, 0i, 0u
    %134:i32 = call %tint_f32_to_i32, %133
    %135:i32 = add %132, %134
    %136:i32 = let %135
    %137:f32 = access %mat4x2_f32, 0i, 0u
    %138:i32 = call %tint_f32_to_i32, %137
    %139:i32 = add %136, %138
    %140:i32 = let %139
    %141:f32 = access %mat4x3_f32, 0i, 0u
    %142:i32 = call %tint_f32_to_i32, %141
    %143:i32 = add %140, %142
    %144:i32 = let %143
    %145:f32 = access %mat4x4_f32, 0i, 0u
    %146:i32 = call %tint_f32_to_i32, %145
    %147:i32 = add %144, %146
    %148:i32 = let %147
    %149:f32 = access %arr2_vec3_f32, 0i, 0u
    %150:i32 = call %tint_f32_to_i32, %149
    %151:i32 = add %148, %150
    %152:i32 = access %struct_inner, 0u
    %153:i32 = add %151, %152
    %154:i32 = access %array_struct_inner, 0i, 0u
    %155:i32 = add %153, %154
    store %s, %155
    ret
  }
}
%tint_f32_to_i32 = func(%value:f32):i32 {
  $B3: {
    %157:i32 = convert %value
    %158:bool = gte %value, -2147483648.0f
    %159:i32 = select -2147483648i, %157, %158
    %160:bool = lte %value, 2147483520.0f
    %161:i32 = select 2147483647i, %159, %160
    ret %161
  }
}

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