[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Chris Lattner lattner at cs.uiuc.edu
Fri May 12 10:03:59 PDT 2006



Changes in directory llvm/lib/CodeGen/SelectionDAG:

SelectionDAG.cpp updated: 1.305 -> 1.306
---
Log message:

Compile:

        %tmp152 = setgt uint %tmp144, %tmp149           ; <bool> [#uses=1]
        %tmp159 = setlt uint %tmp144, %tmp149           ; <bool> [#uses=1]
        %bothcond2 = or bool %tmp152, %tmp159           ; <bool> [#uses=1]

To setne, not setune, which causes an assertion fault.


---
Diffs of the changes:  (+6 -1)

 SelectionDAG.cpp |    7 ++++++-
 1 files changed, 6 insertions(+), 1 deletion(-)


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.305 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.306
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.305	Mon May  8 12:29:49 2006
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp	Fri May 12 12:03:46 2006
@@ -217,7 +217,12 @@
   // If the N and U bits get set then the resultant comparison DOES suddenly
   // care about orderedness, and is true when ordered.
   if (Op > ISD::SETTRUE2)
-    Op &= ~16;     // Clear the N bit.
+    Op &= ~16;     // Clear the U bit if the N bit is set.
+  
+  // Canonicalize illegal integer setcc's.
+  if (isInteger && Op == ISD::SETUNE)  // e.g. SETUGT | SETULT
+    Op = ISD::SETNE;
+  
   return ISD::CondCode(Op);
 }
 






More information about the llvm-commits mailing list