[PATCH] Select Elimination in InstCombine

Gerolf Hoflehner ghoflehner at apple.com
Mon Sep 8 23:41:56 PDT 2014


Thanks, Eric!   I think I have to rely on dominance optionally to get keep a few of the  MCJIT tests running.

What specifically is on your mind wrt to other queries?

Cheers
Gerolf

On Sep 8, 2014, at 10:14 PM, Eric Christopher <echristo at gmail.com> wrote:

> A few nits in line, one question in line, and one more thought: Can't this replace a few of our other queries for instructions with dominator tree lookups? Is that a follow on patch or?
> 
> Thanks!
> 
> -eric
> 
> ================
> Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:2429
> @@ +2428,3 @@
> +//
> +// true when \param SI dominates all of its uses or \param ICmp.
> +//
> ----------------
> s/or/of
> 
> ================
> Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:2433
> @@ +2432,3 @@
> +                                    BasicBlock *D) {
> +  bool dominates_all_uses = true;
> +  for (auto I = SI->use_begin(), E = SI->use_end(); I != E; ++I) {
> ----------------
> Local variable naming style.
> 
> ================
> Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:2945
> @@ +2944,3 @@
> +
> +        bool transform = false;
> +        SelectInst *SI = cast<SelectInst>(LHSI);
> ----------------
> Local variable naming style.
> 
> ================
> Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:2975
> @@ +2974,3 @@
> +            if (ReplaceWithOpd && IsEQorNECompare) {
> +              // replace select with operand on else path for EQ compares.
> +              // replace select with operand on then path for NE compares.
> ----------------
> Nit: Sentences begin with capital letters.
> 
> ================
> Comment at: lib/Transforms/InstCombine/InstCombineCompares.cpp:2977
> @@ +2976,3 @@
> +              // replace select with operand on then path for NE compares.
> +              int Path = I.getPredicate() == ICmpInst::ICMP_EQ ? 1 : 0;
> +              if (InstCombiner::dominatesAllUses(
> ----------------
> Isn't this just a boolean then?
> 
> ================
> Comment at: lib/Transforms/InstCombine/InstructionCombining.cpp:95
> @@ -94,1 +94,3 @@
>   AU.addRequired<TargetLibraryInfo>();
> +  AU.addRequired<DominatorTreeWrapperPass>();
> +  AU.addPreserved<DominatorTreeWrapperPass>();
> ----------------
> Probably don't need to have it as requires, but optional? i.e. if it doesn't exist then just don't do the transform in the way you've got?
> 
> http://reviews.llvm.org/D5258
> 
> 




More information about the llvm-commits mailing list