diff options
| author | Chris Lattner <sabre@nondot.org> | 2004-03-13 23:54:27 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2004-03-13 23:54:27 +0000 | 
| commit | 7d2a539735d85c84fc207ce5306461fa83b14066 (patch) | |
| tree | c644918c09df7466382eed21d9bfeb75c9369578 /llvm/lib/Transforms | |
| parent | e561cb51de0cef227caa9ece3cef50546b70277e (diff) | |
| download | bcm5719-llvm-7d2a539735d85c84fc207ce5306461fa83b14066.tar.gz bcm5719-llvm-7d2a539735d85c84fc207ce5306461fa83b14066.zip | |
Add some debugging output
Fix InstCombine/2004-03-13-InstCombineInfLoop.ll which caused an infinite
loop compiling (I think) povray.
llvm-svn: 12365
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 9 | 
1 files changed, 8 insertions, 1 deletions
| diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 866afb48187..93b24878b47 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -33,6 +33,7 @@  //  //===----------------------------------------------------------------------===// +#define DEBUG_TYPE "instcombine"  #include "llvm/Transforms/Scalar.h"  #include "llvm/Instructions.h"  #include "llvm/Intrinsics.h" @@ -46,6 +47,7 @@  #include "llvm/Support/InstIterator.h"  #include "llvm/Support/InstVisitor.h"  #include "llvm/Support/CallSite.h" +#include "Support/Debug.h"  #include "Support/Statistic.h"  #include <algorithm>  using namespace llvm; @@ -1551,7 +1553,7 @@ Instruction *InstCombiner::visitSetCondInst(BinaryOperator &I) {    if (CastInst *CI = dyn_cast<CastInst>(Op0)) {      Value *CastOp0 = CI->getOperand(0);      if (CastOp0->getType()->isLosslesslyConvertibleTo(CI->getType()) && -        !isa<Argument>(Op1) && +        (isa<Constant>(Op1) || isa<CastInst>(Op1)) &&          (I.getOpcode() == Instruction::SetEQ ||           I.getOpcode() == Instruction::SetNE)) {        // We keep moving the cast from the left operand over to the right @@ -2543,6 +2545,9 @@ bool InstCombiner::runOnFunction(Function &F) {        ++NumCombined;        // Should we replace the old instruction with a new one?        if (Result != I) { +        DEBUG(std::cerr << "IC: Old = " << *I +                        << "    New = " << *Result); +          // Instructions can end up on the worklist more than once.  Make sure          // we do not process an instruction that has been deleted.          removeFromWorkList(I); @@ -2561,6 +2566,8 @@ bool InstCombiner::runOnFunction(Function &F) {          // Erase the old instruction.          InstParent->getInstList().erase(I);        } else { +        DEBUG(std::cerr << "IC: MOD = " << *I); +          BasicBlock::iterator II = I;          // If the instruction was modified, it's possible that it is now dead. | 

