simplify some logic
authorChris Lattner <sabre@nondot.org>
Thu, 9 Jul 2009 00:32:12 +0000 (00:32 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 9 Jul 2009 00:32:12 +0000 (00:32 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@75079 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp

index 08d26b2f513b034ecd1229545ae7e5098da64f9d..a834e7d60f194a0b4b19b0d96d79fbdcee0c545b 100644 (file)
@@ -590,24 +590,26 @@ void X86ATTAsmPrinter::printLeaMemReference(const MachineInstr *MI, unsigned Op,
   const MachineOperand &IndexReg = MI->getOperand(Op+2);
   const MachineOperand &DispSpec = MI->getOperand(Op+3);
 
-  if (DispSpec.isGlobal() ||
-      DispSpec.isCPI() ||
-      DispSpec.isJTI() ||
-      DispSpec.isSymbol()) {
-    printOperand(MI, Op+3, "mem");
-  } else {
-    int DispVal = DispSpec.getImm();
-    if (DispVal || (!IndexReg.getReg() && !BaseReg.getReg()))
-      O << DispVal;
-  }
-
   // If we really don't want to print out (rip), don't.
   bool HasBaseReg = BaseReg.getReg() != 0;
   if (HasBaseReg && Modifier && !strcmp(Modifier, "no-rip") &&
       BaseReg.getReg() == X86::RIP)
     HasBaseReg = false;
-    
-  if (IndexReg.getReg() || HasBaseReg) {
+  
+  // HasParenPart - True if we will print out the () part of the mem ref.
+  bool HasParenPart = IndexReg.getReg() || HasBaseReg;
+  
+  if (DispSpec.isImm()) {
+    int DispVal = DispSpec.getImm();
+    if (DispVal || !HasParenPart)
+      O << DispVal;
+  } else {
+    assert(DispSpec.isGlobal() || DispSpec.isCPI() ||
+           DispSpec.isJTI() || DispSpec.isSymbol());
+    printOperand(MI, Op+3, "mem");
+  }
+
+  if (HasParenPart) {
     assert(IndexReg.getReg() != X86::ESP &&
            "X86 doesn't allow scaling by ESP");