[PATCH] D26432: [SCCP] Force unknown branches to overdefined

Chris Lattner via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 9 12:57:34 PST 2016


> On Nov 9, 2016, at 11:44 AM, Friedman, Eli <efriedma at codeaurora.org> wrote:
> 
>>> 
>>> After solving is finished, anything left as undef can then be filled in
>>> unconstrained, because you are guaranteed it is not forced to a certain
>>> value (or that your solver sucks :P)
>>> 
>>> (note that in the freeze/poison proposal, this should just work because the
>>> freezes will be different ssa names)
>>> 
>> Uh, thanks. Out of curiosity, do you happen to know why undef wasn't
>> represented as a lattice value from the beginning (and instead we end
>> up trying values that match up?) Is there a particular reason (e.g.
>> efficiency)? I can't think of one.
>> --
> This is very old code; see r17044, r18776 and r32715.  I doubt Chris remembers the details (but CC'ing him in case he does).  I haven't really considered it before, but as far as I know, there isn't any particular reason we can't treat undef like a constant rather than "unknown".  Constant folding knows how to fold operations involving undef correctly.  You probably need to special-case branches and PHI nodes with undef operands.

Eli is right, the SCCP lattice predated undef being part of IR.

-Chris
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161109/97251b59/attachment.html>


More information about the llvm-commits mailing list