[llvm-commits] CVS: llvm/lib/Transforms/Scalar/InstructionCombining.cpp

Chris Lattner lattner at cs.uiuc.edu
Wed Apr 20 22:43:30 PDT 2005



Changes in directory llvm/lib/Transforms/Scalar:

InstructionCombining.cpp updated: 1.322 -> 1.323
---
Log message:

Instcombine this:

        %shortcirc_val = select bool %tmp.1, bool true, bool %tmp.4             ; <bool> [#uses=1]
        %tmp.6 = cast bool %shortcirc_val to int                ; <int> [#uses=1]
 
into this:

        %shortcirc_val = or bool %tmp.1, %tmp.4         ; <bool> [#uses=1]
        %tmp.6 = cast bool %shortcirc_val to int                ; <int> [#uses=1]
 
not this:

        %tmp.4.cast = cast bool %tmp.4 to int           ; <int> [#uses=1]
        %tmp.6 = select bool %tmp.1, int 1, int %tmp.4.cast             ; <int> [#uses=1]



---
Diffs of the changes:  (+3 -0)

 InstructionCombining.cpp |    3 +++
 1 files changed, 3 insertions(+)


Index: llvm/lib/Transforms/Scalar/InstructionCombining.cpp
diff -u llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.322 llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.323
--- llvm/lib/Transforms/Scalar/InstructionCombining.cpp:1.322	Tue Apr 19 01:04:18 2005
+++ llvm/lib/Transforms/Scalar/InstructionCombining.cpp	Thu Apr 21 00:43:13 2005
@@ -548,6 +548,9 @@
   Value *FV = SI->getOperand(2);
 
   if (isa<Constant>(TV) || isa<Constant>(FV)) {
+    // Bool selects with constant operands can be folded to logical ops.
+    if (SI->getType() == Type::BoolTy) return 0;
+
     Value *SelectTrueVal = FoldOperationIntoSelectOperand(Op, TV, IC);
     Value *SelectFalseVal = FoldOperationIntoSelectOperand(Op, FV, IC);
 






More information about the llvm-commits mailing list