diff options
author | obrien <obrien@FreeBSD.org> | 2001-01-03 17:16:04 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2001-01-03 17:16:04 +0000 |
commit | e103926ab58446425b46d5df55c940db3abeff84 (patch) | |
tree | 46177f22832f755e34be042b91555eedf10b4f66 /contrib/gcc/function.c | |
parent | d566d0a5f8c3f4d187ecbf8096628e9ae9dd3567 (diff) | |
download | FreeBSD-src-e103926ab58446425b46d5df55c940db3abeff84.zip FreeBSD-src-e103926ab58446425b46d5df55c940db3abeff84.tar.gz |
Enlist the FreeBSD-CURRENT users as testers of GCC 2.95.3 Release Candidate #1
Diffstat (limited to 'contrib/gcc/function.c')
-rw-r--r-- | contrib/gcc/function.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/contrib/gcc/function.c b/contrib/gcc/function.c index 60afafa..a4033a9 100644 --- a/contrib/gcc/function.c +++ b/contrib/gcc/function.c @@ -1428,7 +1428,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 (); } |