aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2015-04-28 23:18:33 +0000
committerEric Christopher <echristo@gmail.com>2015-04-28 23:18:33 +0000
commit52fa24172f2cb02684327d52c6ec932a216f456e (patch)
tree0225d3fb59c77c72cbdea510d3e9eca8d479ba46 /clang/lib/Driver/Tools.cpp
parent0a4ddc180b2da65343c2a2fd5deada5aeed11a8a (diff)
downloadllvm-52fa24172f2cb02684327d52c6ec932a216f456e.zip
llvm-52fa24172f2cb02684327d52c6ec932a216f456e.tar.gz
llvm-52fa24172f2cb02684327d52c6ec932a216f456e.tar.bz2
Stop emitting the soft-float and soft-float-abi target features
for ARM while the backend will only ignore them. No functional change intended. llvm-svn: 236060
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp24
1 files changed, 1 insertions, 23 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 1083799..6fb9b54 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -714,29 +714,6 @@ static void getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
const ArgList &Args,
std::vector<const char *> &Features,
bool ForAS) {
- StringRef FloatABI = tools::arm::getARMFloatABI(D, Args, Triple);
- if (!ForAS) {
- // FIXME: Note, this is a hack, the LLVM backend doesn't actually use these
- // yet (it uses the -mfloat-abi and -msoft-float options), and it is
- // stripped out by the ARM target. We should probably pass this a new
- // -target-option, which is handled by the -cc1/-cc1as invocation.
- //
- // FIXME2: For consistency, it would be ideal if we set up the target
- // machine state the same when using the frontend or the assembler. We don't
- // currently do that for the assembler, we pass the options directly to the
- // backend and never even instantiate the frontend TargetInfo. If we did,
- // and used its handleTargetFeatures hook, then we could ensure the
- // assembler and the frontend behave the same.
-
- // Use software floating point operations?
- if (FloatABI == "soft")
- Features.push_back("+soft-float");
-
- // Use software floating point argument passing?
- if (FloatABI != "hard")
- Features.push_back("+soft-float-abi");
- }
-
// Honor -mfpu=.
if (const Arg *A = Args.getLastArg(options::OPT_mfpu_EQ))
getARMFPUFeatures(D, A, Args, Features);
@@ -745,6 +722,7 @@ static void getARMTargetFeatures(const Driver &D, const llvm::Triple &Triple,
// Setting -msoft-float effectively disables NEON because of the GCC
// implementation, although the same isn't true of VFP or VFP3.
+ StringRef FloatABI = tools::arm::getARMFloatABI(D, Args, Triple);
if (FloatABI == "soft") {
Features.push_back("-neon");
// Also need to explicitly disable features which imply NEON.