[llvm-dev] killing undef and spreading poison
    Sanjoy Das via llvm-dev 
    llvm-dev at lists.llvm.org
       
    Mon Jun 19 09:43:38 PDT 2017
    
    
  
Hi Peter,
On Mon, Jun 19, 2017 at 7:14 AM, Peter Lawrence
<peterl95124 at sbcglobal.net> wrote:
>             My belief is that this is a register allocation problem
> that should not be addressed in the IR.
This is getting weird since you've started so many threads, but it
isn't *just* a register allocator problem (edit: just noticed that
Martin something similar) -- in your "live in undef value" scheme
there also are mid-level optimizations we will not be able to do.
> However you have changed the subject, and we still need an example
I'm not convinced that I changed the subject.  You said
>           we still need some examples showing that the definition
> “Branching on poison is immediate-UB” is the best choice,
> so far we only have arguments against it (the one for loop-switching).
There are two ways we can avoid branching on “Branching on poison is
immediate-UB” and still have GVN propagate equalities:
 - Propagate equalities only if the thing we're propagating isn't
poison.  As I've stated in this thread, that's almost impossible to
prove in interesting cases.
 - Ditch poison and have an `undef` like instruction (which is
equivalent to a live-in undef register), which brings us the regalloc
and mid-level opt problem.
So both of the thing I said seem on-topic to me.
-- Sanjoy
    
    
More information about the llvm-dev
mailing list