If -fslp-vectorize or -fno-slp-vectorize are given, honor this selection. If no flag is given, enable it for -O3.

llvm-svn: 187630
This commit is contained in:
Nadav Rotem 2013-08-01 22:56:53 +00:00
parent 87dc60761f
commit 9562d4a2d7
1 changed files with 17 additions and 3 deletions

View File

@ -1974,6 +1974,12 @@ static bool isOptimizationLevelFast(const ArgList &Args) {
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, const JobAction &JA,
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.