diff options
author | Chris Lattner <sabre@nondot.org> | 2008-01-02 19:44:55 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-01-02 19:44:55 +0000 |
commit | 7ad92d81e2c2d1fe8ae89e5638fc57925d747429 (patch) | |
tree | efff898ef958821e49367bb7174a60dd50f9e44c /lib/Target/X86/X86Subtarget.cpp | |
parent | 564da5d646dfeb56df931b42fefa7c5f2591057e (diff) |
darwin9 and above support aligned common symbols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45494 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/X86/X86Subtarget.cpp')
-rw-r--r-- | lib/Target/X86/X86Subtarget.cpp | 32 |
1 files changed, 22 insertions, 10 deletions
diff --git a/lib/Target/X86/X86Subtarget.cpp b/lib/Target/X86/X86Subtarget.cpp index ae36fac436..7b686edef3 100644 --- a/lib/Target/X86/X86Subtarget.cpp +++ b/lib/Target/X86/X86Subtarget.cpp @@ -221,6 +221,7 @@ X86Subtarget::X86Subtarget(const Module &M, const std::string &FS, bool is64Bit) , PICStyle(PICStyle::None) , X86SSELevel(NoMMXSSE) , HasX86_64(false) + , DarwinVers(0) , stackAlignment(8) // FIXME: this is a known good value for Yonah. How about others? , MaxInlineSizeThreshold(128) @@ -256,14 +257,22 @@ X86Subtarget::X86Subtarget(const Module &M, const std::string &FS, bool is64Bit) // if one cannot be determined, to true. const std::string& TT = M.getTargetTriple(); if (TT.length() > 5) { - if (TT.find("cygwin") != std::string::npos) + unsigned Pos; + if ((Pos = TT.find("-darwin")) != std::string::npos) { + TargetType = isDarwin; + + // Compute the darwin version number. + if (isdigit(TT[Pos+7])) + DarwinVers = atoi(&TT[Pos+7]); + else + DarwinVers = 8; // Minimum supported darwin is Tiger. + } else if (TT.find("cygwin") != std::string::npos) { TargetType = isCygwin; - else if (TT.find("mingw") != std::string::npos) + } else if (TT.find("mingw") != std::string::npos) { TargetType = isMingw; - else if (TT.find("darwin") != std::string::npos) - TargetType = isDarwin; - else if (TT.find("win32") != std::string::npos) + } else if (TT.find("win32") != std::string::npos) { TargetType = isWindows; + } } else if (TT.empty()) { #if defined(__CYGWIN__) TargetType = isCygwin; @@ -271,6 +280,12 @@ X86Subtarget::X86Subtarget(const Module &M, const std::string &FS, bool is64Bit) TargetType = isMingw; #elif defined(__APPLE__) TargetType = isDarwin; +#if __APPLE_CC__ > 5400 + DarwinVers = 9; // GCC 5400+ is Leopard. +#else + DarwinVers = 8; // Minimum supported darwin is Tiger. +#endif + #elif defined(_WIN32) TargetType = isWindows; #endif @@ -279,11 +294,8 @@ X86Subtarget::X86Subtarget(const Module &M, const std::string &FS, bool is64Bit) // If the asm syntax hasn't been overridden on the command line, use whatever // the target wants. if (AsmFlavor == X86Subtarget::Unset) { - if (TargetType == isWindows) { - AsmFlavor = X86Subtarget::Intel; - } else { - AsmFlavor = X86Subtarget::ATT; - } + AsmFlavor = (TargetType == isWindows) + ? X86Subtarget::Intel : X86Subtarget::ATT; } if (TargetType == isDarwin && Is64Bit) |