[llvm-commits] CVS: llvm/tools/llvm2cpp/CppWriter.cpp
Reid Spencer
reid at x10sys.com
Mon Dec 11 17:31:52 PST 2006
Changes in directory llvm/tools/llvm2cpp:
CppWriter.cpp updated: 1.23 -> 1.24
---
Log message:
Generate the correct cast opcode for constant expressions.
---
Diffs of the changes: (+17 -2)
CppWriter.cpp | 19 +++++++++++++++++--
1 files changed, 17 insertions(+), 2 deletions(-)
Index: llvm/tools/llvm2cpp/CppWriter.cpp
diff -u llvm/tools/llvm2cpp/CppWriter.cpp:1.23 llvm/tools/llvm2cpp/CppWriter.cpp:1.24
--- llvm/tools/llvm2cpp/CppWriter.cpp:1.23 Tue Dec 5 19:18:01 2006
+++ llvm/tools/llvm2cpp/CppWriter.cpp Mon Dec 11 19:31:37 2006
@@ -761,8 +761,23 @@
} else if (CE->isCast()) {
printConstant(CE->getOperand(0));
Out << "Constant* " << constName << " = ConstantExpr::getCast(";
- Out << getCppName(CE->getOperand(0)) << ", " << getCppName(CE->getType())
- << ");";
+ switch (CE->getOpcode()) {
+ default: assert(0 && "Invalid cast opcode");
+ case Instruction::Trunc: Out << "Instruction::Trunc"; break;
+ case Instruction::ZExt: Out << "Instruction::ZExt"; break;
+ case Instruction::SExt: Out << "Instruction::SExt"; break;
+ case Instruction::FPTrunc: Out << "Instruction::FPTrunc"; break;
+ case Instruction::FPExt: Out << "Instruction::FPExt"; break;
+ case Instruction::FPToUI: Out << "Instruction::FPToUI"; break;
+ case Instruction::FPToSI: Out << "Instruction::FPToSI"; break;
+ case Instruction::UIToFP: Out << "Instruction::UIToFP"; break;
+ case Instruction::SIToFP: Out << "Instruction::SIToFP"; break;
+ case Instruction::PtrToInt: Out << "Instruction::PtrToInt"; break;
+ case Instruction::IntToPtr: Out << "Instruction::IntToPtr"; break;
+ case Instruction::BitCast: Out << "Instruction::BitCast"; break;
+ }
+ Out << ", " << getCppName(CE->getOperand(0)) << ", "
+ << getCppName(CE->getType()) << ");";
} else {
unsigned N = CE->getNumOperands();
for (unsigned i = 0; i < N; ++i ) {
More information about the llvm-commits
mailing list