summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2013-04-14 08:37:15 +0000
committerSimon Atanasyan <simon@atanasyan.com>2013-04-14 08:37:15 +0000
commit512dc38f817ccc3aaea3d642584b3ca2c4d734d3 (patch)
treed9071b8efc022e309f974438e4d6327b62348dcb /clang/lib
parentefa56e18be29c5db060b4fd488a952c30a4c92ff (diff)
downloadbcm5719-llvm-512dc38f817ccc3aaea3d642584b3ca2c4d734d3.tar.gz
bcm5719-llvm-512dc38f817ccc3aaea3d642584b3ca2c4d734d3.zip
[Mips] Remove "single" from the list of valid MIPS float ABI names. Add
two new options –msingle-float and –mdouble-float. These options can be used simultaneously with float ABI selection options (-mfloat-abi, -mhard-float, -msoft-float). They mark whether a floating-point coprocessor supports double-precision operations. llvm-svn: 179481
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/Driver/Tools.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 7cec709541b..c144a588ac3 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -911,7 +911,7 @@ static StringRef getMipsFloatABI(const Driver &D, const ArgList &Args) {
FloatABI = "hard";
else {
FloatABI = A->getValue();
- if (FloatABI != "soft" && FloatABI != "single" && FloatABI != "hard") {
+ if (FloatABI != "soft" && FloatABI != "hard") {
D.Diag(diag::err_drv_invalid_mfloat_abi) << A->getAsString(Args);
FloatABI = "hard";
}
@@ -977,12 +977,6 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args,
CmdArgs.push_back("-mips16-hard-float");
}
}
- else if (FloatABI == "single") {
- // Restrict the use of hardware floating-point
- // instructions to 32-bit operations.
- CmdArgs.push_back("-target-feature");
- CmdArgs.push_back("+single-float");
- }
else {
// Floating point operations and argument passing are hard.
assert(FloatABI == "hard" && "Invalid float abi!");
@@ -990,6 +984,16 @@ void Clang::AddMIPSTargetArgs(const ArgList &Args,
CmdArgs.push_back("hard");
}
+ if (Arg *A = Args.getLastArg(options::OPT_msingle_float,
+ options::OPT_mdouble_float)) {
+ if (A->getOption().matches(options::OPT_msingle_float)) {
+ // Restrict the use of hardware floating-point
+ // instructions to 32-bit operations.
+ CmdArgs.push_back("-target-feature");
+ CmdArgs.push_back("+single-float");
+ }
+ }
+
AddTargetFeature(Args, CmdArgs,
options::OPT_mips16, options::OPT_mno_mips16,
"mips16");
OpenPOWER on IntegriCloud