re PR rtl-optimization/8634 (incorrect code for inlining of memcpy under -O2)

PR opt/8634
        * function.c (purge_addressof_1): Don't try arithmetics for
        unchanging memories.

From-SVN: r65351
This commit is contained in:
Richard Henderson 2003-04-07 15:05:49 -07:00 committed by Richard Henderson
parent 7760d7f9b7
commit c5a1e3d69a
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2003-04-07 Richard Henderson <rth@redhat.com>
PR opt/8634
* function.c (purge_addressof_1): Don't try arithmetics for
unchanging memories.
2003-04-07 Janis Johnson <janis187@us.ibm.com>
* doc/sourcebuild.texi (Test Suites): Document testing support for

View File

@ -3140,10 +3140,16 @@ purge_addressof_1 (loc, insn, force, store, ht)
size_x = GET_MODE_BITSIZE (GET_MODE (x));
size_sub = GET_MODE_BITSIZE (GET_MODE (sub));
/* Do not frob unchanging MEMs. If a later reference forces the
pseudo to the stack, we can wind up with multiple writes to
an unchanging memory, which is invalid. */
if (RTX_UNCHANGING_P (x) && size_x != size_sub)
;
/* Don't even consider working with paradoxical subregs,
or the moral equivalent seen here. */
if (size_x <= size_sub
&& int_mode_for_mode (GET_MODE (sub)) != BLKmode)
else if (size_x <= size_sub
&& int_mode_for_mode (GET_MODE (sub)) != BLKmode)
{
/* Do a bitfield insertion to mirror what would happen
in memory. */