------- 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