On Sat, Mar 1, 2008 at 11:03 AM, Jan Hubicka <[EMAIL PROTECTED]> wrote: > > The two complications are: > > 1) libcalls > > I am probably dense here, but why we can't just ignore existence of > libcalls for dataflow framework?
Not libcalls, but libcall *notes*. > This exist so we can effectivly remove > blocks of code in dead code removal and do some other changes, but I > don't see how they can be less friendly to FUD than they are to DU/UD. > Sure the optimization has to care to not break the extra invariant that > libcalls stay independent, but that is. The extra care is the problem. To be fair, the problem is manageable (see the whole DCE vs. libcall notes thread from last year) but it adds a lot of complexity and defeats the benefits of having FUD chains. Basically the same problem as the issues we had for RTL SSA. See these threads: http://gcc.gnu.org/ml/gcc-patches/2000-07/msg01152.html http://gcc.gnu.org/ml/gcc-patches/2000-07/msg01174.html). I could also start a rant here about how tree-ssa was supposed to make libcall notes obsolete, how much better things already would be today even without libcall notes if you compare it to the pre-tree-ssa era, and how GCC once again chooses irrational conservatism over reaping the fruits of all the tree-ssa work -- but that's *really* orthogonal to this thread, so I won't ;-) By the way, I still don't understand how birth points would work. Can someone give an example of what the insn stream would look like with birth points, and what the DU/UD chains would look like? Gr. Steven