From: Chad Rosier Date: Tue, 11 Dec 2012 17:12:28 +0000 (+0000) Subject: [driver] Add the -fvectorize flag to enable the loop vectorization passes. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c04d0934dfc78038ec1c073d9215750bd6a39c76;p=clang [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 --- 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; def ftemplate_backtrace_limit_EQ : Joined<["-"], "ftemplate-backtrace-limit=">, Group; def ftest_coverage : Flag<["-"], "ftest-coverage">, Group; +def fvectorize : Flag<["-"], "fvectorize">, Group, + HelpText<"Enable the loop vectorization passes">; +def fno_vectorize : Flag<["-"], "fno-vectorize">, 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"