From b2d68729b209563670578d03c54d470ec5edefdf Mon Sep 17 00:00:00 2001 From: obrien Date: Wed, 3 Jan 2001 17:17:01 +0000 Subject: Merge gcc.2.95.3-test1 changes onto mainline --- contrib/gcc/function.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'contrib/gcc/function.c') diff --git a/contrib/gcc/function.c b/contrib/gcc/function.c index cd8f249..3237efc 100644 --- a/contrib/gcc/function.c +++ b/contrib/gcc/function.c @@ -1430,7 +1430,16 @@ free_temps_for_rtl_expr (t) for (p = temp_slots; p; p = p->next) if (p->rtl_expr == t) - p->in_use = 0; + { + /* If this slot is below the current TEMP_SLOT_LEVEL, then it + needs to be preserved. This can happen if a temporary in + the RTL_EXPR was addressed; preserve_temp_slots will move + the temporary into a higher level. */ + if (temp_slot_level <= p->level) + p->in_use = 0; + else + p->rtl_expr = NULL_TREE; + } combine_temp_slots (); } -- cgit v1.1