]> granicus.if.org Git - clang/commitdiff
Add support for gcc-compatible -mfprnd -mno-fprnd PPC options
authorHal Finkel <hfinkel@anl.gov>
Sat, 30 Mar 2013 13:47:44 +0000 (13:47 +0000)
committerHal Finkel <hfinkel@anl.gov>
Sat, 30 Mar 2013 13:47:44 +0000 (13:47 +0000)
gcc provides -mfprnd and -mno-fprnd for controlling the fprnd target
feature; support these options as well.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178414 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Options.td
lib/Basic/Targets.cpp
lib/Driver/Tools.cpp
test/Driver/ppc-features.cpp

index a8e9d59b6e06caa08a768ce901f7c449b5d43f4f..6aea22f7cdab70392530465ea794a2e0b70f4d6f 100644 (file)
@@ -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>;
index bd3f76df42e26423445491f358b250342f3ef435..a17b2a8256fcbc8d7097658b203e72ba676e2d30 100644 (file)
@@ -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;
   }
index c96d5a48046b524819d40f2961d57bd725856531..b3a2680bae08906774d4019bb1de74b389a9bea4 100644 (file)
@@ -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,
index 901c676fe1dee49780b1ac25af41f18d81b9b00f..be78e19861b33b9d6e6e4840626297af86098b8d 100644 (file)
@@ -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"
+