aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChad Rosier <mcrosier@apple.com>2012-05-16 20:40:09 +0000
committerChad Rosier <mcrosier@apple.com>2012-05-16 20:40:09 +0000
commitee9ad5ce4840b3c95024948c89d00945ffdda9bb (patch)
tree632bdaede5992a1c74c1340051f27a2d04c0b9ff
parentf158b7181cef728dfb5e340b6d51586742042836 (diff)
[driver] Allow the driver to directly accept the -no-implicit-float option, so that the
generation of implicit floating point instructions can be disable for ARM. rdar://11409142 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156942 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/Driver/CC1Options.td2
-rw-r--r--include/clang/Driver/Options.td2
-rw-r--r--lib/Driver/Tools.cpp3
-rw-r--r--test/Driver/flags.c2
4 files changed, 7 insertions, 2 deletions
diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td
index 90933f7ce1..8288c00687 100644
--- a/include/clang/Driver/CC1Options.td
+++ b/include/clang/Driver/CC1Options.td
@@ -146,8 +146,6 @@ def dwarf_debug_flags : Separate<"-dwarf-debug-flags">,
HelpText<"The string to embed in the Dwarf debug flags record.">;
def fforbid_guard_variables : Flag<"-fforbid-guard-variables">,
HelpText<"Emit an error if a C++ static local initializer would need a guard variable">;
-def no_implicit_float : Flag<"-no-implicit-float">,
- HelpText<"Don't generate implicit floating point instructions (x86-only)">;
def fdump_vtable_layouts : Flag<"-fdump-vtable-layouts">,
HelpText<"Dump the layouts of all vtables that will be emitted in a translation unit">;
def femit_coverage_notes : Flag<"-femit-coverage-notes">,
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td
index 62b8d3aa6c..5b50485062 100644
--- a/include/clang/Driver/Options.td
+++ b/include/clang/Driver/Options.td
@@ -800,6 +800,8 @@ def mrtd : Flag<"-mrtd">, Group<m_Group>, Flags<[CC1Option]>,
def msmall_data_threshold_EQ : Joined <"-msmall-data-threshold=">, Group<m_Group>;
def msoft_float : Flag<"-msoft-float">, Group<m_Group>, Flags<[CC1Option]>,
HelpText<"Use software floating point">;
+def no_implicit_float : Flag<"-no-implicit-float">, Flags<[CC1Option]>,
+ HelpText<"Don't generate implicit floating point instructions">;
def msse2 : Flag<"-msse2">, Group<m_x86_Features_Group>;
def msse3 : Flag<"-msse3">, Group<m_x86_Features_Group>;
def msse4a : Flag<"-msse4a">, Group<m_x86_Features_Group>;
diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp
index fcfee50859..8845f903be 100644
--- a/lib/Driver/Tools.cpp
+++ b/lib/Driver/Tools.cpp
@@ -755,6 +755,9 @@ void Clang::AddARMTargetArgs(const ArgList &Args,
if (A->getOption().matches(options::OPT_mno_global_merge))
CmdArgs.push_back("-mno-global-merge");
}
+
+ if (Args.hasArg(options::OPT_no_implicit_float))
+ CmdArgs.push_back("-no-implicit-float");
}
// Get default architecture.
diff --git a/test/Driver/flags.c b/test/Driver/flags.c
index 7a885b699b..fdb3e20ca4 100644
--- a/test/Driver/flags.c
+++ b/test/Driver/flags.c
@@ -7,3 +7,5 @@
// RUN: %clang -target i386-apple-darwin9 -### -S -mno-soft-float %s -msoft-float 2> %t.log
// RUN: grep '"-no-implicit-float"' %t.log
+// RUN: %clang -target armv7-apple-darwin10 -### -S -no-implicit-float %s 2> %t.log
+// RUN: grep '"-no-implicit-float"' %t.log | count 1