[LLVMdev] [Loop Vectorize] Question on -O3

Duncan Sands baldrick at free.fr
Tue Jul 2 04:00:57 PDT 2013

Hi maxs,

On 02/07/13 09:49, maxs wrote:
> Hi,
>     When I use "-loop-vectorize" to vectorize a loop as below:
> //====================================
> void bar(float *A, float* B, float K, int start, int end) {
>    for (int i = start; i < end; ++i)
>      A[i] *= B[i] + K;
> }
> //====================================
>    First, I use "*clang -O0 -emit-llvm -S bar.c -o bar.l*" to emit the .l file.
>    Then I use "*opt -loop-vectorize -S bar.l -o bar.v.l*". Unfortunately, the
> vectorization don't work. But I use "*opt -O3 -loop-vectorize -S bar.l -o
> bar.v.l*" and it works.
>    My question is: What the information needed by "*-loop-vectorize*" the
> "*-O3*" provides? Thanks.

all of the advanced LLVM optimizations assume that the IR has already been
cleaned up already by the less advanced optimizers.  Try running something
like -sroa -instcombine -simplifycfg first.

Ciao, Duncan.

More information about the llvm-dev mailing list