OSDN Git Service

parenthesize symbol names that start with $, fixing X86/dollar-name.ll with
authorChris Lattner <sabre@nondot.org>
Tue, 8 Sep 2009 23:20:50 +0000 (23:20 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 8 Sep 2009 23:20:50 +0000 (23:20 +0000)
the new asmprinter.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81269 91177308-0d34-0410-b5e6-96231b3b80d8

lib/MC/MCExpr.cpp

index 3eae6bd..c0ecad0 100644 (file)
@@ -20,9 +20,20 @@ void MCExpr::print(raw_ostream &OS, const MCAsmInfo *MAI) const {
     OS << cast<MCConstantExpr>(*this).getValue();
     return;
 
-  case MCExpr::SymbolRef:
-    cast<MCSymbolRefExpr>(*this).getSymbol().print(OS, MAI);
+  case MCExpr::SymbolRef: {
+    const MCSymbol &Sym = cast<MCSymbolRefExpr>(*this).getSymbol();
+    
+    // Parenthesize names that start with $ so that they don't look like
+    // absolute names.
+    if (Sym.getName()[0] == '$') {
+      OS << '(';
+      Sym.print(OS, MAI);
+      OS << ')';
+    } else {
+      Sym.print(OS, MAI);
+    }
     return;
+  }
 
   case MCExpr::Unary: {
     const MCUnaryExpr &UE = cast<MCUnaryExpr>(*this);