diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-12-11 17:12:28 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-12-11 17:12:28 +0000 |
commit | c04d0934dfc78038ec1c073d9215750bd6a39c76 (patch) | |
tree | b26ba328e62a99cae10694893fcf80c8072a2f82 | |
parent | 21c8b19a28f0140261a53f0cc006c8d55a433665 (diff) |
[driver] Add the -fvectorize flag to enable the loop vectorization passes.
rdar://12839978
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@169885 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Driver/Options.td | 3 | ||||
-rw-r--r-- | lib/Driver/Tools.cpp | 7 | ||||
-rw-r--r-- | test/Driver/clang_f_opts.c | 9 |
3 files changed, 19 insertions, 0 deletions
diff --git a/include/clang/Driver/Options.td b/include/clang/Driver/Options.td index e511b28a98..a034251c0d 100644 --- a/include/clang/Driver/Options.td +++ b/include/clang/Driver/Options.td @@ -650,6 +650,9 @@ def ftemplate_depth_ : Joined<["-"], "ftemplate-depth-">, Group<f_Group>; def ftemplate_backtrace_limit_EQ : Joined<["-"], "ftemplate-backtrace-limit=">, Group<f_Group>; def ftest_coverage : Flag<["-"], "ftest-coverage">, Group<f_Group>; +def fvectorize : Flag<["-"], "fvectorize">, Group<f_Group>, + HelpText<"Enable the loop vectorization passes">; +def fno_vectorize : Flag<["-"], "fno-vectorize">, Group<f_Group>; def Wlarge_by_value_copy_def : Flag<["-"], "Wlarge-by-value-copy">, HelpText<"Warn if a function definition returns or accepts an object larger " "in bytes than a given value">, Flags<[HelpHidden]>; diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 2872749cfe..9ae03fc8c6 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -2928,6 +2928,13 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, false)) CmdArgs.push_back("-fasm-blocks"); + // -fno-vectorize is default. + if (Args.hasFlag(options::OPT_fvectorize, + options::OPT_fno_vectorize, false)) { + CmdArgs.push_back("-backend-option"); + CmdArgs.push_back("-vectorize-loops"); + } + if (Arg *A = Args.getLastArg(options::OPT_fshow_overloads_EQ)) A->render(Args, CmdArgs); diff --git a/test/Driver/clang_f_opts.c b/test/Driver/clang_f_opts.c index 0ee7d2dabe..331d0df96a 100644 --- a/test/Driver/clang_f_opts.c +++ b/test/Driver/clang_f_opts.c @@ -38,3 +38,12 @@ // RUN: %clang -fms-extensions -fenable-experimental-ms-inline-asm %s -### 2>&1 | FileCheck -check-prefix=CHECK-OPTIONS3 %s // CHECK-OPTIONS3: -fenable-experimental-ms-inline-asm + +// RUN: %clang -### -S -fvectorize %s 2>&1 | FileCheck -check-prefix=CHECK-VECTORIZE %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 +// CHECK-VECTORIZE: "-backend-option" +// CHECK-VECTORIZE: "-vectorize-loops" +// CHECK-NO-VECTORIZE-NOT: "-backend-option" +// CHECK-NO-VECTORIZE-NOT: "-vectorize-loops" |