From: Jason Merrill Date: Tue, 27 Oct 1998 00:05:30 +0000 (+0000) Subject: expr.c (pending_chain): Move up. X-Git-Tag: prereleases/egcs-1.1.1-pre~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=49a158b7d25cc789f00a783b9aa4783782670746;p=thirdparty%2Fgcc.git 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: r23360 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27564674d11e..155a2b84f946 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -27,6 +27,13 @@ Fri Oct 23 22:38:57 1998 Jeffrey A Law (law@cygnus.com) * m68k.c (output_move_qimode): Do not use byte sized operations on address registers. +Fri Oct 23 00:56:11 1998 Jason Merrill + + * 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. + Mon Oct 19 13:22:13 1998 Geoff Keating * loop.c (scan_loop): Be more selective about what invariants are diff --git a/gcc/expr.c b/gcc/expr.c index 0eb20dcb0bf8..0d7f0034152d 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -114,6 +114,9 @@ static int can_handle_constant_p; 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 f9b9a9a924b7..0382a4e15e79 100644 --- a/gcc/function.h +++ b/gcc/function.h @@ -145,6 +145,7 @@ struct function rtx ehc; /* For expr.c. */ + rtx pending_chain; int pending_stack_adjust; int inhibit_defer_pop; rtx saveregs_value;