done
[oota-llvm.git] / lib / Target / X86 / X86ATTAsmPrinter.cpp
index 6a07f90499452d803a0f6ffd260c1555fae34c95..147581a1c44904324f460e76f40f36b796bff037 100755 (executable)
@@ -75,8 +75,8 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
       Subtarget->isTargetELF() ||
       Subtarget->isTargetCygMing()) {
     // Let PassManager know we need debug information and relay
-    // the MachineDebugInfo address on to DwarfWriter.
-    DW.SetDebugInfo(&getAnalysis<MachineDebugInfo>());
+    // the MachineModuleInfo address on to DwarfWriter.
+    DW.SetModuleInfo(&getAnalysis<MachineModuleInfo>());
   }
 
   SetupMachineFunction(MF);
@@ -117,8 +117,8 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) {
       O << "\t.weak_definition\t" << CurrentFnName << "\n";
     } else if (Subtarget->isTargetCygMing()) {
       EmitAlignment(4, F);     // FIXME: This should be parameterized somewhere.
-      O << "\t.linkonce discard\n";
       O << "\t.globl " << CurrentFnName << "\n";
+      O << "\t.linkonce discard\n";
     } else {
       EmitAlignment(4, F);     // FIXME: This should be parameterized somewhere.
       O << "\t.weak " << CurrentFnName << "\n";
@@ -281,7 +281,7 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
     if (printStub(TM, Subtarget)) {
       // Link-once, External, or Weakly-linked global variables need
       // non-lazily-resolved stubs
-      if (GV->isExternal() ||
+      if (GV->isDeclaration() ||
           GV->hasWeakLinkage() ||
           GV->hasLinkOnceLinkage()) {
         // Dynamically-resolved functions need a stub for the function.
@@ -310,10 +310,10 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
       if (isCallOp && isa<Function>(GV)) {
         if (printGOT(TM, Subtarget)) {
           // Assemble call via PLT for non-local symbols
-          if (!GV->hasHiddenVisibility() || GV->isExternal())
+          if (!GV->hasHiddenVisibility() || GV->isDeclaration())
             O << "@PLT";
         }
-        if (Subtarget->isTargetCygMing() && GV->isExternal())
+        if (Subtarget->isTargetCygMing() && GV->isDeclaration())
           // Save function name for later type emission
           FnStubs.insert(Name);
       }
@@ -499,7 +499,14 @@ bool X86ATTAsmPrinter::PrintAsmOperand(const MachineInstr *MI, unsigned OpNo,
     case 'h': // Print QImode high register
     case 'w': // Print HImode register
     case 'k': // Print SImode register
-      return printAsmMRegister(MI->getOperand(OpNo), ExtraCode[0]);
+      if (MI->getOperand(OpNo).isReg())
+        return printAsmMRegister(MI->getOperand(OpNo), ExtraCode[0]);
+      printOperand(MI, OpNo);
+      return false;
+      
+    case 'P': // Don't print @PLT, but do print as memory.
+      printOperand(MI, OpNo, "mem");
+      return false;
     }
   }