http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22553
--- Comment #19 from Serge Belyshev <belyshev at depni dot sinp.msu.ru> 2011-11-08 09:10:22 UTC --- Note that both original testcase and its fully reduced variants are flakey, so one needs to check against all intermediate ones generated by delta. Anyway, with the workaround from r105496 reverted, this bug no longer appears since r122318: 2007-02-25 Ulrich Weigand <uweig...@de.ibm.com> * reload.c (find_reloads_address_1): Handle PLUS expressions resulting from register elimination as PRE_MODIFY / POST_MODIFY increments. Do not attempt to handle MEM inside auto-inc expressions. * reload1.c (eliminate_regs_1): Do not attempt to handle elimination of a register modified by an auto-inc expression. However, do handle elimination of a register used as PRE_MODIFY / POST_MODIFY increment. (elimination_effects): Prohibit elimination of a register modified by an auto-inc expression. Disable register elimination rules whose target register is modified by an auto-inc expression with variable increment. Which looks like real fix for the issue. Another big change that can also help here is -fsched-pressure in r151348: 2009-09-02 Vladimir Makarov <vmaka...@redhat.com> * doc/invoke.texi (-fsched-pressure): Document it. (-fsched-reg-pressure-heuristic): Remove it. ... So I think the workaround from r105496 can be safely removed now and then close this bug as fixed since 4.3.0