aboutsummaryrefslogtreecommitdiffstats
path: root/lib/CodeGen/SelectionDAG
diff options
context:
space:
mode:
authorJim Grosbach <grosbach@apple.com>2010-01-21 00:43:30 +0000
committerJim Grosbach <grosbach@apple.com>2010-01-21 00:43:30 +0000
commitd0a0c382ea51d36dc7e5938291763da73b4262dc (patch)
tree7915691c3b9bc343921177c6faac70d7ea9b600e /lib/CodeGen/SelectionDAG
parentfd0b0288e2ee5ccf3f1d47090542710c67a77cf7 (diff)
downloadexternal_llvm-d0a0c382ea51d36dc7e5938291763da73b4262dc.zip
external_llvm-d0a0c382ea51d36dc7e5938291763da73b4262dc.tar.gz
external_llvm-d0a0c382ea51d36dc7e5938291763da73b4262dc.tar.bz2
Make sure that landing pad entries in the EH call site table are in the proper
order for SjLj style exception handling. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@94055 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SelectionDAG')
-rw-r--r--lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
index a3fb345..5b733a8 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
@@ -5049,6 +5049,12 @@ void SelectionDAGBuilder::LowerCallTo(CallSite CS, SDValue Callee,
// used to detect deletion of the invoke via the MachineModuleInfo.
BeginLabel = MMI->NextLabelID();
+ // Keep track of which landing pads go with which invokes. SjLj uses
+ // this to maintain the ordering of pads in the LSDA. Dwarf ignores it.
+ Function *F = LandingPad->getParent()->getFunction();
+ MMI->setCallSiteBeginLabel(BeginLabel,
+ F->getCallSiteNumber(CS.getInstruction()));
+
// Both PendingLoads and PendingExports must be flushed here;
// this call might not return.
(void)getRoot();