diff options
author | Chad Rosier <mcrosier@codeaurora.org> | 2014-11-17 15:52:51 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@codeaurora.org> | 2014-11-17 15:52:51 +0000 |
commit | 9a1ac6e494bfbe8daee4302404a15eda4fbbfa05 (patch) | |
tree | 95dde6543fbdccebb3991c7e80a92fc3039d7239 /llvm/lib/Transforms/Scalar/Reassociate.cpp | |
parent | 3687d3c2e9e1d4dcfb76e7d7614413eede5af951 (diff) | |
download | llvm-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.cpp | 5 |
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(); } |