diff options
author | David Tweed <david.tweed@arm.com> | 2012-10-25 13:33:01 +0000 |
---|---|---|
committer | David Tweed <david.tweed@arm.com> | 2012-10-25 13:33:01 +0000 |
commit | b16abb1bd8ed94c7994836de24915703e6a4e81a (patch) | |
tree | cfa791889a7ed8c5af2f75af6d52bd192d3b114f /lib/Basic/Targets.cpp | |
parent | 34b41f80aad3679c545a4ba9bca9c1a318d41844 (diff) |
Modify the targets to set appropriate calling convention defaults and C variables when using a gnueabihf or aapcs-vfp target.
Tested by me and Wei-Ren Chen.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@166679 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Basic/Targets.cpp')
-rw-r--r-- | lib/Basic/Targets.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index ba96185f72..9b758d1c21 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -3077,7 +3077,7 @@ public: } // FIXME: Override "preferred align" for double and long long. - } else if (Name == "aapcs") { + } else if (Name == "aapcs" || Name == "aapcs-vfp") { IsAAPCS = true; // FIXME: Enumerated types are variable width in straight AAPCS. } else if (Name == "aapcs-linux") { @@ -3212,13 +3212,13 @@ public: if ('5' <= CPUArch[0] && CPUArch[0] <= '7') Builder.defineMacro("__THUMB_INTERWORK__"); - if (ABI == "aapcs" || ABI == "aapcs-linux") { + if (ABI == "aapcs" || ABI == "aapcs-linux" || ABI == "aapcs-vfp") { // M-class CPUs on Darwin follow AAPCS, but not EABI. if (!(getTriple().isOSDarwin() && CPUProfile == "M")) Builder.defineMacro("__ARM_EABI__"); Builder.defineMacro("__ARM_PCS", "1"); - if (!SoftFloat && !SoftFloatABI) + if ((!SoftFloat && !SoftFloatABI) || ABI == "aapcs-vfp") Builder.defineMacro("__ARM_PCS_VFP", "1"); } |