From: Evan Cheng Date: Sat, 20 Sep 2008 00:13:45 +0000 (+0000) Subject: No need to print function stubs for Mac OS X 10.5 and up. Linker will handle it. X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=91a23c82338819564ffa3a4af8aa4b462da7b3b0;p=oota-llvm.git No need to print function stubs for Mac OS X 10.5 and up. Linker will handle it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56378 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp index 6977ead58e1..678b619f7ee 100644 --- a/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp +++ b/lib/Target/X86/AsmPrinter/X86ATTAsmPrinter.cpp @@ -392,8 +392,13 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, if (GV->isDeclaration() || GV->isWeakForLinker()) { // Dynamically-resolved functions need a stub for the function. if (isCallOp && isa(GV)) { - FnStubs.insert(Name); - printSuffixedName(Name, "$stub"); + // Function stubs are no longer needed for Mac OS X 10.5 and up. + if (Subtarget->isTargetDarwin() && Subtarget->getDarwinVers() >= 9) { + O << Name; + } else { + FnStubs.insert(Name); + printSuffixedName(Name, "$stub"); + } } else { GVStubs.insert(Name); printSuffixedName(Name, "$non_lazy_ptr"); @@ -475,7 +480,9 @@ void X86ATTAsmPrinter::printOperand(const MachineInstr *MI, unsigned OpNo, bool needCloseParen = false; std::string Name(TAI->getGlobalPrefix()); Name += MO.getSymbolName(); - if (isCallOp && shouldPrintStub(TM, Subtarget)) { + // Print function stub suffix unless it's Mac OS X 10.5 and up. + if (isCallOp && shouldPrintStub(TM, Subtarget) && + !(Subtarget->isTargetDarwin() && Subtarget->getDarwinVers() >= 9)) { FnStubs.insert(Name); printSuffixedName(Name, "$stub"); return; diff --git a/test/CodeGen/X86/darwin-stub.ll b/test/CodeGen/X86/darwin-stub.ll new file mode 100644 index 00000000000..79eb31ac0fd --- /dev/null +++ b/test/CodeGen/X86/darwin-stub.ll @@ -0,0 +1,12 @@ +; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin | grep stub +; RUN: llvm-as < %s | llc -mtriple=i386-apple-darwin9 | not grep stub + +@"\01LC" = internal constant [13 x i8] c"Hello World!\00" ; <[13 x i8]*> [#uses=1] + +define i32 @main() nounwind { +entry: + %0 = tail call i32 @puts(i8* getelementptr ([13 x i8]* @"\01LC", i32 0, i32 0)) nounwind ; [#uses=0] + ret i32 0 +} + +declare i32 @puts(i8*)