------- Additional Comments From dberlin at gcc dot gnu dot org  2004-11-26 
22:11 -------
The real bug here is that may_propagate_copy (op, val) returns true, but we
abort when domopts calls propagate_value with the same arguments.

We think something has gone wrong horribly wrong with regards to flow-sensitive
alias info because the block with the &k in it became dead, allowing us to copy
propagate p_1 into p_2.

However, p_2 still has the name tag that includes k (which is now gone
completely), and p_1 doesn't, because alias info hasn't been rebuilt since
CCP+DCE removed the block with &k in it.

There are a couple options, i'll leave it to diego to decide what is best:

1. Make may_propagate_copy return false (conservatively) when we are trying to
propagate and the name tags don't match.  The propagation will still happen
later after alias info gets rebuilt again.
2. Allow the propagation anyway, and just choose the "best" name tag (the one
with the smallest number of pt_vars), under the assumption that we know what the
heck we are doing :)

Diego, if you are too busy, just let me know which you prefer and i'll 
implement it.

-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18291

Reply via email to