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

Reply via email to