Changes in directory llvm/lib/Target/CBackend:
Writer.cpp updated: 1.299 -> 1.300 --- Log message: Use a predicate function to identify bitcast of fp and integer instead of repeating the logic in two different parts of the code. --- Diffs of the changes: (+11 -11) Writer.cpp | 22 +++++++++++----------- 1 files changed, 11 insertions(+), 11 deletions(-) Index: llvm/lib/Target/CBackend/Writer.cpp diff -u llvm/lib/Target/CBackend/Writer.cpp:1.299 llvm/lib/Target/CBackend/Writer.cpp:1.300 --- llvm/lib/Target/CBackend/Writer.cpp:1.299 Sun Dec 17 12:50:51 2006 +++ llvm/lib/Target/CBackend/Writer.cpp Sun Dec 17 14:24:50 2006 @@ -1676,6 +1676,15 @@ printType(Out, RetTy, FunctionInnards.str()); } +static inline bool isFPIntBitCast(const Instruction &I) { + if (!isa<BitCastInst>(I)) + return false; + const Type *SrcTy = I.getOperand(0)->getType(); + const Type *DstTy = I.getType(); + return (SrcTy->isFloatingPoint() && DstTy->isInteger()) || + (DstTy->isFloatingPoint() && SrcTy->isInteger()); +} + void CWriter::printFunction(Function &F) { printFunctionSignature(&F, false); Out << " {\n"; @@ -1718,11 +1727,7 @@ // We need a temporary for the BitCast to use so it can pluck a value out // of a uniont to do the BitCast. This is separate from the need for a // variable to hold the result of the BitCast. - if (isa<BitCastInst>(*I) && - ((I->getType()->isFloatingPoint() && - I->getOperand(0)->getType()->isInteger()) || - (I->getType()->isInteger() && - I->getOperand(0)->getType()->isFloatingPoint()))) { + if (isFPIntBitCast(*I)) { Out << " llvmBitCastUnion " << Mang->getValueName(&*I) << "__BITCAST_TEMPORARY;\n"; PrintedVar = true; @@ -2025,12 +2030,7 @@ const Type *DstTy = I.getType(); const Type *SrcTy = I.getOperand(0)->getType(); Out << '('; - if (isa<BitCastInst>(I) && - ((I.getType()->isFloatingPoint() && - I.getOperand(0)->getType()->isInteger()) || - (I.getType()->isInteger() && - I.getOperand(0)->getType()->isFloatingPoint()))) { - + if (isFPIntBitCast(I)) { // These int<->float and long<->double casts need to be handled specially Out << Mang->getValueName(&I) << "__BITCAST_TEMPORARY." << getFloatBitCastField(I.getOperand(0)->getType()) << " = "; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits