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
This commit is contained in:
Mark Mitchell 2000-03-05 03:43:58 +00:00 committed by Mark Mitchell
parent 40546a785b
commit 7470e8d74c
2 changed files with 3 additions and 51 deletions

View File

@ -23,7 +23,7 @@
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.
(assign_stack_temp_for_type): Don't set 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.

View File

@ -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;
}
}