http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53740
--- Comment #6 from Alexandre Oliva <aoliva at gcc dot gnu.org> 2012-06-27 05:42:26 UTC --- The bug was introduced in r188527, with the conditionalization of calling insert_dead_debug_temp in the “else” clause, so that we would no longer insert debug temps for sets that were not themselves dead, but that were used in debug stmts after their death. This caused a chain of debug temps to be incorrectly introduced, which ended up triggering the problem. Now, there is indeed a bug in the way we deal with multiregs: we're happily using paradoxical SUBREGs to extend the value stored in a single REG to determine the value of the whole multi-reg expression. We only refrained from doing so if the SET was already a SUBREG, but we had to do that for REGs too. In the patch I'm testing now, I fix both problems. Will post soon.