aboutsummaryrefslogtreecommitdiff
path: root/lib/Basic/Targets.cpp
AgeCommit message (Collapse)Author
2011-03-23Implement a new 'availability' attribute, that allows one to specifyDouglas Gregor
which versions of an OS provide a certain facility. For example, void foo() __attribute__((availability(macosx,introduced=10.2,deprecated=10.4,obsoleted=10.6))); says that the function "foo" was introduced in 10.2, deprecated in 10.4, and completely obsoleted in 10.6. This attribute ties in with the deployment targets (e.g., -mmacosx-version-min=10.1 specifies that we want to deploy back to Mac OS X 10.1). There are several concrete behaviors that this attribute enables, as illustrated with the function foo() above: - If we choose a deployment target >= Mac OS X 10.4, uses of "foo" will result in a deprecation warning, as if we had placed attribute((deprecated)) on it (but with a better diagnostic) - If we choose a deployment target >= Mac OS X 10.6, uses of "foo" will result in an "unavailable" warning (in C)/error (in C++), as if we had placed attribute((unavailable)) on it - If we choose a deployment target prior to 10.2, foo() is weak-imported (if it is a kind of entity that can be weak imported), as if we had placed the weak_import attribute on it. Naturally, there can be multiple availability attributes on a declaration, for different platforms; only the current platform matters when checking availability attributes. The only platforms this attribute currently works for are "ios" and "macosx", since we already have -mxxxx-version-min flags for them and we have experience there with macro tricks translating down to the deprecated/unavailable/weak_import attributes. The end goal is to open this up to other platforms, and even extension to other "platforms" that are really libraries (say, through a #pragma clang define_system), but that hasn't yet been designed and we may want to shake out more issues with this narrower problem first. Addresses <rdar://problem/6690412>. As a drive-by bug-fix, if an entity is both deprecated and unavailable, we only emit the "unavailable" diagnostic. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128127 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-22Make the definition of "long double" consistent for llvm::Triple::Win32 forEli Friedman
both 32-bit and 64-bit targets. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128110 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-21Another cortex-m0 patch from James Orr.Bob Wilson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@128029 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-19Unbreak build.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127942 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-15lib/Basic/Targets.cpp: __declspec(attr) should be provided on mingw as ↵NAKAMURA Takumi
macro, alias of __attribute__. On mingw without -fms-extensions, we can provide "as-is" __declspec. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127655 91177308-0d34-0410-b5e6-96231b3b80d8
2011-03-08lib/Basic/Targets.cpp: mingw-w64 should define __MINGW32__, too.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@127238 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-21Targets/Darwin: mcount name on Darwin needs to be unmangled.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126152 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-19Re-instate r125819 and r125820 with no functionality changePeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126060 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-19Revert 125820 and 125819 to fix PR9266.Rafael Espindola
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126050 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-18[Heikki Kultala] This patch contains the ABI changes for the TCE target.NAKAMURA Takumi
TCE target has some too strict alignment rules (that the HW really does not require, but which caused problems elsewhere) for data types and an ABI change was decided. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125833 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-18Move TargetInfo::adjustInlineAsmType to TargetCodeGenInfoPeter Collingbourne
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125819 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-17Triple::MinGW64 is deprecated and removed. We can use Triple::MinGW32 instead.NAKAMURA Takumi
No one uses *-mingw64. mingw-w64 is represented as {i686|x86_64}-w64-mingw32. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125742 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-10Implement mcount profiling, enabled via -pg.Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125282 91177308-0d34-0410-b5e6-96231b3b80d8
2011-02-01Support EFI target triple, from Carl Norum!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@124660 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-17lib/Basic/Targets.cpp: __builtin_va_list is as same on win64 mingw64!NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123691 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-17lib/Basic/Targets.cpp: Fix __declspec() on Mingw-w64.NAKAMURA Takumi
It should be defined as-is. Some headers would detect existence of __declspec and use one. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123690 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-17lib/Basic/Targets.cpp: Set user_label_prefix on Win64 both mingw and msvc.NAKAMURA Takumi
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123689 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-12wint_t is defined as 'unsigned int' on Linux. Fixes PR8938.Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123320 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06Add cortex-m3 CPU to getCPUDefineSuffix mapping.Bob Wilson
Patch by Sylvère Teissier. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122965 91177308-0d34-0410-b5e6-96231b3b80d8
2011-01-06PowerPC fixes.Roman Divacky
Fix the width and align of bool type on Darwin to be 32bits while keeping it 8 everywhere else. Change the definition of va_list to default to SV4 ABI one and let darwin subtarget override this. Both changes submitted by Nathan Whitehorn and reviewed by Rafael Espindola. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122956 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-29set features for k8-sse3Roman Divacky
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122629 91177308-0d34-0410-b5e6-96231b3b80d8
2010-12-12Change MBlaze target to have the same description string as its LLVM equivalent.Wesley Peck
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@121640 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-30Such function decls,as objc's objc_msgSend, builtins in Fariborz Jahanian
a specific language. We are adding such language info. by extensing Builtins.def and via a language flag added to LIBBUILTIN/BUILTIN and check for that when deciding a name is builtin or not. Implements //rdar://8689273. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120429 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Add support for soft/hard float options to the Sparc targetBruno Cardoso Lopes
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118514 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-09Include System/DataTypes.h in Diagnostic.h to get intptr_t.Rafael Espindola
Set Haiku's UserLabelPrefix to "". Patch by Paul Davey. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@118510 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-29Handle Type.h a better way.Dale Johannesen
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117743 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-29Generate bitcasts going in and out of MMX parametersDale Johannesen
in asm's. PR 8501, 8602988. I don't like including Type.h where it is; the idea was to get references to X86_MMXTy out of the common code. Maybe there's a better way? git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117736 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-28Ahem. Add rest of D and Q registers to ARM inline asm handling.Dale Johannesen
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117517 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-27Add D and Q register names to ARM inline asm handling.Dale Johannesen
No aliasing is needed, these work as given in the BE. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117508 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-22Change handling of inline asm 'p' constraint to match llvm-gcc.Dale Johannesen
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117149 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Revert r117005, WIN32 is not predefined after all.Francois Pichet
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117026 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21MSVC defines WIN32 as a predefined macro.Francois Pichet
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117005 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Targets: Fix MinGW and VisualStudio predefined macros.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@117003 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Reorganize predefined macros for all Windows targets.Michael J. Spencer
This adds an option to set the _MSC_VER macro without recompiling. This is very useful when testing compatibility with the Windows SDK and c++stdlib headers. -fmsc-version=<version> (defaults to VS2003 (1300)) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116999 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Fix Whitespace.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116990 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Revert "Cleanup and fix predefined macros for windows."Michael J. Spencer
Didn't realize this was on my branch ;/. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116989 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-21Cleanup and fix predefined macros for windows.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116988 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-18CodeGen: Fix long double on Windows using MSVC runtime.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116700 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-18Fix Whitespace.Michael J. Spencer
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116699 91177308-0d34-0410-b5e6-96231b3b80d8
2010-10-11Per discussion with Sanjiv, remove the PIC16 target from mainline. When/ifChris Lattner
it comes back, it will be largely a rewrite, so keeping the old codebase in tree isn't helping anyone. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@116191 91177308-0d34-0410-b5e6-96231b3b80d8
2010-09-15Fix Windows64 target info so pointer arithmetic is done correctly, and no ↵Cameron Esfahani
sign extension code is emitted: PtrDiffType needs to be a signed long long. Add a corresponding test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@113910 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-31Add support for windows x86-64 varargs, patch by Cameron Esfahani!Chris Lattner
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@112603 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-24Add some missing X86-specific asm constraint letters, and fixDale Johannesen
some bugs in setting allowsRegister on the ones there. 8348447. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111980 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-22Detabify.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111768 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-21The ARM C++ ABI is sufficiently different from the Itanium C++ ABI thatJohn McCall
it deserves its own enumerator. Obviously the implementations should closely follow the Itanium ABI except in cases of divergence. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111749 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17Get rid of pretty non-ASCII quotes.Sebastian Redl
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111316 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-17apparently msvc defines _STDCALL_SUPPORTED, so we shouldChris Lattner
too. Patch by Per Linden! git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111236 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11ARM: Recognize single precision float register names.Daniel Dunbar
- We don't recognize double or NEON register names yet -- we don't have the infrastructure to generate the right clobbers for them. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110775 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-11ARM: Swap which registers we consider real / aliases to match LLVM and llvm-gcc.Daniel Dunbar
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110774 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-06Define _INTEGRAL_MAX_BITS for the win32 and win64 targets, from Per Lindén!Douglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@110442 91177308-0d34-0410-b5e6-96231b3b80d8