SKIP: FAILED

<dawn>/src/tint/lang/msl/writer/printer/printer.cc:355 internal compiler error: Tables = struct @align(4) {
  edges:array<u32, 256> @offset(0)
  tris:array<i32, 4096> @offset(1024)
}

IsosurfaceVolume = struct @align(16) {
  min:vec3<f32> @offset(0)
  max:vec3<f32> @offset(16)
  step:vec3<f32> @offset(32)
  size:vec3<u32> @offset(48)
  threshold:f32 @offset(60)
  values:array<f32> @offset(64)
}

PositionBuffer = struct @align(4) {
  values:array<f32> @offset(0)
}

NormalBuffer = struct @align(4) {
  values:array<f32> @offset(0)
}

IndexBuffer = struct @align(4) {
  tris:array<u32> @offset(0)
}

DrawIndirectArgs = struct @align(4) {
  vc:u32 @offset(0)
  vertexCount:atomic<u32> @offset(4)
  firstVertex:u32 @offset(8)
  firstInstance:u32 @offset(12)
  indexCount:atomic<u32> @offset(16)
  indexedInstanceCount:u32 @offset(20)
  indexedFirstIndex:u32 @offset(24)
  indexedBaseVertex:u32 @offset(28)
  indexedFirstInstance:u32 @offset(32)
}

%b1 = block {  # root
  %tables:ptr<storage, Tables, read> = var @binding_point(0, 0)
  %volume:ptr<storage, IsosurfaceVolume, read_write> = var @binding_point(0, 1)
  %positionsOut:ptr<storage, PositionBuffer, read_write> = var @binding_point(0, 2)
  %normalsOut:ptr<storage, NormalBuffer, read_write> = var @binding_point(0, 3)
  %indicesOut:ptr<storage, IndexBuffer, read_write> = var @binding_point(0, 4)
  %drawOut:ptr<storage, DrawIndirectArgs, read_write> = var @binding_point(0, 5)
  %positions:ptr<private, array<vec3<f32>, 12>, read_write> = var
  %normals:ptr<private, array<vec3<f32>, 12>, read_write> = var
  %indices:ptr<private, array<u32, 12>, read_write> = var
  %cubeVerts:ptr<private, u32, read_write> = var, 0u
}

