| Index: src/IceCfg.cpp
|
| diff --git a/src/IceCfg.cpp b/src/IceCfg.cpp
|
| index 1965fe2d5a82fffac65a1ac22d46cb640a10c774..524216cbadd637060c48ca483a53739fb898ffa9 100644
|
| --- a/src/IceCfg.cpp
|
| +++ b/src/IceCfg.cpp
|
| @@ -1006,11 +1006,6 @@ void Cfg::emitTextHeader(GlobalString Name, GlobalContext *Ctx,
|
| Str << Name << ":\n";
|
| }
|
|
|
| -void Cfg::deleteJumpTableInsts() {
|
| - for (InstJumpTable *JumpTable : JumpTables)
|
| - JumpTable->setDeleted();
|
| -}
|
| -
|
| void Cfg::emitJumpTables() {
|
| switch (Ctx->getFlags().getOutFileType()) {
|
| case FT_Elf:
|
| @@ -1018,14 +1013,7 @@ void Cfg::emitJumpTables() {
|
| // The emission needs to be delayed until the after the text section so
|
| // save the offsets in the global context.
|
| for (const InstJumpTable *JumpTable : JumpTables) {
|
| - SizeT NumTargets = JumpTable->getNumTargets();
|
| - JumpTableData::TargetList TargetList;
|
| - for (SizeT I = 0; I < NumTargets; ++I) {
|
| - SizeT Index = JumpTable->getTarget(I)->getIndex();
|
| - TargetList.emplace_back(
|
| - getAssembler()->getCfgNodeLabel(Index)->getPosition());
|
| - }
|
| - Ctx->addJumpTable(FunctionName, JumpTable->getId(), TargetList);
|
| + Ctx->addJumpTableData(JumpTable->toJumpTableData(getAssembler()));
|
| }
|
| } break;
|
| case FT_Asm: {
|
| @@ -1052,7 +1040,6 @@ void Cfg::emit() {
|
| const bool NeedSandboxing = Ctx->getFlags().getUseSandboxing();
|
|
|
| emitTextHeader(FunctionName, Ctx, Asm);
|
| - deleteJumpTableInsts();
|
| if (Ctx->getFlags().getDecorateAsm()) {
|
| for (Variable *Var : getVariables()) {
|
| if (Var->getStackOffset() && !Var->isRematerializable()) {
|
| @@ -1076,7 +1063,6 @@ void Cfg::emitIAS() {
|
| TimerMarker T(TimerStack::TT_emitAsm, this);
|
| // The emitIAS() routines emit into the internal assembler buffer, so there's
|
| // no need to lock the streams.
|
| - deleteJumpTableInsts();
|
| const bool NeedSandboxing = Ctx->getFlags().getUseSandboxing();
|
| for (CfgNode *Node : Nodes) {
|
| if (NeedSandboxing && Node->needsAlignment())
|
|
|