[llvm-commits] [llvm] r154673 - /llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp

Duncan Sands baldrick at free.fr
Sat Apr 14 02:34:14 PDT 2012


Hi Hal, thanks for doing this.

> --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp (original)
> +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp Fri Apr 13 12:15:33 2012
> @@ -35,6 +35,11 @@
>   static cl::opt<bool>
>   RunVectorization("vectorize", cl::desc("Run vectorization passes"));
>
> +static cl::opt<bool>
> +UseGVNAfterVectorization("use-gvn-after-vectorization",
> +  cl::init(false), cl::Hidden,
> +  cl::desc("Run GVN instead of Early CSE after vectorization passes"));
> +
>   PassManagerBuilder::PassManagerBuilder() {
>       OptLevel = 2;
>       SizeLevel = 0;
> @@ -182,8 +187,10 @@
>     if (Vectorize) {
>       MPM.add(createBBVectorizePass());
>       MPM.add(createInstructionCombiningPass());
> -    if (OptLevel>  1)
> -      MPM.add(createGVNPass());                 // Remove redundancies
> +    if (OptLevel>  1&&  UseGVNAfterVectorization)
> +      MPM.add(createGVNPass());                   // Remove redundancies
> +    else
> +      MPM.add(createEarlyCSEPass());              // Catch trivial redundancies

Did you experiment to see if it was better to run EarlyCSE before rather than
after instcombine?

Ciao, Duncan.



More information about the llvm-commits mailing list