From 72feb155632c5af1b2e7a28b38d4840916043cdb Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 4 Aug 2003 01:04:59 +0000 Subject: [PATCH] Simplify some constant expressions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7556 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/X86/Printer.cpp | 22 +++++++++------------- lib/Target/X86/X86AsmPrinter.cpp | 22 +++++++++------------- 2 files changed, 18 insertions(+), 26 deletions(-) diff --git a/lib/Target/X86/Printer.cpp b/lib/Target/X86/Printer.cpp index 96200a4de00..bdfb8d56468 100644 --- a/lib/Target/X86/Printer.cpp +++ b/lib/Target/X86/Printer.cpp @@ -119,16 +119,16 @@ std::string Printer::valToExprString(const Value* V) { /// and return this as a string. /// std::string Printer::ConstantExprToString(const ConstantExpr* CE) { - std::string S; const TargetData &TD = TM.getTargetData(); switch(CE->getOpcode()) { case Instruction::GetElementPtr: { // generate a symbolic expression for the byte address const Value* ptrVal = CE->getOperand(0); std::vector idxVec(CE->op_begin()+1, CE->op_end()); - S += "(" + valToExprString(ptrVal) + ") + (" - + utostr(TD.getIndexedOffset(ptrVal->getType(),idxVec)) + ")"; - break; + if (unsigned Offset = TD.getIndexedOffset(ptrVal->getType(), idxVec)) + return "(" + valToExprString(ptrVal) + ") + " + utostr(Offset); + else + return valToExprString(ptrVal); } case Instruction::Cast: @@ -143,23 +143,19 @@ std::string Printer::ConstantExprToString(const ConstantExpr* CE) { || (isa(Ty) && (OpTy == Type::LongTy || OpTy == Type::ULongTy))) || (((TD.getTypeSize(Ty) >= TD.getTypeSize(OpTy)) - && (OpTy-> isLosslesslyConvertibleTo(Ty)))) + && (OpTy->isLosslesslyConvertibleTo(Ty)))) && "FIXME: Don't yet support this kind of constant cast expr"); - S += "(" + valToExprString(Op) + ")"; + return "(" + valToExprString(Op) + ")"; } - break; case Instruction::Add: - S += "(" + valToExprString(CE->getOperand(0)) + ") + (" - + valToExprString(CE->getOperand(1)) + ")"; - break; + return "(" + valToExprString(CE->getOperand(0)) + ") + (" + + valToExprString(CE->getOperand(1)) + ")"; default: assert(0 && "Unsupported operator in ConstantExprToString()"); - break; + return ""; } - - return S; } /// printSingleConstantValue - Print a single constant value. diff --git a/lib/Target/X86/X86AsmPrinter.cpp b/lib/Target/X86/X86AsmPrinter.cpp index 96200a4de00..bdfb8d56468 100644 --- a/lib/Target/X86/X86AsmPrinter.cpp +++ b/lib/Target/X86/X86AsmPrinter.cpp @@ -119,16 +119,16 @@ std::string Printer::valToExprString(const Value* V) { /// and return this as a string. /// std::string Printer::ConstantExprToString(const ConstantExpr* CE) { - std::string S; const TargetData &TD = TM.getTargetData(); switch(CE->getOpcode()) { case Instruction::GetElementPtr: { // generate a symbolic expression for the byte address const Value* ptrVal = CE->getOperand(0); std::vector idxVec(CE->op_begin()+1, CE->op_end()); - S += "(" + valToExprString(ptrVal) + ") + (" - + utostr(TD.getIndexedOffset(ptrVal->getType(),idxVec)) + ")"; - break; + if (unsigned Offset = TD.getIndexedOffset(ptrVal->getType(), idxVec)) + return "(" + valToExprString(ptrVal) + ") + " + utostr(Offset); + else + return valToExprString(ptrVal); } case Instruction::Cast: @@ -143,23 +143,19 @@ std::string Printer::ConstantExprToString(const ConstantExpr* CE) { || (isa(Ty) && (OpTy == Type::LongTy || OpTy == Type::ULongTy))) || (((TD.getTypeSize(Ty) >= TD.getTypeSize(OpTy)) - && (OpTy-> isLosslesslyConvertibleTo(Ty)))) + && (OpTy->isLosslesslyConvertibleTo(Ty)))) && "FIXME: Don't yet support this kind of constant cast expr"); - S += "(" + valToExprString(Op) + ")"; + return "(" + valToExprString(Op) + ")"; } - break; case Instruction::Add: - S += "(" + valToExprString(CE->getOperand(0)) + ") + (" - + valToExprString(CE->getOperand(1)) + ")"; - break; + return "(" + valToExprString(CE->getOperand(0)) + ") + (" + + valToExprString(CE->getOperand(1)) + ")"; default: assert(0 && "Unsupported operator in ConstantExprToString()"); - break; + return ""; } - - return S; } /// printSingleConstantValue - Print a single constant value.