]> granicus.if.org Git - clang/commitdiff
Revert r189440 - Disable loop vectorizer unrolling when no unrolling requested
authorHal Finkel <hfinkel@anl.gov>
Wed, 28 Aug 2013 05:21:45 +0000 (05:21 +0000)
committerHal Finkel <hfinkel@anl.gov>
Wed, 28 Aug 2013 05:21:45 +0000 (05:21 +0000)
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.

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

lib/Driver/Tools.cpp
test/Driver/clang_f_opts.c

index 89df632d5c0a62193184a14589529779eb051c11..c30c45d26bd165e78b4ab562ba06ac6304667cef 100644 (file)
@@ -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))
index 5ab89d5c641972f95ae9be0169ece08262bf4d23..0cf4cc910b2c6b4ccc3e0cfba9e0304ad2832f7b 100644 (file)
@@ -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