aboutsummaryrefslogtreecommitdiff
path: root/gcc/function.c
diff options
context:
space:
mode:
authorMark Mitchell <mark@codesourcery.com>2000-03-05 03:43:58 +0000
committerMark Mitchell <mmitchel@gcc.gnu.org>2000-03-05 03:43:58 +0000
commit7470e8d74c3e7d4d224bdff66160ac699f9c7170 (patch)
treee5ed0aeba5899af42d9621c370b020e31cd31a40 /gcc/function.c
parent40546a785b540f03926d6b9cee85803f7293b517 (diff)
downloadgcc-7470e8d74c3e7d4d224bdff66160ac699f9c7170.zip
gcc-7470e8d74c3e7d4d224bdff66160ac699f9c7170.tar.gz
gcc-7470e8d74c3e7d4d224bdff66160ac699f9c7170.tar.bz2
function.h (struct sequence_stack): Remove rtl_expr.
* function.h (struct sequence_stack): Remove rtl_expr. (struct emit_staus): Likewise. (seq_rtl_expr): Remove. * tree.h (free_temps_for_rtl_expr): Don't declare. (start_sequence_for_rtl_expr): Likewise. * rtl.h (preserve_rtl_expr_result): Likewise. * emit-rtl.c (start_sequence): Don't set sequence_rtl_expr. (start_sequence_for_rtl_expr): Remove. (push_topmost_sequence): Don't save sequence_rtl_expr. (pop_topmost_sequence): Remove comment about not restoring it. (end_sequence): Don't set seq_rtl_expr. (init_emit): Don't initialize it. (mark_sequence_stack): Don't mark it. (mark_emit_status): Likewise. * except.c (protect_with_terminate): Use start_sequence_for_rtl_expr, not start_sequence. * expr.c (expand_expr, case RTL_EXPR): Don't call preserve_rtl_expr_result or free_temps_for_rtl_expr. * function.c (assign_stack_temp_for_type): Don't set rtl_expr. (preserve_rtl_expr_result): Remove. (free_temps_for_rtl_expr): Likewise. (pop_temp_slots): Likewise. (mark_temp_slot): Don't mark the rtl_expr. * stmt.c (expand_start_stmt_expr): Use start_sequence, not start_sequence_for_rtl_expr. From-SVN: r32335
Diffstat (limited to 'gcc/function.c')
-rw-r--r--gcc/function.c52
1 files changed, 2 insertions, 50 deletions
diff --git a/gcc/function.c b/gcc/function.c
index 78c5ab8..df5d247 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -708,7 +708,6 @@ assign_stack_temp_for_type (mode, size, keep, type)
rounded_size));
p->align = best_p->align;
p->address = 0;
- p->rtl_expr = 0;
p->next = temp_slots;
temp_slots = p;
@@ -776,7 +775,6 @@ assign_stack_temp_for_type (mode, size, keep, type)
p->in_use = 1;
p->addr_taken = 0;
- p->rtl_expr = seq_rtl_expr;
if (keep == 2)
{
@@ -1129,34 +1127,6 @@ preserve_temp_slots (x)
p->level--;
}
-/* X is the result of an RTL_EXPR. If it is a temporary slot associated
- with that RTL_EXPR, promote it into a temporary slot at the present
- level so it will not be freed when we free slots made in the
- RTL_EXPR. */
-
-void
-preserve_rtl_expr_result (x)
- rtx x;
-{
- struct temp_slot *p;
-
- /* If X is not in memory or is at a constant address, it cannot be in
- a temporary slot. */
- if (x == 0 || GET_CODE (x) != MEM || CONSTANT_P (XEXP (x, 0)))
- return;
-
- /* If we can find a match, move it to our level unless it is already at
- an upper level. */
- p = find_temp_slot_from_address (XEXP (x, 0));
- if (p != 0)
- {
- p->level = MIN (p->level, temp_slot_level);
- p->rtl_expr = 0;
- }
-
- return;
-}
-
/* Free all temporaries used so far. This is normally called at the end
of generating code for a statement. Don't free any temporaries
currently in use for an RTL_EXPR that hasn't yet been emitted.
@@ -1170,23 +1140,7 @@ free_temp_slots ()
struct temp_slot *p;
for (p = temp_slots; p; p = p->next)
- if (p->in_use && p->level == temp_slot_level && ! p->keep
- && p->rtl_expr == 0)
- p->in_use = 0;
-
- combine_temp_slots ();
-}
-
-/* Free all temporary slots used in T, an RTL_EXPR node. */
-
-void
-free_temps_for_rtl_expr (t)
- tree t;
-{
- struct temp_slot *p;
-
- for (p = temp_slots; p; p = p->next)
- if (p->rtl_expr == t)
+ if (p->in_use && p->level == temp_slot_level && ! p->keep)
p->in_use = 0;
combine_temp_slots ();
@@ -1264,7 +1218,7 @@ pop_temp_slots ()
struct temp_slot *p;
for (p = temp_slots; p; p = p->next)
- if (p->in_use && p->level == temp_slot_level && p->rtl_expr == 0)
+ if (p->in_use && p->level == temp_slot_level)
p->in_use = 0;
combine_temp_slots ();
@@ -6980,8 +6934,6 @@ mark_temp_slot (t)
{
ggc_mark_rtx (t->slot);
ggc_mark_rtx (t->address);
- ggc_mark_tree (t->rtl_expr);
-
t = t->next;
}
}