Commit a9772b60 by Jakub Jelinek Committed by Jakub Jelinek

re PR middle-end/6279 (gcc-3.1 miscompiles qmake on IA-64)

	PR middle-end/6279
	* expr.c (store_expr): Don't copy if DECL_RTL (exp) == target.

	* expr.c (safe_from_p): Cleanup: use DECL_RTL_IF_SET.

From-SVN: r52356
parent 0f268005
2002-04-16 Jakub Jelinek <jakub@redhat.com>
PR middle-end/6279
* expr.c (store_expr): Don't copy if DECL_RTL (exp) == target.
* expr.c (safe_from_p): Cleanup: use DECL_RTL_IF_SET.
2002-04-15 Richard Henderson <rth@redhat.com> 2002-04-15 Richard Henderson <rth@redhat.com>
* config/mips/abi64.h (SUBTARGET_CONDITIONAL_REGISTER_USAGE): Set * config/mips/abi64.h (SUBTARGET_CONDITIONAL_REGISTER_USAGE): Set
......
...@@ -4125,7 +4125,12 @@ store_expr (exp, target, want_value) ...@@ -4125,7 +4125,12 @@ store_expr (exp, target, want_value)
|| (temp != target && (side_effects_p (temp) || (temp != target && (side_effects_p (temp)
|| side_effects_p (target)))) || side_effects_p (target))))
&& TREE_CODE (exp) != ERROR_MARK && TREE_CODE (exp) != ERROR_MARK
&& ! dont_store_target) && ! dont_store_target
/* If store_expr stores a DECL whose DECL_RTL(exp) == TARGET,
but TARGET is not valid memory reference, TEMP will differ
from TARGET although it is really the same location. */
&& (TREE_CODE_CLASS (TREE_CODE (exp)) != 'd'
|| target != DECL_RTL_IF_SET (exp)))
{ {
target = protect_from_queue (target, 1); target = protect_from_queue (target, 1);
if (GET_MODE (temp) != GET_MODE (target) if (GET_MODE (temp) != GET_MODE (target)
...@@ -5598,7 +5603,7 @@ safe_from_p (x, exp, top_p) ...@@ -5598,7 +5603,7 @@ safe_from_p (x, exp, top_p)
switch (TREE_CODE_CLASS (TREE_CODE (exp))) switch (TREE_CODE_CLASS (TREE_CODE (exp)))
{ {
case 'd': case 'd':
exp_rtl = DECL_RTL_SET_P (exp) ? DECL_RTL (exp) : NULL_RTX; exp_rtl = DECL_RTL_IF_SET (exp);
break; break;
case 'c': case 'c':
......
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