svn commit: r255061 - projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver
Andrew Turner
andrew at FreeBSD.org
Fri Aug 30 08:25:08 UTC 2013
Author: andrew
Date: Fri Aug 30 08:25:07 2013
New Revision: 255061
URL: http://svnweb.freebsd.org/changeset/base/255061
Log:
Start supporting the ARM EABI Hard-Float ABI in clang
Modified:
projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
Modified: projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp
==============================================================================
--- projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Fri Aug 30 07:59:49 2013 (r255060)
+++ projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp Fri Aug 30 08:25:07 2013 (r255061)
@@ -1841,6 +1841,7 @@ Tool *FreeBSD::buildLinker() const {
bool FreeBSD::UseSjLjExceptions() const {
// FreeBSD uses SjLj exceptions on ARM oabi.
switch (getTriple().getEnvironment()) {
+ case llvm::Triple::GNUEABIHF:
case llvm::Triple::GNUEABI:
case llvm::Triple::EABI:
return false;
Modified: projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/Tools.cpp
==============================================================================
--- projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/Tools.cpp Fri Aug 30 07:59:49 2013 (r255060)
+++ projects/arm_eabi_vfp/contrib/llvm/tools/clang/lib/Driver/Tools.cpp Fri Aug 30 08:25:07 2013 (r255061)
@@ -660,8 +660,15 @@ static StringRef getARMFloatABI(const Dr
}
case llvm::Triple::FreeBSD:
- // FreeBSD defaults to soft float
- FloatABI = "soft";
+ switch(Triple.getEnvironment()) {
+ case llvm::Triple::GNUEABIHF:
+ FloatABI = "hard";
+ break;
+ default:
+ // FreeBSD defaults to soft float
+ FloatABI = "soft";
+ break;
+ }
break;
default:
@@ -5401,8 +5408,18 @@ void freebsd::Assemble::ConstructJob(Com
}
} else if (getToolChain().getArch() == llvm::Triple::arm ||
getToolChain().getArch() == llvm::Triple::thumb) {
- CmdArgs.push_back("-mfpu=softvfp");
+ const Driver &D = getToolChain().getDriver();
+ llvm::Triple Triple = getToolChain().getTriple();
+ StringRef FloatABI = getARMFloatABI(D, Args, Triple);
+
+ if (FloatABI == "hard") {
+ CmdArgs.push_back("-mfpu=vfp");
+ } else {
+ CmdArgs.push_back("-mfpu=softvfp");
+ }
+
switch(getToolChain().getTriple().getEnvironment()) {
+ case llvm::Triple::GNUEABIHF:
case llvm::Triple::GNUEABI:
case llvm::Triple::EABI:
CmdArgs.push_back("-meabi=5");
More information about the svn-src-projects
mailing list