Changes in directory llvm/lib/Transforms:
ExprTypeConvert.cpp updated: 1.117 -> 1.118 LevelRaise.cpp updated: 1.116 -> 1.117 --- Log message: For PR950: http://llvm.org/PR950 : This patch removes the SetCC instructions and replaces them with the ICmp and FCmp instructions. The SetCondInst instruction has been removed and been replaced with ICmpInst and FCmpInst. --- Diffs of the changes: (+21 -10) ExprTypeConvert.cpp | 28 +++++++++++++++++++++------- LevelRaise.cpp | 3 --- 2 files changed, 21 insertions(+), 10 deletions(-) Index: llvm/lib/Transforms/ExprTypeConvert.cpp diff -u llvm/lib/Transforms/ExprTypeConvert.cpp:1.117 llvm/lib/Transforms/ExprTypeConvert.cpp:1.118 --- llvm/lib/Transforms/ExprTypeConvert.cpp:1.117 Mon Dec 18 02:47:13 2006 +++ llvm/lib/Transforms/ExprTypeConvert.cpp Sat Dec 23 00:05:41 2006 @@ -463,10 +463,13 @@ return ValueConvertibleToType(I, Ty, CTMap, TD) && ExpressionConvertibleToType(OtherOp, Ty, CTMap, TD); } - case Instruction::SetEQ: - case Instruction::SetNE: { - Value *OtherOp = I->getOperand((V == I->getOperand(0)) ? 1 : 0); - return ExpressionConvertibleToType(OtherOp, Ty, CTMap, TD); + case Instruction::ICmp: { + if (cast<ICmpInst>(I)->getPredicate() == ICmpInst::ICMP_EQ || + cast<ICmpInst>(I)->getPredicate() == ICmpInst::ICMP_NE) { + Value *OtherOp = I->getOperand((V == I->getOperand(0)) ? 1 : 0); + return ExpressionConvertibleToType(OtherOp, Ty, CTMap, TD); + } + return false; } case Instruction::LShr: case Instruction::AShr: @@ -717,9 +720,7 @@ } case Instruction::Add: - case Instruction::Sub: - case Instruction::SetEQ: - case Instruction::SetNE: { + case Instruction::Sub: { Res = BinaryOperator::create(cast<BinaryOperator>(I)->getOpcode(), Dummy, Dummy, Name); VMC.ExprMap[I] = Res; // Add node to expression eagerly @@ -731,6 +732,19 @@ Res->setOperand(OtherIdx, NewOther); break; } + case Instruction::ICmp: { + ICmpInst::Predicate pred = cast<ICmpInst>(I)->getPredicate(); + if (pred == ICmpInst::ICMP_EQ || pred == ICmpInst::ICMP_NE) { + Res = new ICmpInst(pred, Dummy, Dummy, Name); + VMC.ExprMap[I] = Res; // Add node to expression eagerly + unsigned OtherIdx = (OldVal == I->getOperand(0)) ? 1 : 0; + Value *OtherOp = I->getOperand(OtherIdx); + Res->setOperand(!OtherIdx, NewVal); + Value *NewOther = ConvertExpressionToType(OtherOp, NewTy, VMC, TD); + Res->setOperand(OtherIdx, NewOther); + } + break; + } case Instruction::Shl: case Instruction::LShr: case Instruction::AShr: Index: llvm/lib/Transforms/LevelRaise.cpp diff -u llvm/lib/Transforms/LevelRaise.cpp:1.116 llvm/lib/Transforms/LevelRaise.cpp:1.117 --- llvm/lib/Transforms/LevelRaise.cpp:1.116 Tue Dec 19 16:17:40 2006 +++ llvm/lib/Transforms/LevelRaise.cpp Sat Dec 23 00:05:41 2006 @@ -393,9 +393,6 @@ return false; } - - - bool RPR::DoRaisePass(Function &F) { bool Changed = false; for (Function::iterator BB = F.begin(), BBE = F.end(); BB != BBE; ++BB) _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits