summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2013-03-30 13:47:44 +0000
committerHal Finkel <hfinkel@anl.gov>2013-03-30 13:47:44 +0000
commit7d4585973a5e5aecfc8ffaf74d4b7f87193d0ed5 (patch)
tree6cfc2d1093a74c4fdf18e9efe0e3cf4391881b0f
parent06c44dce738d5ccfc236c096b215276d0d69e724 (diff)
downloadbcm5719-llvm-7d4585973a5e5aecfc8ffaf74d4b7f87193d0ed5.tar.gz
bcm5719-llvm-7d4585973a5e5aecfc8ffaf74d4b7f87193d0ed5.zip
Add support for gcc-compatible -mfprnd -mno-fprnd PPC options
gcc provides -mfprnd and -mno-fprnd for controlling the fprnd target feature; support these options as well. llvm-svn: 178414
-rw-r--r--clang/include/clang/Driver/Options.td2
-rw-r--r--clang/lib/Basic/Targets.cpp4
-rw-r--r--clang/lib/Driver/Tools.cpp4
-rw-r--r--clang/test/Driver/ppc-features.cpp6
4 files changed, 14 insertions, 2 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index a8e9d59b6e0..6aea22f7cda 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -834,6 +834,8 @@ def mabi_EQ : Joined<["-"], "mabi=">, Group<m_Group>;
def march_EQ : Joined<["-"], "march=">, Group<m_Group>;
def maltivec : Flag<["-"], "maltivec">, Alias<faltivec>;
def mno_altivec : Flag<["-"], "mno-altivec">, Alias<fno_altivec>;
+def mfprnd : Flag<["-"], "mfprnd">, Group<m_Group>;
+def mno_fprnd : Flag<["-"], "mno-fprnd">, Group<m_Group>;
def mmfcrf : Flag<["-"], "mmfcrf">, Group<m_Group>;
def mno_mfcrf : Flag<["-"], "mno-mfcrf">, Group<m_Group>;
def mpopcntd : Flag<["-"], "mpopcntd">, Group<m_Group>;
diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp
index bd3f76df42e..a17b2a8256f 100644
--- a/clang/lib/Basic/Targets.cpp
+++ b/clang/lib/Basic/Targets.cpp
@@ -1029,8 +1029,8 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap<bool> &Features) const {
bool PPCTargetInfo::setFeatureEnabled(llvm::StringMap<bool> &Features,
StringRef Name,
bool Enabled) const {
- if (Name == "altivec" || Name == "mfocrf" || Name == "popcntd" ||
- Name == "qpx") {
+ if (Name == "altivec" || Name == "fprnd" || Name == "mfocrf" ||
+ Name == "popcntd" || Name == "qpx") {
Features[Name] = Enabled;
return true;
}
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index c96d5a48046..b3a2680bae0 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -1101,6 +1101,10 @@ void Clang::AddPPCTargetArgs(const ArgList &Args,
options::OPT_faltivec, options::OPT_fno_altivec,
"altivec");
+ AddTargetFeature(Args, CmdArgs,
+ options::OPT_mfprnd, options::OPT_mno_fprnd,
+ "fprnd");
+
// Note that gcc calls this mfcrf and LLVM calls this mfocrf.
AddTargetFeature(Args, CmdArgs,
options::OPT_mmfcrf, options::OPT_mno_mfcrf,
diff --git a/clang/test/Driver/ppc-features.cpp b/clang/test/Driver/ppc-features.cpp
index 901c676fe1d..be78e19861b 100644
--- a/clang/test/Driver/ppc-features.cpp
+++ b/clang/test/Driver/ppc-features.cpp
@@ -80,3 +80,9 @@
// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-popcntd -mpopcntd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-POPCNTD %s
// CHECK-POPCNTD: "-target-feature" "+popcntd"
+// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-fprnd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-NOFPRND %s
+// CHECK-NOFPRND: "-target-feature" "-fprnd"
+
+// RUN: %clang -target powerpc64-unknown-linux-gnu %s -mno-fprnd -mfprnd -### -o %t.o 2>&1 | FileCheck -check-prefix=CHECK-FPRND %s
+// CHECK-FPRND: "-target-feature" "+fprnd"
+
OpenPOWER on IntegriCloud