[llvm-branch-commits] [llvm-branch] r244764 - Merging r244676:

Hans Wennborg via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Aug 12 09:51:20 PDT 2015


Author: hans
Date: Wed Aug 12 11:51:20 2015
New Revision: 244764

URL: http://llvm.org/viewvc/llvm-project?rev=244764&view=rev
Log:
Merging r244676:
------------------------------------------------------------------------
r244676 | sanjoy | 2015-08-11 14:33:55 -0700 (Tue, 11 Aug 2015) | 7 lines

Fix PR24354.

`InstCombiner::OptimizeOverflowCheck` was asserting an
invariant (operands to binary operations are ordered by decreasing
complexity) that wasn't really an invariant.  Fix this by instead having
`InstCombiner::OptimizeOverflowCheck` establish the invariant if it does
not hold.
------------------------------------------------------------------------

Added:
    llvm/branches/release_37/test/Transforms/InstCombine/pr24354.ll
      - copied unchanged from r244676, llvm/trunk/test/Transforms/InstCombine/pr24354.ll
Modified:
    llvm/branches/release_37/   (props changed)
    llvm/branches/release_37/lib/Transforms/InstCombine/InstCombineCompares.cpp

Propchange: llvm/branches/release_37/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Aug 12 11:51:20 2015
@@ -1,3 +1,3 @@
 /llvm/branches/Apple/Pertwee:110850,110961
 /llvm/branches/type-system-rewrite:133420-134817
-/llvm/trunk:155241,242236,242239,242281,242288,242296,242331,242341,242410,242412,242433-242434,242442,242543,242673,242680,242706,242721-242722,242733-242735,242742,242869,242919,242993,243001,243057,243116,243263,243294,243361,243469,243485,243500,243519,243531,243589,243609,243636,243638-243640,243745,243891,243898,243927,243932,243934,243984,243986,244058,244123,244418,244554,244644
+/llvm/trunk:155241,242236,242239,242281,242288,242296,242331,242341,242410,242412,242433-242434,242442,242543,242673,242680,242706,242721-242722,242733-242735,242742,242869,242919,242993,243001,243057,243116,243263,243294,243361,243469,243485,243500,243519,243531,243589,243609,243636,243638-243640,243745,243891,243898,243927,243932,243934,243984,243986,244058,244123,244418,244554,244644,244676

Modified: llvm/branches/release_37/lib/Transforms/InstCombine/InstCombineCompares.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/release_37/lib/Transforms/InstCombine/InstCombineCompares.cpp?rev=244764&r1=244763&r2=244764&view=diff
==============================================================================
--- llvm/branches/release_37/lib/Transforms/InstCombine/InstCombineCompares.cpp (original)
+++ llvm/branches/release_37/lib/Transforms/InstCombine/InstCombineCompares.cpp Wed Aug 12 11:51:20 2015
@@ -2112,9 +2112,8 @@ static Instruction *ProcessUGT_ADDCST_AD
 bool InstCombiner::OptimizeOverflowCheck(OverflowCheckFlavor OCF, Value *LHS,
                                          Value *RHS, Instruction &OrigI,
                                          Value *&Result, Constant *&Overflow) {
-  assert((!OrigI.isCommutative() ||
-          !(isa<Constant>(LHS) && !isa<Constant>(RHS))) &&
-         "call with a constant RHS if possible!");
+  if (OrigI.isCommutative() && isa<Constant>(LHS) && !isa<Constant>(RHS))
+    std::swap(LHS, RHS);
 
   auto SetResult = [&](Value *OpResult, Constant *OverflowVal, bool ReuseName) {
     Result = OpResult;




More information about the llvm-branch-commits mailing list