Commit 30984c57 by Jakub Jelinek Committed by Jakub Jelinek

re PR rtl-optimization/6086 (Reload misoptimizes DImode PREINC on PPC)

	PR optimization/6086
	* combine.c (combine_simplify_rtx): If simplify_rtx failed because
	of SUBREG of volatile MEM or because the MEM was mode dependent,
	return CLOBBER instead of unmodified SUBREG.

From-SVN: r51606
parent 1540f9eb
2002-03-30 Jakub Jelinek <jakub@redhat.com>
PR optimization/6086
* combine.c (combine_simplify_rtx): If simplify_rtx failed because
of SUBREG of volatile MEM or because the MEM was mode dependent,
return CLOBBER instead of unmodified SUBREG.
Sat Mar 30 14:08:55 CET 2002 Jan Hubicka <jh@suse.cz> Sat Mar 30 14:08:55 CET 2002 Jan Hubicka <jh@suse.cz>
* local-alloc.c (local_alloc): Avoid call of update_equiv_regs when not optimizing. * local-alloc.c (local_alloc): Avoid call of update_equiv_regs when not optimizing.
......
...@@ -3875,6 +3875,13 @@ combine_simplify_rtx (x, op0_mode, last, in_dest) ...@@ -3875,6 +3875,13 @@ combine_simplify_rtx (x, op0_mode, last, in_dest)
return temp; return temp;
} }
/* Don't change the mode of the MEM if that would change the meaning
of the address. */
if (GET_CODE (SUBREG_REG (x)) == MEM
&& (MEM_VOLATILE_P (SUBREG_REG (x))
|| mode_dependent_address_p (XEXP (SUBREG_REG (x), 0))))
return gen_rtx_CLOBBER (mode, const0_rtx);
/* Note that we cannot do any narrowing for non-constants since /* Note that we cannot do any narrowing for non-constants since
we might have been counting on using the fact that some bits were we might have been counting on using the fact that some bits were
zero. We now do this in the SET. */ zero. We now do this in the SET. */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment