mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-09 15:57:47 +08:00
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:
parent
7760d7f9b7
commit
c5a1e3d69a
@ -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
|
||||
|
@ -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. */
|
||||
|
Loading…
Reference in New Issue
Block a user