------- Additional Comments From dberlin at gcc dot gnu dot org 2005-07-27 16:04 ------- store CCP returns UNKNOWN_VAL as soon as it sees the TMT, even though the RHS is completely constant, and even after we set the value of the TMT's to constant.
Even if you change the call to link_error to abort (a noreturn function which has no v_may_defs), we don't end up noticing the value is constant, because then we determine that p_1 has an UNKNOWN_VAL, wihch doesn't actually matter, since the TMT is constant valued, it doesn't matter that we don't know where exactly the pointer points to. If the pointer had changed, it would be a new version, or the TMT wouldn't be constant valued. I've attached a patch that at least gets the TMT's to constant. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23094