%valueAt = func(%index:vec3<u32>):f32 -> %b2 {
  %b2 = block {
    %13:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %14:vec3<u32> = load %13
    %15:vec3<bool> = gte %index, %14
    %16:bool = any %15
    if %16 [t: %b3] {  # if_1
      %b3 = block {  # true
        ret 0.0f
      }
    }
    %17:u32 = access %index, 0u
    %18:u32 = access %index, 1u
    %19:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %20:u32 = load_vector_element %19, 0u
    %21:u32 = mul %18, %20
    %22:u32 = add %17, %21
    %23:u32 = access %index, 2u
    %24:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %25:u32 = load_vector_element %24, 0u
    %26:u32 = mul %23, %25
    %27:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %28:u32 = load_vector_element %27, 1u
    %29:u32 = mul %26, %28
    %valueIndex:u32 = add %22, %29
    %31:ptr<storage, f32, read_write> = access %volume, 5u, %valueIndex
    %32:f32 = load %31
    ret %32
  }
}
%positionAt = func(%index_1:vec3<u32>):vec3<f32> -> %b4 {  # %index_1: 'index'
  %b4 = block {
    %35:ptr<storage, vec3<f32>, read_write> = access %volume, 0u
    %36:vec3<f32> = load %35
    %37:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
    %38:vec3<f32> = load %37
    %39:vec3<u32> = swizzle %index_1, xyz
    %40:vec3<f32> = convert %39
    %41:vec3<f32> = mul %38, %40
    %42:vec3<f32> = add %36, %41
    ret %42
  }
}
%normalAt = func(%index_2:vec3<u32>):vec3<f32> -> %b5 {  # %index_2: 'index'
  %b5 = block {
    %45:vec3<u32> = sub %index_2, vec3<u32>(1u, 0u, 0u)
    %46:f32 = call %valueAt, %45
    %47:vec3<u32> = add %index_2, vec3<u32>(1u, 0u, 0u)
    %48:f32 = call %valueAt, %47
    %49:f32 = sub %46, %48
    %50:vec3<u32> = sub %index_2, vec3<u32>(0u, 1u, 0u)
    %51:f32 = call %valueAt, %50
    %52:vec3<u32> = add %index_2, vec3<u32>(0u, 1u, 0u)
    %53:f32 = call %valueAt, %52
    %54:f32 = sub %51, %53
    %55:vec3<u32> = sub %index_2, vec3<u32>(0u, 0u, 1u)
    %56:f32 = call %valueAt, %55
    %57:vec3<u32> = add %index_2, vec3<u32>(0u, 0u, 1u)
    %58:f32 = call %valueAt, %57
    %59:f32 = sub %56, %58
    %60:vec3<f32> = construct %49, %54, %59
    ret %60
  }
}
%interpX = func(%index_3:u32, %i:vec3<u32>, %va:f32, %vb:f32):void -> %b6 {  # %index_3: 'index'
  %b6 = block {
    %66:ptr<storage, f32, read_write> = access %volume, 4u
    %67:f32 = load %66
    %68:f32 = sub %67, %va
    %69:f32 = sub %vb, %va
    %mu:f32 = div %68, %69
    %71:u32 = load %cubeVerts
    %72:ptr<private, vec3<f32>, read_write> = access %positions, %71
    %73:vec3<f32> = call %positionAt, %i
    %74:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
    %75:f32 = load_vector_element %74, 0u
    %76:f32 = mul %75, %mu
    %77:vec3<f32> = construct %76, 0.0f, 0.0f
    %78:vec3<f32> = add %73, %77
    store %72, %78
    %na:vec3<f32> = call %normalAt, %i
    %80:vec3<u32> = add %i, vec3<u32>(1u, 0u, 0u)
    %nb:vec3<f32> = call %normalAt, %80
    %82:u32 = load %cubeVerts
    %83:ptr<private, vec3<f32>, read_write> = access %normals, %82
    %84:vec3<f32> = construct %mu, %mu, %mu
    %85:vec3<f32> = mix %na, %nb, %84
    store %83, %85
    %86:ptr<private, u32, read_write> = access %indices, %index_3
    %87:u32 = load %cubeVerts
    store %86, %87
    %88:u32 = load %cubeVerts
    %89:u32 = add %88, 1u
    store %cubeVerts, %89
    ret
  }
}
%interpY = func(%index_4:u32, %i_1:vec3<u32>, %va_1:f32, %vb_1:f32):void -> %b7 {  # %index_4: 'index', %i_1: 'i', %va_1: 'va', %vb_1: 'vb'
  %b7 = block {
    %95:ptr<storage, f32, read_write> = access %volume, 4u
    %96:f32 = load %95
    %97:f32 = sub %96, %va_1
    %98:f32 = sub %vb_1, %va_1
    %mu_1:f32 = div %97, %98  # %mu_1: 'mu'
    %100:u32 = load %cubeVerts
    %101:ptr<private, vec3<f32>, read_write> = access %positions, %100
    %102:vec3<f32> = call %positionAt, %i_1
    %103:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
    %104:f32 = load_vector_element %103, 1u
    %105:f32 = mul %104, %mu_1
    %106:vec3<f32> = construct 0.0f, %105, 0.0f
    %107:vec3<f32> = add %102, %106
    store %101, %107
    %na_1:vec3<f32> = call %normalAt, %i_1  # %na_1: 'na'
    %109:vec3<u32> = add %i_1, vec3<u32>(0u, 1u, 0u)
    %nb_1:vec3<f32> = call %normalAt, %109  # %nb_1: 'nb'
    %111:u32 = load %cubeVerts
    %112:ptr<private, vec3<f32>, read_write> = access %normals, %111
    %113:vec3<f32> = construct %mu_1, %mu_1, %mu_1
    %114:vec3<f32> = mix %na_1, %nb_1, %113
    store %112, %114
    %115:ptr<private, u32, read_write> = access %indices, %index_4
    %116:u32 = load %cubeVerts
    store %115, %116
    %117:u32 = load %cubeVerts
    %118:u32 = add %117, 1u
    store %cubeVerts, %118
    ret
  }
}
%interpZ = func(%index_5:u32, %i_2:vec3<u32>, %va_2:f32, %vb_2:f32):void -> %b8 {  # %index_5: 'index', %i_2: 'i', %va_2: 'va', %vb_2: 'vb'
  %b8 = block {
    %124:ptr<storage, f32, read_write> = access %volume, 4u
    %125:f32 = load %124
    %126:f32 = sub %125, %va_2
    %127:f32 = sub %vb_2, %va_2
    %mu_2:f32 = div %126, %127  # %mu_2: 'mu'
    %129:u32 = load %cubeVerts
    %130:ptr<private, vec3<f32>, read_write> = access %positions, %129
    %131:vec3<f32> = call %positionAt, %i_2
    %132:ptr<storage, vec3<f32>, read_write> = access %volume, 2u
    %133:f32 = load_vector_element %132, 2u
    %134:f32 = mul %133, %mu_2
    %135:vec3<f32> = construct 0.0f, 0.0f, %134
    %136:vec3<f32> = add %131, %135
    store %130, %136
    %na_2:vec3<f32> = call %normalAt, %i_2  # %na_2: 'na'
    %138:vec3<u32> = add %i_2, vec3<u32>(0u, 0u, 1u)
    %nb_2:vec3<f32> = call %normalAt, %138  # %nb_2: 'nb'
    %140:u32 = load %cubeVerts
    %141:ptr<private, vec3<f32>, read_write> = access %normals, %140
    %142:vec3<f32> = construct %mu_2, %mu_2, %mu_2
    %143:vec3<f32> = mix %na_2, %nb_2, %142
    store %141, %143
    %144:ptr<private, u32, read_write> = access %indices, %index_5
    %145:u32 = load %cubeVerts
    store %144, %145
    %146:u32 = load %cubeVerts
    %147:u32 = add %146, 1u
    store %cubeVerts, %147
    ret
  }
}
%computeMain = @compute @workgroup_size(4, 4, 4) func(%global_id:vec3<u32> [@global_invocation_id]):void -> %b9 {
  %b9 = block {
    %i0:vec3<u32> = let %global_id
    %i1:vec3<u32> = add %global_id, vec3<u32>(1u, 0u, 0u)
    %i2:vec3<u32> = add %global_id, vec3<u32>(1u, 1u, 0u)
    %i3:vec3<u32> = add %global_id, vec3<u32>(0u, 1u, 0u)
    %i4:vec3<u32> = add %global_id, vec3<u32>(0u, 0u, 1u)
    %i5:vec3<u32> = add %global_id, vec3<u32>(1u, 0u, 1u)
    %i6:vec3<u32> = add %global_id, vec3<u32>(1u)
    %i7:vec3<u32> = add %global_id, vec3<u32>(0u, 1u, 1u)
    %v0:f32 = call %valueAt, %i0
    %v1:f32 = call %valueAt, %i1
    %v2:f32 = call %valueAt, %i2
    %v3:f32 = call %valueAt, %i3
    %v4:f32 = call %valueAt, %i4
    %v5:f32 = call %valueAt, %i5
    %v6:f32 = call %valueAt, %i6
    %v7:f32 = call %valueAt, %i7
    %cubeIndex:ptr<function, u32, read_write> = var, 0u
    %167:ptr<storage, f32, read_write> = access %volume, 4u
    %168:f32 = load %167
    %169:bool = lt %v0, %168
    if %169 [t: %b10] {  # if_2
      %b10 = block {  # true
        %170:u32 = load %cubeIndex
        %171:u32 = or %170, 1u
        store %cubeIndex, %171
        exit_if  # if_2
      }
    }
    %172:ptr<storage, f32, read_write> = access %volume, 4u
    %173:f32 = load %172
    %174:bool = lt %v1, %173
    if %174 [t: %b11] {  # if_3
      %b11 = block {  # true
        %175:u32 = load %cubeIndex
        %176:u32 = or %175, 2u
        store %cubeIndex, %176
        exit_if  # if_3
      }
    }
    %177:ptr<storage, f32, read_write> = access %volume, 4u
    %178:f32 = load %177
    %179:bool = lt %v2, %178
    if %179 [t: %b12] {  # if_4
      %b12 = block {  # true
        %180:u32 = load %cubeIndex
        %181:u32 = or %180, 4u
        store %cubeIndex, %181
        exit_if  # if_4
      }
    }
    %182:ptr<storage, f32, read_write> = access %volume, 4u
    %183:f32 = load %182
    %184:bool = lt %v3, %183
    if %184 [t: %b13] {  # if_5
      %b13 = block {  # true
        %185:u32 = load %cubeIndex
        %186:u32 = or %185, 8u
        store %cubeIndex, %186
        exit_if  # if_5
      }
    }
    %187:ptr<storage, f32, read_write> = access %volume, 4u
    %188:f32 = load %187
    %189:bool = lt %v4, %188
    if %189 [t: %b14] {  # if_6
      %b14 = block {  # true
        %190:u32 = load %cubeIndex
        %191:u32 = or %190, 16u
        store %cubeIndex, %191
        exit_if  # if_6
      }
    }
    %192:ptr<storage, f32, read_write> = access %volume, 4u
    %193:f32 = load %192
    %194:bool = lt %v5, %193
    if %194 [t: %b15] {  # if_7
      %b15 = block {  # true
        %195:u32 = load %cubeIndex
        %196:u32 = or %195, 32u
        store %cubeIndex, %196
        exit_if  # if_7
      }
    }
    %197:ptr<storage, f32, read_write> = access %volume, 4u
    %198:f32 = load %197
    %199:bool = lt %v6, %198
    if %199 [t: %b16] {  # if_8
      %b16 = block {  # true
        %200:u32 = load %cubeIndex
        %201:u32 = or %200, 64u
        store %cubeIndex, %201
        exit_if  # if_8
      }
    }
    %202:ptr<storage, f32, read_write> = access %volume, 4u
    %203:f32 = load %202
    %204:bool = lt %v7, %203
    if %204 [t: %b17] {  # if_9
      %b17 = block {  # true
        %205:u32 = load %cubeIndex
        %206:u32 = or %205, 128u
        store %cubeIndex, %206
        exit_if  # if_9
      }
    }
    %207:u32 = load %cubeIndex
    %208:ptr<storage, u32, read> = access %tables, 0u, %207
    %edges:u32 = load %208
    %210:u32 = and %edges, 1u
    %211:bool = neq %210, 0u
    if %211 [t: %b18] {  # if_10
      %b18 = block {  # true
        %212:void = call %interpX, 0u, %i0, %v0, %v1
        exit_if  # if_10
      }
    }
    %213:u32 = and %edges, 2u
    %214:bool = neq %213, 0u
    if %214 [t: %b19] {  # if_11
      %b19 = block {  # true
        %215:void = call %interpY, 1u, %i1, %v1, %v2
        exit_if  # if_11
      }
    }
    %216:u32 = and %edges, 4u
    %217:bool = neq %216, 0u
    if %217 [t: %b20] {  # if_12
      %b20 = block {  # true
        %218:void = call %interpX, 2u, %i3, %v3, %v2
        exit_if  # if_12
      }
    }
    %219:u32 = and %edges, 8u
    %220:bool = neq %219, 0u
    if %220 [t: %b21] {  # if_13
      %b21 = block {  # true
        %221:void = call %interpY, 3u, %i0, %v0, %v3
        exit_if  # if_13
      }
    }
    %222:u32 = and %edges, 16u
    %223:bool = neq %222, 0u
    if %223 [t: %b22] {  # if_14
      %b22 = block {  # true
        %224:void = call %interpX, 4u, %i4, %v4, %v5
        exit_if  # if_14
      }
    }
    %225:u32 = and %edges, 32u
    %226:bool = neq %225, 0u
    if %226 [t: %b23] {  # if_15
      %b23 = block {  # true
        %227:void = call %interpY, 5u, %i5, %v5, %v6
        exit_if  # if_15
      }
    }
    %228:u32 = and %edges, 64u
    %229:bool = neq %228, 0u
    if %229 [t: %b24] {  # if_16
      %b24 = block {  # true
        %230:void = call %interpX, 6u, %i7, %v7, %v6
        exit_if  # if_16
      }
    }
    %231:u32 = and %edges, 128u
    %232:bool = neq %231, 0u
    if %232 [t: %b25] {  # if_17
      %b25 = block {  # true
        %233:void = call %interpY, 7u, %i4, %v4, %v7
        exit_if  # if_17
      }
    }
    %234:u32 = and %edges, 256u
    %235:bool = neq %234, 0u
    if %235 [t: %b26] {  # if_18
      %b26 = block {  # true
        %236:void = call %interpZ, 8u, %i0, %v0, %v4
        exit_if  # if_18
      }
    }
    %237:u32 = and %edges, 512u
    %238:bool = neq %237, 0u
    if %238 [t: %b27] {  # if_19
      %b27 = block {  # true
        %239:void = call %interpZ, 9u, %i1, %v1, %v5
        exit_if  # if_19
      }
    }
    %240:u32 = and %edges, 1024u
    %241:bool = neq %240, 0u
    if %241 [t: %b28] {  # if_20
      %b28 = block {  # true
        %242:void = call %interpZ, 10u, %i2, %v2, %v6
        exit_if  # if_20
      }
    }
    %243:u32 = and %edges, 2048u
    %244:bool = neq %243, 0u
    if %244 [t: %b29] {  # if_21
      %b29 = block {  # true
        %245:void = call %interpZ, 11u, %i3, %v3, %v7
        exit_if  # if_21
      }
    }
    %246:u32 = load %cubeIndex
    %247:u32 = shiftl %246, 4u
    %triTableOffset:u32 = add %247, 1u
    %249:u32 = sub %triTableOffset, 1u
    %250:ptr<storage, i32, read> = access %tables, 1u, %249
    %251:i32 = load %250
    %indexCount:u32 = convert %251
    %253:ptr<storage, atomic<u32>, read_write> = access %drawOut, 1u
    %254:u32 = load %cubeVerts
    %255:u32 = atomicAdd %253, %254
    %firstVertex:ptr<function, u32, read_write> = var, %255
    %257:u32 = access %global_id, 0u
    %258:u32 = access %global_id, 1u
    %259:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %260:u32 = load_vector_element %259, 0u
    %261:u32 = mul %258, %260
    %262:u32 = add %257, %261
    %263:u32 = access %global_id, 2u
    %264:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %265:u32 = load_vector_element %264, 0u
    %266:u32 = mul %263, %265
    %267:ptr<storage, vec3<u32>, read_write> = access %volume, 3u
    %268:u32 = load_vector_element %267, 1u
    %269:u32 = mul %266, %268
    %bufferOffset:u32 = add %262, %269
    %firstIndex:u32 = mul %bufferOffset, 15u
    loop [i: %b30, b: %b31, c: %b32] {  # loop_1
      %b30 = block {  # initializer
        %i_3:ptr<function, u32, read_write> = var, 0u  # %i_3: 'i'
        next_iteration %b31
      }
      %b31 = block {  # body
        %273:u32 = load %i_3
        %274:u32 = load %cubeVerts
        %275:bool = lt %273, %274
        if %275 [t: %b33, f: %b34] {  # if_22
          %b33 = block {  # true
            exit_if  # if_22
          }
          %b34 = block {  # false
            exit_loop  # loop_1
          }
        }
        %276:u32 = load %firstVertex
        %277:u32 = mul %276, 3u
        %278:u32 = load %i_3
        %279:u32 = mul %278, 3u
        %280:u32 = add %277, %279
        %281:ptr<storage, f32, read_write> = access %positionsOut, 0u, %280
        %282:u32 = load %i_3
        %283:ptr<private, vec3<f32>, read_write> = access %positions, %282
        %284:f32 = load_vector_element %283, 0u
        store %281, %284
        %285:u32 = load %firstVertex
        %286:u32 = mul %285, 3u
        %287:u32 = load %i_3
        %288:u32 = mul %287, 3u
        %289:u32 = add %286, %288
        %290:u32 = add %289, 1u
        %291:ptr<storage, f32, read_write> = access %positionsOut, 0u, %290
        %292:u32 = load %i_3
        %293:ptr<private, vec3<f32>, read_write> = access %positions, %292
        %294:f32 = load_vector_element %293, 1u
        store %291, %294
        %295:u32 = load %firstVertex
        %296:u32 = mul %295, 3u
        %297:u32 = load %i_3
        %298:u32 = mul %297, 3u
        %299:u32 = add %296, %298
        %300:u32 = add %299, 2u
        %301:ptr<storage, f32, read_write> = access %positionsOut, 0u, %300
        %302:u32 = load %i_3
        %303:ptr<private, vec3<f32>, read_write> = access %positions, %302
        %304:f32 = load_vector_element %303, 2u
        store %301, %304
        %305:u32 = load %firstVertex
        %306:u32 = mul %305, 3u
        %307:u32 = load %i_3
        %308:u32 = mul %307, 3u
        %309:u32 = add %306, %308
        %310:ptr<storage, f32, read_write> = access %normalsOut, 0u, %309
        %311:u32 = load %i_3
        %312:ptr<private, vec3<f32>, read_write> = access %normals, %311
        %313:f32 = load_vector_element %312, 0u
        store %310, %313
        %314:u32 = load %firstVertex
        %315:u32 = mul %314, 3u
        %316:u32 = load %i_3
        %317:u32 = mul %316, 3u
        %318:u32 = add %315, %317
        %319:u32 = add %318, 1u
        %320:ptr<storage, f32, read_write> = access %normalsOut, 0u, %319
        %321:u32 = load %i_3
        %322:ptr<private, vec3<f32>, read_write> = access %normals, %321
        %323:f32 = load_vector_element %322, 1u
        store %320, %323
        %324:u32 = load %firstVertex
        %325:u32 = mul %324, 3u
        %326:u32 = load %i_3
        %327:u32 = mul %326, 3u
        %328:u32 = add %325, %327
        %329:u32 = add %328, 2u
        %330:ptr<storage, f32, read_write> = access %normalsOut, 0u, %329
        %331:u32 = load %i_3
        %332:ptr<private, vec3<f32>, read_write> = access %normals, %331
        %333:f32 = load_vector_element %332, 2u
        store %330, %333
        continue %b32
      }
      %b32 = block {  # continuing
        %334:u32 = load %i_3
        %335:u32 = add %334, 1u
        store %i_3, %335
        next_iteration %b31
      }
    }
    loop [i: %b35, b: %b36, c: %b37] {  # loop_2
      %b35 = block {  # initializer
        %i_4:ptr<function, u32, read_write> = var, 0u  # %i_4: 'i'
        next_iteration %b36
      }
      %b36 = block {  # body
        %337:u32 = load %i_4
        %338:bool = lt %337, %indexCount
        if %338 [t: %b38, f: %b39] {  # if_23
          %b38 = block {  # true
            exit_if  # if_23
          }
          %b39 = block {  # false
            exit_loop  # loop_2
          }
        }
        %339:u32 = load %i_4
        %340:u32 = add %triTableOffset, %339
        %341:ptr<storage, i32, read> = access %tables, 1u, %340
        %index_6:i32 = load %341  # %index_6: 'index'
        %343:u32 = load %i_4
        %344:u32 = add %firstIndex, %343
        %345:ptr<storage, u32, read_write> = access %indicesOut, 0u, %344
        %346:u32 = load %firstVertex
        %347:ptr<private, u32, read_write> = access %indices, %index_6
        %348:u32 = load %347
        %349:u32 = add %346, %348
        store %345, %349
        continue %b37
      }
      %b37 = block {  # continuing
        %350:u32 = load %i_4
        %351:u32 = add %350, 1u
        store %i_4, %351
        next_iteration %b36
      }
    }
    loop [i: %b40, b: %b41, c: %b42] {  # loop_3
      %b40 = block {  # initializer
        %i_5:ptr<function, u32, read_write> = var, %indexCount  # %i_5: 'i'
        next_iteration %b41
      }
      %b41 = block {  # body
        %353:u32 = load %i_5
        %354:bool = lt %353, 15u
        if %354 [t: %b43, f: %b44] {  # if_24
          %b43 = block {  # true
            exit_if  # if_24
          }
          %b44 = block {  # false
            exit_loop  # loop_3
          }
        }
        %355:u32 = load %i_5
        %356:u32 = add %firstIndex, %355
        %357:ptr<storage, u32, read_write> = access %indicesOut, 0u, %356
        %358:u32 = load %firstVertex
        store %357, %358
        continue %b42
      }
      %b42 = block {  # continuing
        %359:u32 = load %i_5
        %360:u32 = add %359, 1u
        store %i_5, %360
        next_iteration %b41
      }
    }
    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.  *
********************************************************************
