Fix race condition in jump table list creation
BUG=
R=stichnot@chromium.org
Review URL: https://codereview.chromium.org/1460003003 .
diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp
index 65844b9..3fe37f3 100644
--- a/src/IceCfg.cpp
+++ b/src/IceCfg.cpp
@@ -966,12 +966,13 @@
IceString MangledName = Ctx->mangleName(getFunctionName());
for (const InstJumpTable *JumpTable : JumpTables) {
SizeT NumTargets = JumpTable->getNumTargets();
- JumpTableData &JT =
- Ctx->addJumpTable(MangledName, JumpTable->getId(), NumTargets);
+ JumpTableData::TargetList TargetList;
for (SizeT I = 0; I < NumTargets; ++I) {
SizeT Index = JumpTable->getTarget(I)->getIndex();
- JT.pushTarget(getAssembler()->getCfgNodeLabel(Index)->getPosition());
+ TargetList.emplace_back(
+ getAssembler()->getCfgNodeLabel(Index)->getPosition());
}
+ Ctx->addJumpTable(MangledName, JumpTable->getId(), TargetList);
}
} break;
case FT_Asm: {