summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2009-07-09 06:59:17 +0000
committerChris Lattner <sabre@nondot.org>2009-07-09 06:59:17 +0000
commit72e3deca47965d054c1e3e4d2fc46cdf7ce62794 (patch)
tree2593ce5b0171b2dcf79466f26add0d5ae29faf16 /llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
parent7452c968e440dbf8971011e7852e4bb61bb31c7b (diff)
downloadbcm5719-llvm-72e3deca47965d054c1e3e4d2fc46cdf7ce62794.tar.gz
bcm5719-llvm-72e3deca47965d054c1e3e4d2fc46cdf7ce62794.zip
move reasoning about darwin $non_lazy_ptr stubs from asmprinter into
isel. llvm-svn: 75117
Diffstat (limited to 'llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp')
-rw-r--r--llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp40
1 files changed, 17 insertions, 23 deletions
diff --git a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
index b97462918dd..44d1e25461d 100644
--- a/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
+++ b/llvm/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp
@@ -429,28 +429,16 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
}
// Handle dllimport linkage.
- if (MO.getTargetFlags() == X86II::MO_DLLIMPORT)
- O << "__imp_";
-
- if (Subtarget->isPICStyleStub()) {
- // DARWIN/X86-32 in != static mode.
-
- // Link-once, declaration, or Weakly-linked global variables need
- // non-lazily-resolved stubs
- if (!GV->isDeclaration() && !GV->isWeakForLinker()) {
- O << Name;
- } else if (!GV->hasHiddenVisibility()) {
- GVStubs.insert(Name);
- printSuffixedName(Name, "$non_lazy_ptr");
- //assert(MO.getTargetFlags() == 0 || MO_PIC_BASE_OFFSET);
- } else if (!GV->isDeclaration() && !GV->hasCommonLinkage())
- // Definition is not definitely in the current translation unit.
- O << Name;
- else {
- HiddenGVStubs.insert(Name);
- printSuffixedName(Name, "$non_lazy_ptr");
- //assert(MO.getTargetFlags() == 0 || MO_PIC_BASE_OFFSET);
- }
+ if (MO.getTargetFlags() == X86II::MO_DLLIMPORT) {
+ O << "__imp_" << Name;
+ } else if (MO.getTargetFlags() == X86II::MO_DARWIN_NONLAZY ||
+ MO.getTargetFlags() == X86II::MO_DARWIN_NONLAZY_PIC_BASE) {
+ GVStubs.insert(Name);
+ printSuffixedName(Name, "$non_lazy_ptr");
+ } else if (MO.getTargetFlags() == X86II::MO_DARWIN_HIDDEN_NONLAZY ||
+ MO.getTargetFlags() == X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE){
+ HiddenGVStubs.insert(Name);
+ printSuffixedName(Name, "$non_lazy_ptr");
} else {
O << Name;
}
@@ -478,7 +466,11 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
default:
assert(0 && "Unknown target flag on GV operand");
case X86II::MO_NO_FLAG: // No flag.
- case X86II::MO_DLLIMPORT: // Prefix, not a suffix.
+ break;
+ case X86II::MO_DARWIN_NONLAZY:
+ case X86II::MO_DARWIN_HIDDEN_NONLAZY:
+ case X86II::MO_DLLIMPORT:
+ // These affect the name of the symbol, not any suffix.
break;
case X86II::MO_GOT_ABSOLUTE_ADDRESS:
O << " + [.-";
@@ -486,6 +478,8 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo,
O << ']';
break;
case X86II::MO_PIC_BASE_OFFSET:
+ case X86II::MO_DARWIN_NONLAZY_PIC_BASE:
+ case X86II::MO_DARWIN_HIDDEN_NONLAZY_PIC_BASE:
O << '-';
PrintPICBaseSymbol();
break;
OpenPOWER on IntegriCloud