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 | 0d3ed6f1c238bd2970fb6b7973ef448fb191ce87 (patch) | |
| tree | 8f6d273f70e9c87aafe3e656635d53bac53a0c8f | |
| parent | a92da5b34f985fc3f0f55f1f50581804f35b5ac5 (diff) | |
| download | bcm5719-llvm-0d3ed6f1c238bd2970fb6b7973ef448fb191ce87.tar.gz bcm5719-llvm-0d3ed6f1c238bd2970fb6b7973ef448fb191ce87.zip | |
[driver] Add the -fvectorize flag to enable the loop vectorization passes.
rdar://12839978
llvm-svn: 169885
| -rw-r--r-- | clang/include/clang/Driver/Options.td | 3 | ||||
| -rw-r--r-- | clang/lib/Driver/Tools.cpp | 7 | ||||
| -rw-r--r-- | clang/test/Driver/clang_f_opts.c | 9 |
3 files changed, 19 insertions, 0 deletions
diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index e511b28a98f..a034251c0dd 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/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/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp index 2872749cfe0..9ae03fc8c6b 100644 --- a/clang/lib/Driver/Tools.cpp +++ b/clang/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/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c index 0ee7d2dabe7..331d0df96a1 100644 --- a/clang/test/Driver/clang_f_opts.c +++ b/clang/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" |

