r187630 - If -fslp-vectorize or -fno-slp-vectorize are given, honor this selection. If no flag is given, enable it for -O3.
Nadav Rotem
nrotem at apple.com
Thu Aug 1 15:56:54 PDT 2013
Author: nadav
Date: Thu Aug 1 17:56:53 2013
New Revision: 187630
URL: http://llvm.org/viewvc/llvm-project?rev=187630&view=rev
Log:
If -fslp-vectorize or -fno-slp-vectorize are given, honor this selection. If no flag is given, enable it for -O3.
Modified:
cfe/trunk/lib/Driver/Tools.cpp
Modified: cfe/trunk/lib/Driver/Tools.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/Tools.cpp?rev=187630&r1=187629&r2=187630&view=diff
==============================================================================
--- cfe/trunk/lib/Driver/Tools.cpp (original)
+++ cfe/trunk/lib/Driver/Tools.cpp Thu Aug 1 17:56:53 2013
@@ -1974,6 +1974,12 @@ static bool isOptimizationLevelFast(cons
return false;
}
+static bool isOptimizationLevel3(const ArgList &Args) {
+ if (Arg *A = Args.getLastArg(options::OPT_O_Group))
+ return StringRef(A->getValue()).equals("3");
+ return false;
+}
+
void Clang::ConstructJob(Compilation &C, const JobAction &JA,
const InputInfo &Output,
const InputInfoList &Inputs,
@@ -3452,9 +3458,17 @@ void Clang::ConstructJob(Compilation &C,
options::OPT_fno_vectorize, true))
CmdArgs.push_back("-vectorize-loops");
- // -fslp-vectorize is default.
- if (Args.hasFlag(options::OPT_fslp_vectorize,
- options::OPT_fno_slp_vectorize, true))
+ bool EnableSLP = false;
+ // If -fslp-vectorize or -fno-slp-vectorize are given, honor this selection.
+ if (Arg *A = Args.getLastArg(options::OPT_fslp_vectorize,
+ options::OPT_fno_slp_vectorize)) {
+ EnableSLP = A->getOption().matches(options::OPT_fslp_vectorize);
+ } else {
+ // Also enable SLP vectorization on O3 or OFast
+ EnableSLP = isOptimizationLevel3(Args) || isOptimizationLevelFast(Args);
+ }
+
+ if (EnableSLP)
CmdArgs.push_back("-vectorize-slp");
// -fno-slp-vectorize-aggressive is default.
More information about the cfe-commits
mailing list