summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHal Finkel <hfinkel@anl.gov>2013-08-28 05:21:45 +0000
committerHal Finkel <hfinkel@anl.gov>2013-08-28 05:21:45 +0000
commit108c46a7bf92342aa1661c36e4b85cd2b24d7f4e (patch)
tree10c19854f237c724736dab54bc76568e111fec6f
parent7d0867f48c6adde6cb5c5df7f1c0068cf2f6a9f4 (diff)
downloadbcm5719-llvm-108c46a7bf92342aa1661c36e4b85cd2b24d7f4e.tar.gz
bcm5719-llvm-108c46a7bf92342aa1661c36e4b85cd2b24d7f4e.zip
Revert r189440 - Disable loop vectorizer unrolling when no unrolling requested
As Chandler pointed out, we should not be using -backend-option because this will cause crashes for users of the tooling interface, etc. A better way to fix this will be to provide the unrolling pass-manager flag to the loop vectorizer directly. Original commit message: Disable loop vectorizer unrolling when no unrolling requested In addition to the regular loop unrolling transformation, the loop vectorizer can also unroll loops. If no unrolling has specifically been requested (by -fno-unroll-loops), and the loop vectorizer will be used, then add the backend option to (also) prevent the loop vectorizer from unrolling loops. I confirmed with Nadav (off list) that disabling vectorizer loop unrolling when -fno-unroll-loops is provided is the desired behavior. llvm-svn: 189441
-rw-r--r--clang/lib/Driver/Tools.cpp12
-rw-r--r--clang/test/Driver/clang_f_opts.c3
2 files changed, 1 insertions, 14 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 89df632d5c0..c30c45d26bd 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -3382,19 +3382,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
OptSpecifier VectorizeAliasOption = EnableVec ? options::OPT_O_Group :
options::OPT_fvectorize;
if (Args.hasFlag(options::OPT_fvectorize, VectorizeAliasOption,
- options::OPT_fno_vectorize, EnableVec)) {
+ options::OPT_fno_vectorize, EnableVec))
CmdArgs.push_back("-vectorize-loops");
- // In addition to the regular loop unrolling transformation, the loop
- // vectorizer can also unroll loops. If no unrolling has specifically been
- // requested, then also prevent the loop vectorizer from unrolling loops.
- if (Args.hasFlag(options::OPT_fno_unroll_loops,
- options::OPT_funroll_loops, false)) {
- CmdArgs.push_back("-backend-option");
- CmdArgs.push_back("-force-vector-unroll=1");
- }
- }
-
// -fslp-vectorize is default.
if (Args.hasFlag(options::OPT_fslp_vectorize,
options::OPT_fno_slp_vectorize, true))
diff --git a/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c
index 5ab89d5c641..0cf4cc910b2 100644
--- a/clang/test/Driver/clang_f_opts.c
+++ b/clang/test/Driver/clang_f_opts.c
@@ -45,7 +45,6 @@
// CHECK-NO-UNROLL-LOOPS: "-fno-unroll-loops"
// RUN: %clang -### -S -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
-// RUN: %clang -### -S -fvectorize -fno-unroll-loops %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE-NO-UNROLL %s
// RUN: %clang -### -S -fno-vectorize -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %s
// RUN: %clang -### -S -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
// RUN: %clang -### -S -fvectorize -fno-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
@@ -66,8 +65,6 @@
// RUN: %clang -### -S -Oz %s 2>&1 | FileCheck -check-prefix=CHECK-NO-VECTORIZE %s
// CHECK-VECTORIZE: "-vectorize-loops"
// CHECK-NO-VECTORIZE-NOT: "-vectorize-loops"
-// CHECK-VECTORIZE-NOT: "-backend-option" "-force-vector-unroll=1"
-// CHECK-VECTORIZE-NO-UNROLL: "-backend-option" "-force-vector-unroll=1"
// RUN: %clang -### -S -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
// RUN: %clang -### -S -fno-slp-vectorize -fslp-vectorize %s 2>&1 | FileCheck -check-prefix=CHECK-SLP-VECTORIZE %s
OpenPOWER on IntegriCloud