https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90946
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- What might also cure the issue somewhat is putting down debug stmts at definitions of register typed (but not yet register) defs. So much like into-SSA does when rewriting a LHS to SSA do it also for those would-be "registers" that are not because they are address-taken. You'd then end up with l_756 = 40369; # DEBUG l_756 = 40369; and l = &l_756; # DEBUG l = &l_756 the number of extra debug stmts should be limited (I hope). It doesn't solve the issue for indirect accesses like *l = ... of course (we'd not want to emit debug resets for all possible pointed-to vars there...). Such indirect access can still be turned into a direct register write later (which would be fine) or eliminated directly (not fine, same issue as in this bug).