Commit fdc46fbe by Jason Merrill Committed by Jason Merrill

expr.c (pending_chain): Move up.

	* expr.c (pending_chain): Move up.
	(save_expr_status): Do save pending_chain.
	(restore_expr_status): And restore it.
	* function.h (struct function): Add pending_chain.

From-SVN: r23241
parent 5581627c
Fri Oct 23 00:56:11 1998 Jason Merrill <jason@yorick.cygnus.com>
* expr.c (pending_chain): Move up.
(save_expr_status): Do save pending_chain.
(restore_expr_status): And restore it.
* function.h (struct function): Add pending_chain.
1998-10-23 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl> 1998-10-23 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl>
* reorg.c (relax_delay_slots): Fixed test for mostly_true_jump. The * reorg.c (relax_delay_slots): Fixed test for mostly_true_jump. The
......
...@@ -114,6 +114,9 @@ static int can_handle_constant_p; ...@@ -114,6 +114,9 @@ static int can_handle_constant_p;
infinite recursion. */ infinite recursion. */
static int in_check_memory_usage; static int in_check_memory_usage;
/* Postincrements that still need to be expanded. */
static rtx pending_chain;
/* This structure is used by move_by_pieces to describe the move to /* This structure is used by move_by_pieces to describe the move to
be performed. */ be performed. */
struct move_by_pieces struct move_by_pieces
...@@ -342,15 +345,14 @@ void ...@@ -342,15 +345,14 @@ void
save_expr_status (p) save_expr_status (p)
struct function *p; struct function *p;
{ {
/* Instead of saving the postincrement queue, empty it. */ p->pending_chain = pending_chain;
emit_queue ();
p->pending_stack_adjust = pending_stack_adjust; p->pending_stack_adjust = pending_stack_adjust;
p->inhibit_defer_pop = inhibit_defer_pop; p->inhibit_defer_pop = inhibit_defer_pop;
p->saveregs_value = saveregs_value; p->saveregs_value = saveregs_value;
p->apply_args_value = apply_args_value; p->apply_args_value = apply_args_value;
p->forced_labels = forced_labels; p->forced_labels = forced_labels;
pending_chain = NULL_RTX;
pending_stack_adjust = 0; pending_stack_adjust = 0;
inhibit_defer_pop = 0; inhibit_defer_pop = 0;
saveregs_value = 0; saveregs_value = 0;
...@@ -365,6 +367,7 @@ void ...@@ -365,6 +367,7 @@ void
restore_expr_status (p) restore_expr_status (p)
struct function *p; struct function *p;
{ {
pending_chain = p->pending_chain;
pending_stack_adjust = p->pending_stack_adjust; pending_stack_adjust = p->pending_stack_adjust;
inhibit_defer_pop = p->inhibit_defer_pop; inhibit_defer_pop = p->inhibit_defer_pop;
saveregs_value = p->saveregs_value; saveregs_value = p->saveregs_value;
...@@ -375,8 +378,6 @@ restore_expr_status (p) ...@@ -375,8 +378,6 @@ restore_expr_status (p)
/* Manage the queue of increment instructions to be output /* Manage the queue of increment instructions to be output
for POSTINCREMENT_EXPR expressions, etc. */ for POSTINCREMENT_EXPR expressions, etc. */
static rtx pending_chain;
/* Queue up to increment (or change) VAR later. BODY says how: /* Queue up to increment (or change) VAR later. BODY says how:
BODY should be the same thing you would pass to emit_insn BODY should be the same thing you would pass to emit_insn
to increment right away. It will go to emit_insn later on. to increment right away. It will go to emit_insn later on.
......
...@@ -146,6 +146,7 @@ struct function ...@@ -146,6 +146,7 @@ struct function
rtx ehc; rtx ehc;
/* For expr.c. */ /* For expr.c. */
rtx pending_chain;
int pending_stack_adjust; int pending_stack_adjust;
int inhibit_defer_pop; int inhibit_defer_pop;
rtx saveregs_value; rtx saveregs_value;
......
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