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
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 @@
// 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();