summaryrefslogtreecommitdiffstats
path: root/lib/MC/MCExpr.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-09-08 06:37:35 +0000
committerChris Lattner <sabre@nondot.org>2009-09-08 06:37:35 +0000
commitd19ceb9b122e120009a67231e89903ec2205cf1d (patch)
tree38001511d76dfe6ffdc8ea138bfcade08a99e20d /lib/MC/MCExpr.cpp
parentbe73e8c4e7ca3dcec4aadef237d8e1779e0836fc (diff)
downloadexternal_llvm-d19ceb9b122e120009a67231e89903ec2205cf1d.zip
external_llvm-d19ceb9b122e120009a67231e89903ec2205cf1d.tar.gz
external_llvm-d19ceb9b122e120009a67231e89903ec2205cf1d.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
Diffstat (limited to 'lib/MC/MCExpr.cpp')
-rw-r--r--lib/MC/MCExpr.cpp12
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;