diff options
author | Chris Lattner <sabre@nondot.org> | 2009-09-08 06:37:35 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2009-09-08 06:37:35 +0000 |
commit | b051a8456f5c4ef77a845b6359f32cd26b6938a8 (patch) | |
tree | 38001511d76dfe6ffdc8ea138bfcade08a99e20d | |
parent | 914d43ea8fcbcc97cf319ce1ea86af4489797ca2 (diff) | |
download | external_llvm-b051a8456f5c4ef77a845b6359f32cd26b6938a8.zip external_llvm-b051a8456f5c4ef77a845b6359f32cd26b6938a8.tar.gz external_llvm-b051a8456f5c4ef77a845b6359f32cd26b6938a8.tar.bz2 |
Print "X-42" instead of "X+-42".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81203 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/MC/MCExpr.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp index 2bb674f..3eae6bd 100644 --- a/lib/MC/MCExpr.cpp +++ b/lib/MC/MCExpr.cpp @@ -51,7 +51,17 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const { switch (BE.getOpcode()) { default: assert(0 && "Invalid opcode!"); - case MCBinaryExpr::Add: OS << '+'; break; + case MCBinaryExpr::Add: + // Print "X-42" instead of "X+-42". + if (const MCConstantExpr *RHSC = dyn_cast<MCConstantExpr>(BE.getRHS())) { + if (RHSC->getValue() < 0) { + OS << RHSC->getValue(); + return; + } + } + + OS << '+'; + break; case MCBinaryExpr::And: OS << '&'; break; case MCBinaryExpr::Div: OS << '/'; break; case MCBinaryExpr::EQ: OS << "=="; break; |