Temporary revert my last commit: it seems it's triggering some subtle bug in backend
and breaks llvm-gcc

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58926 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
index ae6c354..36cd98e 100644
--- a/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
+++ b/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp
@@ -300,9 +300,12 @@
       FnStubs.insert(Name);
     } else
       O << Name;
-
-    printOffset(MO.getOffset());
-
+    
+    if (MO.getOffset() > 0)
+      O << '+' << MO.getOffset();
+    else if (MO.getOffset() < 0)
+      O << MO.getOffset();
+    
     if (isCallOp && Subtarget->isTargetELF() &&
         TM.getRelocationModel() == Reloc::PIC_)
       O << "(PLT)";
@@ -342,7 +345,7 @@
   assert(V < (1 << 12) && "Not a valid so_imm value!");
   unsigned Imm = ARM_AM::getSOImmValImm(V);
   unsigned Rot = ARM_AM::getSOImmValRot(V);
-
+  
   // Print low-level immediate formation info, per
   // A5.1.3: "Data-processing operands - Immediate".
   if (Rot) {
diff --git a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
index 280003a..6c17dbe 100644
--- a/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
+++ b/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
@@ -398,7 +398,10 @@
     }
     O << Name;
 
-    printOffset(MO.getOffset());
+    if (MO.getOffset() > 0)
+      O << "+" << MO.getOffset();
+    else if (MO.getOffset() < 0)
+      O << MO.getOffset();
 
     if (GV->hasExternalWeakLinkage())
       ExtWeakSymbols.insert(GV);
diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
index 66319c3..556757a 100644
--- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
+++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
@@ -344,7 +344,11 @@
         O << "@GOTOFF";
     }
 
-    printOffset(MO.getOffset());
+    int Offset = MO.getOffset();
+    if (Offset > 0)
+      O << '+' << Offset;
+    else if (Offset < 0)
+      O << Offset;
 
     if (isMemOp && Subtarget->isPICStyleRIPRel() && !NotRIPRel)
       O << "(%rip)";
@@ -425,7 +429,11 @@
     if (GV->hasExternalWeakLinkage())
       ExtWeakSymbols.insert(GV);
 
-    printOffset(MO.getOffset());
+    int Offset = MO.getOffset();
+    if (Offset > 0)
+      O << '+' << Offset;
+    else if (Offset < 0)
+      O << Offset;
 
     if (isThreadLocal) {
       if (TM.getRelocationModel() == Reloc::PIC_ || Subtarget->is64Bit())
diff --git a/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
index 1d4a695..4868906 100644
--- a/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
+++ b/lib/Target/X86/AsmPrinter/X86IntelAsmPrinter.cpp
@@ -235,7 +235,11 @@
     if (!isMemOp) O << "OFFSET ";
     O << "[" << TAI->getPrivateGlobalPrefix() << "CPI"
       << getFunctionNumber() << "_" << MO.getIndex();
-    printOffset(MO.getOffset());
+    int Offset = MO.getOffset();
+    if (Offset > 0)
+      O << " + " << Offset;
+    else if (Offset < 0)
+      O << Offset;
     O << "]";
     return;
   }
@@ -254,7 +258,11 @@
       O << "__imp_";
     }
     O << Name;
-    printOffset(MO.getOffset());
+    int Offset = MO.getOffset();
+    if (Offset > 0)
+      O << " + " << Offset;
+    else if (Offset < 0)
+      O << Offset;
     return;
   }
   case MachineOperand::MO_ExternalSymbol: {