summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/X86FrameLowering.cpp
diff options
context:
space:
mode:
authorJoseph Tremoulet <jotrem@microsoft.com>2015-10-23 15:06:05 +0000
committerJoseph Tremoulet <jotrem@microsoft.com>2015-10-23 15:06:05 +0000
commit3d0fbf1d74fd1a8f55d1313e9bfc216e7ad9f02b (patch)
treec3998aa9dc4e4c81b543fbf5b7e27f2d782b58a6 /llvm/lib/Target/X86/X86FrameLowering.cpp
parent05a896a8d1745c260ac21577c3e12ddee4ea1923 (diff)
downloadbcm5719-llvm-3d0fbf1d74fd1a8f55d1313e9bfc216e7ad9f02b.tar.gz
bcm5719-llvm-3d0fbf1d74fd1a8f55d1313e9bfc216e7ad9f02b.zip
[CodeGen] Mark setjmp/catchret MBBs address-taken
Summary: This ensures that BranchFolding (and similar) won't remove these blocks. Also allow AsmPrinter::EmitBasicBlockStart to process MBBs which are address-taken but do not have BBs that are address-taken, since otherwise its call to getAddrLabelSymbolTableToEmit would fail an assertion on such blocks. I audited the other callers of getAddrLabelSymbolTableToEmit (and getAddrLabelSymbol); they all have BBs known to be address-taken except for the call through getAddrLabelSymbol from WinException::create32bitRef; that call is actually now unreachable, so I've removed it and updated the signature of create32bitRef. This fixes PR25168. Reviewers: majnemer, andrew.w.kaylor, rnk Subscribers: pgavlin, llvm-commits Differential Revision: http://reviews.llvm.org/D13774 llvm-svn: 251113
Diffstat (limited to 'llvm/lib/Target/X86/X86FrameLowering.cpp')
-rw-r--r--llvm/lib/Target/X86/X86FrameLowering.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86FrameLowering.cpp b/llvm/lib/Target/X86/X86FrameLowering.cpp
index a1a18fe6bd2..95cb76094ec 100644
--- a/llvm/lib/Target/X86/X86FrameLowering.cpp
+++ b/llvm/lib/Target/X86/X86FrameLowering.cpp
@@ -1178,6 +1178,9 @@ void X86FrameLowering::emitEpilogue(MachineFunction &MF,
.addReg(ReturnReg)
.addMBB(RestoreMBB);
}
+ // Record that we've taken the address of RestoreMBB and no longer just
+ // reference it in a terminator.
+ RestoreMBB->setHasAddressTaken();
}
if (MBBI != MBB.end())
OpenPOWER on IntegriCloud