diff options
author | Jason Merrill <jason@yorick.cygnus.com> | 1998-10-23 02:18:53 +0000 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 1998-10-22 22:18:53 -0400 |
commit | fdc46fbe659f77dbcf016a5afb8d08652801c52b (patch) | |
tree | 83545746e3ad14e4a0e2b45f443e0abcddba6ee8 /gcc | |
parent | 5581627cef0a73759464baf4a13c6158da3622af (diff) | |
download | gcc-fdc46fbe659f77dbcf016a5afb8d08652801c52b.zip gcc-fdc46fbe659f77dbcf016a5afb8d08652801c52b.tar.gz gcc-fdc46fbe659f77dbcf016a5afb8d08652801c52b.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/expr.c | 11 | ||||
-rw-r--r-- | gcc/function.h | 1 |
3 files changed, 14 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d27c8a8..5f6faa2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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> * reorg.c (relax_delay_slots): Fixed test for mostly_true_jump. The @@ -114,6 +114,9 @@ static int can_handle_constant_p; infinite recursion. */ 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 be performed. */ struct move_by_pieces @@ -342,15 +345,14 @@ void save_expr_status (p) struct function *p; { - /* Instead of saving the postincrement queue, empty it. */ - emit_queue (); - + p->pending_chain = pending_chain; p->pending_stack_adjust = pending_stack_adjust; p->inhibit_defer_pop = inhibit_defer_pop; p->saveregs_value = saveregs_value; p->apply_args_value = apply_args_value; p->forced_labels = forced_labels; + pending_chain = NULL_RTX; pending_stack_adjust = 0; inhibit_defer_pop = 0; saveregs_value = 0; @@ -365,6 +367,7 @@ void restore_expr_status (p) struct function *p; { + pending_chain = p->pending_chain; pending_stack_adjust = p->pending_stack_adjust; inhibit_defer_pop = p->inhibit_defer_pop; saveregs_value = p->saveregs_value; @@ -375,8 +378,6 @@ restore_expr_status (p) /* Manage the queue of increment instructions to be output for POSTINCREMENT_EXPR expressions, etc. */ -static rtx pending_chain; - /* Queue up to increment (or change) VAR later. BODY says how: BODY should be the same thing you would pass to emit_insn to increment right away. It will go to emit_insn later on. diff --git a/gcc/function.h b/gcc/function.h index 014ed13..d5e6cd0 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -146,6 +146,7 @@ struct function rtx ehc; /* For expr.c. */ + rtx pending_chain; int pending_stack_adjust; int inhibit_defer_pop; rtx saveregs_value; |