------- Comment #2 from jakub at gcc dot gnu dot org 2010-02-26 12:40 ------- Small correction, VALUE 13:13 has initial location %edi, before it is equivalenced to VALUE 2:2. So, at that point it is fine to have 13:13 as cur_loc for VALUE 2:2, it is the same as having %edi there directly as cur_loc (and of course %edi listed also in loc_chain). The problem is when a circular loop between the cur_loc's is created (this happens when %edi location is removed from VALUE 13:13's location and its cur_loc is updated). I guess at that point we need to change cur_loc in some other VALUE in the loop (and if there is not any, just clear cur_loc to break the loop). Or come up with different representation for VALUE equivalences.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43176