summaryrefslogtreecommitdiff
path: root/lib/CodeGen/DwarfEHPrepare.cpp
diff options
context:
space:
mode:
authorGabor Greif <ggreif@gmail.com>2010-04-16 15:33:14 +0000
committerGabor Greif <ggreif@gmail.com>2010-04-16 15:33:14 +0000
commit4ec2258ffb495d7ce00177e447740ef1123a27db (patch)
tree491894533b2bbca44875d321e209e1dc2e27abb3 /lib/CodeGen/DwarfEHPrepare.cpp
parent52d55bd224ac08dfef959527ca8257f82a80dbb0 (diff)
downloadllvm-4ec2258ffb495d7ce00177e447740ef1123a27db.tar.gz
llvm-4ec2258ffb495d7ce00177e447740ef1123a27db.tar.bz2
llvm-4ec2258ffb495d7ce00177e447740ef1123a27db.tar.xz
reapply r101434
with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101465 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/DwarfEHPrepare.cpp')
-rw-r--r--lib/CodeGen/DwarfEHPrepare.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/lib/CodeGen/DwarfEHPrepare.cpp b/lib/CodeGen/DwarfEHPrepare.cpp
index d1261a3565..df337436af 100644
--- a/lib/CodeGen/DwarfEHPrepare.cpp
+++ b/lib/CodeGen/DwarfEHPrepare.cpp
@@ -198,7 +198,7 @@ FindAllCleanupSelectors(SmallPtrSet<IntrinsicInst*, 32> &Sels) {
bool IsCleanUp = (NumOps == 3);
if (!IsCleanUp)
- if (ConstantInt *CI = dyn_cast<ConstantInt>(SI->getOperand(3)))
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(SI->getOperand(2)))
IsCleanUp = (CI->getZExtValue() == 0);
if (IsCleanUp)
@@ -237,7 +237,7 @@ bool DwarfEHPrepare::CleanupSelectors() {
if (!Sel || Sel->getParent()->getParent() != F) continue;
// Index of the ".llvm.eh.catch.all.value" variable.
- unsigned OpIdx = Sel->getNumOperands() - 1;
+ unsigned OpIdx = Sel->getNumOperands() - 2;
GlobalVariable *GV = dyn_cast<GlobalVariable>(Sel->getOperand(OpIdx));
if (GV != EHCatchAllValue) continue;
Sel->setOperand(OpIdx, EHCatchAllValue->getInitializer());
@@ -366,7 +366,7 @@ bool DwarfEHPrepare::HandleURoRInvokes() {
bool IsCleanUp = (NumOps == 3);
if (!IsCleanUp)
- if (ConstantInt *CI = dyn_cast<ConstantInt>(II->getOperand(3)))
+ if (ConstantInt *CI = dyn_cast<ConstantInt>(II->getOperand(2)))
IsCleanUp = (CI->getZExtValue() == 0);
if (IsCleanUp)
@@ -390,8 +390,8 @@ bool DwarfEHPrepare::HandleURoRInvokes() {
// Use the exception object pointer and the personality function
// from the original selector.
- Args.push_back(II->getOperand(1)); // Exception object pointer.
- Args.push_back(II->getOperand(2)); // Personality function.
+ Args.push_back(II->getOperand(0)); // Exception object pointer.
+ Args.push_back(II->getOperand(1)); // Personality function.
Args.push_back(EHCatchAllValue->getInitializer()); // Catch-all indicator.
CallInst *NewSelector =