From: Hal Finkel Date: Sat, 30 Mar 2013 13:47:44 +0000 (+0000) Subject: Add support for gcc-compatible -mfprnd -mno-fprnd PPC options X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fe6b2713656c2d1bf559be357f0e0bf2d09bebd6;p=clang 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. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178414 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index a8e9d59b6e..6aea22f7cd 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -834,6 +834,8 @@ def mabi_EQ : Joined<["-"], "mabi=">, Group; def march_EQ : Joined<["-"], "march=">, Group; def maltivec : Flag<["-"], "maltivec">, Alias; def mno_altivec : Flag<["-"], "mno-altivec">, Alias; +def mfprnd : Flag<["-"], "mfprnd">, Group; +def mno_fprnd : Flag<["-"], "mno-fprnd">, Group; def mmfcrf : Flag<["-"], "mmfcrf">, Group; def mno_mfcrf : Flag<["-"], "mno-mfcrf">, Group; def mpopcntd : Flag<["-"], "mpopcntd">, Group; diff --git a/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp index bd3f76df42..a17b2a8256 100644 --- a/lib/Basic/Targets.cpp +++ b/lib/Basic/Targets.cpp @@ -1029,8 +1029,8 @@ void PPCTargetInfo::getDefaultFeatures(llvm::StringMap &Features) const { bool PPCTargetInfo::setFeatureEnabled(llvm::StringMap &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/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index c96d5a4804..b3a2680bae 100644 --- a/lib/Driver/Tools.cpp +++ b/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/test/Driver/ppc-features.cpp b/test/Driver/ppc-features.cpp index 901c676fe1..be78e19861 100644 --- a/test/Driver/ppc-features.cpp +++ b/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" +