diff options
author | Gabor Greif <ggreif@gmail.com> | 2010-04-15 20:51:13 +0000 |
---|---|---|
committer | Gabor Greif <ggreif@gmail.com> | 2010-04-15 20:51:13 +0000 |
commit | 33ae80bff75a1f973b772e542c42fff92a3a8b07 (patch) | |
tree | e5c82a660f1f730d717d4a11cb0067ea9ea89772 /llvm/lib/CodeGen/DwarfEHPrepare.cpp | |
parent | 5b0a0629a3f0bb1f83a286274202e307e77cc9aa (diff) | |
download | bcm5719-llvm-33ae80bff75a1f973b772e542c42fff92a3a8b07.tar.gz bcm5719-llvm-33ae80bff75a1f973b772e542c42fff92a3a8b07.zip |
reapply r101364, which has been backed out in r101368
with a fix
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
llvm-svn: 101397
Diffstat (limited to 'llvm/lib/CodeGen/DwarfEHPrepare.cpp')
-rw-r--r-- | llvm/lib/CodeGen/DwarfEHPrepare.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/llvm/lib/CodeGen/DwarfEHPrepare.cpp b/llvm/lib/CodeGen/DwarfEHPrepare.cpp index d1261a3565b..df337436aff 100644 --- a/llvm/lib/CodeGen/DwarfEHPrepare.cpp +++ b/llvm/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 = |