[llvm-commits] CVS: llvm/lib/Target/CBackend/CBackend.cpp
Chris Lattner
sabre at nondot.org
Wed May 2 19:57:31 PDT 2007
Changes in directory llvm/lib/Target/CBackend:
CBackend.cpp updated: 1.342 -> 1.343
---
Log message:
revert reid's patch to fix these failures:
test/CodeGen/CBackend/2007-01-08-ParamAttr-ICmp.ll for PR1099: http://llvm.org/PR1099 [DEJAGNU]
Applications/SPASS/SPASS [CBE]
Regression/C/2004-03-15-IndirectGoto [CBE]
---
Diffs of the changes: (+28 -100)
CBackend.cpp | 128 ++++++++++++-----------------------------------------------
1 files changed, 28 insertions(+), 100 deletions(-)
Index: llvm/lib/Target/CBackend/CBackend.cpp
diff -u llvm/lib/Target/CBackend/CBackend.cpp:1.342 llvm/lib/Target/CBackend/CBackend.cpp:1.343
--- llvm/lib/Target/CBackend/CBackend.cpp:1.342 Wed May 2 20:11:53 2007
+++ llvm/lib/Target/CBackend/CBackend.cpp Wed May 2 21:57:13 2007
@@ -412,29 +412,6 @@
}
}
-#define IMPL_SIGN_EXTENSION(OpTy, Func) { \
- const IntegerType* IntTy = cast<IntegerType>(OpTy); \
- unsigned BitWidth = IntTy->getBitWidth(); \
- if (BitWidth != 8 && BitWidth != 16 && BitWidth != 32 && \
- BitWidth != 64 && BitWidth != 128) { \
- const char * Suffix; \
- if (BitWidth <=32)\
- Suffix = "U"; \
- else \
- Suffix = "ULL"; \
- Out << "("; \
- Func; \
- Out << " & (1" << Suffix << " << " << BitWidth - 1 << " ) ? "; \
- Func; \
- Out << " | " << (~IntTy->getBitMask()) << Suffix << " : "; \
- Func; \
- Out << " & " << IntTy->getBitMask() << Suffix; \
- Out << ")";\
- } \
- else \
- Func; \
- }
-
// Pass the Type* and the variable name and this prints out the variable
// declaration.
//
@@ -734,39 +711,23 @@
case Instruction::BitCast:
Out << "(";
printCast(CE->getOpcode(), CE->getOperand(0)->getType(), CE->getType());
- if (CE->getOpcode() == Instruction::Trunc ||
- CE->getOpcode() == Instruction::FPToUI ||
- CE->getOpcode() == Instruction::FPToSI ||
- CE->getOpcode() == Instruction::PtrToInt) {
- if (const IntegerType* IntTy = dyn_cast<IntegerType>(CE->getType())) {
- uint64_t BitMask = IntTy->getBitMask();
- printConstant(CE->getOperand(0));
- Out << "&" << BitMask << (IntTy->getBitWidth() <=32 ? "U": "ULL");
- }
- }
- else if (CE->getOpcode() == Instruction::SExt &&
- CE->getOperand(0)->getType() == Type::Int1Ty) {
+ if (CE->getOpcode() == Instruction::SExt &&
+ CE->getOperand(0)->getType() == Type::Int1Ty) {
// Make sure we really sext from bool here by subtracting from 0
Out << "0-";
- printConstant(CE->getOperand(0));
}
- else if (CE->getOpcode() == Instruction::SExt &&
- CE->getOperand(0)->getType()->getTypeID() == Type::IntegerTyID) {
- IMPL_SIGN_EXTENSION(CE->getOperand(0)->getType(),
- printConstant(CE->getOperand(0)));
- }
- else if (CE->getOpcode() == Instruction::ZExt &&
- CE->getOperand(0)->getType()->getTypeID() == Type::IntegerTyID){
- const IntegerType* IntTy =
- cast<IntegerType>(CE->getOperand(0)->getType());
- uint64_t BitMask = IntTy->getBitMask();
- writeOperand(CE->getOperand(0));
- Out << "&" << BitMask << (IntTy->getBitWidth() <=32 ? "U": "ULL");
- }
- else
- printConstant(CE->getOperand(0));
- Out << ")";
+ printConstant(CE->getOperand(0));
+ if (CE->getType() == Type::Int1Ty &&
+ (CE->getOpcode() == Instruction::Trunc ||
+ CE->getOpcode() == Instruction::FPToUI ||
+ CE->getOpcode() == Instruction::FPToSI ||
+ CE->getOpcode() == Instruction::PtrToInt)) {
+ // Make sure we really truncate to bool here by anding with 1
+ Out << "&1u";
+ }
+ Out << ')';
return;
+
case Instruction::GetElementPtr:
Out << "(&(";
printIndexingExpression(CE->getOperand(0), gep_type_begin(CPV),
@@ -1267,11 +1228,7 @@
Out << "((";
printSimpleType(Out, OpTy, castIsSigned);
Out << ")";
- if (castIsSigned && OpTy->getTypeID() == Type::IntegerTyID) {
- IMPL_SIGN_EXTENSION(OpTy, writeOperand(Operand));
- }
- else
- writeOperand(Operand);
+ writeOperand(Operand);
Out << ")";
} else
writeOperand(Operand);
@@ -1296,9 +1253,7 @@
switch (predicate) {
default:
// for eq and ne, it doesn't matter
- break;
- case ICmpInst::ICMP_EQ:
- case ICmpInst::ICMP_NE:
+ break;
case ICmpInst::ICMP_UGT:
case ICmpInst::ICMP_UGE:
case ICmpInst::ICMP_ULT:
@@ -1323,25 +1278,10 @@
else
printType(Out, OpTy); // not integer, sign doesn't matter
Out << ")";
- if(castIsSigned && OpTy->getTypeID() == Type::IntegerTyID) {
- IMPL_SIGN_EXTENSION(OpTy, writeOperand(Operand));
- } else {
- writeOperand(Operand);
- if(OpTy->getTypeID() == Type::IntegerTyID){
- const IntegerType * IntTy = cast<IntegerType>(OpTy);
- uint64_t BitMask = IntTy->getBitMask();
- Out << "&" << BitMask << (IntTy->getBitWidth() <=32 ? "U": "ULL");
- }
- }
+ writeOperand(Operand);
Out << ")";
- } else {
+ } else
writeOperand(Operand);
- if(OpTy->getTypeID() == Type::IntegerTyID){
- const IntegerType * IntTy = cast<IntegerType>(OpTy);
- uint64_t BitMask = IntTy->getBitMask();
- Out << "&" << BitMask << (IntTy->getBitWidth() <=32 ? "U": "ULL");
- }
- }
}
// generateCompilerSpecificCode - This is where we add conditional compilation
@@ -2406,33 +2346,21 @@
<< getFloatBitCastField(I.getType());
} else {
printCast(I.getOpcode(), SrcTy, DstTy);
- if (I.getOpcode() == Instruction::Trunc ||
- I.getOpcode() == Instruction::FPToUI ||
- I.getOpcode() == Instruction::FPToSI ||
- I.getOpcode() == Instruction::PtrToInt) {
- if (const IntegerType* IntTy = dyn_cast<IntegerType>(DstTy)){
- uint64_t BitMask = IntTy->getBitMask();
- writeOperand(I.getOperand(0));
- Out << "&" << BitMask << (IntTy->getBitWidth() <=32 ? "U": "ULL");
- }
- } else if (I.getOpcode() == Instruction::SExt && SrcTy == Type::Int1Ty) {
+ if (I.getOpcode() == Instruction::SExt && SrcTy == Type::Int1Ty) {
// Make sure we really get a sext from bool by subtracing the bool from 0
Out << "0-";
- writeOperand(I.getOperand(0));
- } else if (I.getOpcode() == Instruction::SExt &&
- SrcTy->getTypeID() == Type::IntegerTyID) {
- IMPL_SIGN_EXTENSION(SrcTy, writeOperand(I.getOperand(0)) );
- } else if (I.getOpcode() == Instruction::ZExt &&
- SrcTy->getTypeID() == Type::IntegerTyID) {
- const IntegerType* IntTy = cast<IntegerType>(SrcTy);
- uint64_t BitMask = IntTy->getBitMask();
- writeOperand(I.getOperand(0));
- Out << "&" << BitMask << (IntTy->getBitWidth() <=32 ? "U": "ULL");
}
- else
- writeOperand(I.getOperand(0));
+ writeOperand(I.getOperand(0));
+ if (DstTy == Type::Int1Ty &&
+ (I.getOpcode() == Instruction::Trunc ||
+ I.getOpcode() == Instruction::FPToUI ||
+ I.getOpcode() == Instruction::FPToSI ||
+ I.getOpcode() == Instruction::PtrToInt)) {
+ // Make sure we really get a trunc to bool by anding the operand with 1
+ Out << "&1u";
+ }
}
- Out << ")";
+ Out << ')';
}
void CWriter::visitSelectInst(SelectInst &I) {
More information about the llvm-commits
mailing list