aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Scalar/Reassociate.cpp
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@codeaurora.org>2014-11-17 15:52:51 +0000
committerChad Rosier <mcrosier@codeaurora.org>2014-11-17 15:52:51 +0000
commit9a1ac6e494bfbe8daee4302404a15eda4fbbfa05 (patch)
tree95dde6543fbdccebb3991c7e80a92fc3039d7239 /llvm/lib/Transforms/Scalar/Reassociate.cpp
parent3687d3c2e9e1d4dcfb76e7d7614413eede5af951 (diff)
downloadllvm-9a1ac6e494bfbe8daee4302404a15eda4fbbfa05.zip
llvm-9a1ac6e494bfbe8daee4302404a15eda4fbbfa05.tar.gz
llvm-9a1ac6e494bfbe8daee4302404a15eda4fbbfa05.tar.bz2
[Reassociate] Canonicalize constants to RHS operand.
Fix a thinko where the RHS was already a constant. llvm-svn: 222139
Diffstat (limited to 'llvm/lib/Transforms/Scalar/Reassociate.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/Reassociate.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/Reassociate.cpp b/llvm/lib/Transforms/Scalar/Reassociate.cpp
index 30e9b88..abe7f28 100644
--- a/llvm/lib/Transforms/Scalar/Reassociate.cpp
+++ b/llvm/lib/Transforms/Scalar/Reassociate.cpp
@@ -332,6 +332,7 @@ unsigned Reassociate::getRank(Value *V) {
return ValueRankMap[I] = Rank;
}
+// Canonicalize constants to RHS. Otherwise, sort the operands by rank.
void Reassociate::canonicalizeOperands(Instruction *I) {
assert(isa<BinaryOperator>(I) && "Expected binary operator.");
assert(I->isCommutative() && "Expected commutative operator.");
@@ -341,7 +342,9 @@ void Reassociate::canonicalizeOperands(Instruction *I) {
unsigned LHSRank = getRank(LHS);
unsigned RHSRank = getRank(RHS);
- // Canonicalize constants to RHS. Otherwise, sort the operands by rank.
+ if (isa<Constant>(RHS))
+ return;
+
if (isa<Constant>(LHS) || RHSRank < LHSRank)
cast<BinaryOperator>(I)->swapOperands();
}