diff options
| author | Bill Wendling <isanbard@gmail.com> | 2012-05-04 04:22:32 +0000 |
|---|---|---|
| committer | Bill Wendling <isanbard@gmail.com> | 2012-05-04 04:22:32 +0000 |
| commit | fa0ebcd1b02bbfe4cc49088078ae6820a3c02982 (patch) | |
| tree | 089a010a1381240e7b79455f9caedf5a06cb27a4 /llvm/lib/Transforms | |
| parent | 59063c0a3de8f591730cf4182c6f38d5c69d6657 (diff) | |
| download | bcm5719-llvm-fa0ebcd1b02bbfe4cc49088078ae6820a3c02982.tar.gz bcm5719-llvm-fa0ebcd1b02bbfe4cc49088078ae6820a3c02982.zip | |
Add 'landingpad' instructions to the list of instructions to ignore.
Also combine the code in the 'assert' statement.
llvm-svn: 156155
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/Reassociate.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/llvm/lib/Transforms/Scalar/Reassociate.cpp b/llvm/lib/Transforms/Scalar/Reassociate.cpp index 577a143e9a0..cc98ba0f21c 100644 --- a/llvm/lib/Transforms/Scalar/Reassociate.cpp +++ b/llvm/lib/Transforms/Scalar/Reassociate.cpp @@ -175,6 +175,7 @@ void Reassociate::RemoveDeadBinaryOp(Value *V) { static bool isUnmovableInstruction(Instruction *I) { if (I->getOpcode() == Instruction::PHI || + I->getOpcode() == Instruction::LandingPad || I->getOpcode() == Instruction::Alloca || I->getOpcode() == Instruction::Load || I->getOpcode() == Instruction::Invoke || @@ -272,13 +273,14 @@ static Instruction *LowerNegateToMultiply(Instruction *Neg, // linearize it as well. Besides that case, this does not recurse into A,B, or // C. void Reassociate::LinearizeExpr(BinaryOperator *I) { - BinaryOperator *LHS = cast<BinaryOperator>(I->getOperand(0)); - BinaryOperator *RHS = cast<BinaryOperator>(I->getOperand(1)); - assert(isReassociableOp(LHS, I->getOpcode()) && - isReassociableOp(RHS, I->getOpcode()) && - "Not an expression that needs linearization?"); - - DEBUG(dbgs() << "Linear" << *LHS << '\n' << *RHS << '\n' << *I << '\n'); + BinaryOperator *LHS = isReassociableOp(I->getOperand(0), I->getOpcode()); + BinaryOperator *RHS = isReassociableOp(I->getOperand(1), I->getOpcode()); + assert(LHS && RHS && "Not an expression that needs linearization?"); + + DEBUG({ + dbgs() << "Linear:\n"; + dbgs() << '\t' << *LHS << "\t\n" << *RHS << "\t\n" << *I << '\n'; + }); // Move the RHS instruction to live immediately before I, avoiding breaking // dominator properties. |

