From be73e8c4e7ca3dcec4aadef237d8e1779e0836fc Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Tue, 8 Sep 2009 06:34:07 +0000 Subject: [PATCH] make formatting of expressions more closely match the existing asmprinter. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81202 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCExpr.cpp | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/lib/MC/MCExpr.cpp b/lib/MC/MCExpr.cpp index 884211769a6..2bb674ff344 100644 --- a/lib/MC/MCExpr.cpp +++ b/lib/MC/MCExpr.cpp @@ -39,9 +39,16 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const { case MCExpr::Binary: { const MCBinaryExpr &BE = cast(*this); - OS << '('; - BE.getLHS()->print(OS, MAI); - OS << ' '; + + // Only print parens around the LHS if it is non-trivial. + if (isa(BE.getLHS()) || isa(BE.getLHS())) { + BE.getLHS()->print(OS, MAI); + } else { + OS << '('; + BE.getLHS()->print(OS, MAI); + OS << ')'; + } + switch (BE.getOpcode()) { default: assert(0 && "Invalid opcode!"); case MCBinaryExpr::Add: OS << '+'; break; @@ -63,9 +70,15 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const { case MCBinaryExpr::Sub: OS << '-'; break; case MCBinaryExpr::Xor: OS << '^'; break; } - OS << ' '; - BE.getRHS()->print(OS, MAI); - OS << ')'; + + // Only print parens around the LHS if it is non-trivial. + if (isa(BE.getRHS()) || isa(BE.getRHS())) { + BE.getRHS()->print(OS, MAI); + } else { + OS << '('; + BE.getRHS()->print(OS, MAI); + OS << ')'; + } return; } }