diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-11-21 22:39:40 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-11-21 22:39:40 +0000 |
| commit | 99be8f766f9f009af908ece19ca2183cb01025da (patch) | |
| tree | 693f30ad459c9b4ae3ecb14f853a022ec272f273 /llvm/lib | |
| parent | 3eb876117adab1341757e12428a2c236e82180a7 (diff) | |
| download | bcm5719-llvm-99be8f766f9f009af908ece19ca2183cb01025da.tar.gz bcm5719-llvm-99be8f766f9f009af908ece19ca2183cb01025da.zip | |
Use subtarget information computed by X86Subtarget instead of rolling our own.
llvm-svn: 24477
Diffstat (limited to 'llvm/lib')
| -rwxr-xr-x | llvm/lib/Target/X86/X86ATTAsmPrinter.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Target/X86/X86AsmPrinter.cpp | 47 | ||||
| -rwxr-xr-x | llvm/lib/Target/X86/X86AsmPrinter.h | 2 |
3 files changed, 22 insertions, 29 deletions
diff --git a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp index 7420012d70c..9a21e617b85 100755 --- a/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86ATTAsmPrinter.cpp @@ -54,7 +54,7 @@ bool X86ATTAsmPrinter::runOnMachineFunction(MachineFunction &MF) { printMachineInstruction(II); } } - if (!forDarwin) + if (forELF) O << "\t.size " << CurrentFnName << ", .-" << CurrentFnName << "\n"; // We didn't modify anything. diff --git a/llvm/lib/Target/X86/X86AsmPrinter.cpp b/llvm/lib/Target/X86/X86AsmPrinter.cpp index 5b9742bd440..7fbdf4f918f 100644 --- a/llvm/lib/Target/X86/X86AsmPrinter.cpp +++ b/llvm/lib/Target/X86/X86AsmPrinter.cpp @@ -16,6 +16,7 @@ #include "X86ATTAsmPrinter.h" #include "X86IntelAsmPrinter.h" +#include "X86Subtarget.h" #include "X86.h" #include "llvm/Module.h" #include "llvm/Type.h" @@ -40,30 +41,16 @@ AsmWriterFlavor("x86-asm-syntax", /// doInitialization bool X86SharedAsmPrinter::doInitialization(Module &M) { - bool forCygwin = false; + const X86Subtarget *Subtarget = &TM.getSubtarget<X86Subtarget>(); + + forELF = false; forDarwin = false; - forELF = false; - bool forWin32 = false; - const std::string& TT = M.getTargetTriple(); - if (TT.length() > 5) { - forCygwin = TT.find("cygwin") != std::string::npos || - TT.find("mingw") != std::string::npos; - forDarwin = TT.find("darwin") != std::string::npos; - if (!forDarwin && !forCygwin) - forELF = true; - } else if (TT.empty()) { -#if defined(__CYGWIN__) || defined(__MINGW32__) - forCygwin = true; -#elif defined(__APPLE__) - forDarwin = true; -#elif defined(_WIN32) - forWin32 = true; -#else + + switch (Subtarget->TargetType) { + case X86Subtarget::isELF: forELF = true; -#endif - } - - if (forDarwin) { + break; + case X86Subtarget::isDarwin: AlignmentIsInBytes = false; GlobalPrefix = "_"; Data64bitsDirective = 0; // we can't emit a 64-bit unit @@ -72,12 +59,17 @@ bool X86SharedAsmPrinter::doInitialization(Module &M) { ConstantPoolSection = "\t.const\n"; LCOMMDirective = "\t.lcomm\t"; COMMDirectiveTakesAlignment = false; - } else if (forCygwin) { + forDarwin = true; + break; + case X86Subtarget::isCygwin: GlobalPrefix = "_"; COMMDirectiveTakesAlignment = false; - } else if (forWin32) { + break; + case X86Subtarget::isWindows: GlobalPrefix = "_"; - } + break; + default: break; + } return AsmPrinter::doInitialization(M); } @@ -87,7 +79,7 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { // Print out module-level global variables here. for (Module::const_global_iterator I = M.global_begin(), - E = M.global_end(); I != E; ++I) + E = M.global_end(); I != E; ++I) { if (I->hasInitializer()) { // External global require no code O << "\n\n"; std::string name = Mang->getValueName(I); @@ -155,7 +147,8 @@ bool X86SharedAsmPrinter::doFinalization(Module &M) { O << "\n"; EmitGlobalConstant(C); } - + } + if (forDarwin) { SwitchSection("", 0); // Output stubs for external global variables diff --git a/llvm/lib/Target/X86/X86AsmPrinter.h b/llvm/lib/Target/X86/X86AsmPrinter.h index 649ec4d0247..1f3f40dd408 100755 --- a/llvm/lib/Target/X86/X86AsmPrinter.h +++ b/llvm/lib/Target/X86/X86AsmPrinter.h @@ -35,7 +35,7 @@ struct X86SharedAsmPrinter : public AsmPrinter { bool doFinalization(Module &M); bool forELF; - bool forDarwin; + bool forDarwin; // FIXME: eliminate. // Necessary for Darwin to print out the apprioriate types of linker stubs std::set<std::string> FnStubs, GVStubs, LinkOnceStubs; |

