]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
expr.c (pending_chain): Move up.
authorJason Merrill <jason@yorick.cygnus.com>
Tue, 27 Oct 1998 00:05:30 +0000 (00:05 +0000)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 27 Oct 1998 00:05:30 +0000 (19:05 -0500)
* 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

gcc/ChangeLog
gcc/expr.c
gcc/function.h

index 27564674d11eb52943ef6b9b1ed8a6d40b4293a3..155a2b84f946fe51bb496f1edbc440718786bfd0 100644 (file)
@@ -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  <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.
+
 Mon Oct 19 13:22:13 1998  Geoff Keating  <geoffk@ozemail.com.au>
 
         * loop.c (scan_loop): Be more selective about what invariants are 
index 0eb20dcb0bf8eb51318894f737e4675f040bfa15..0d7f0034152db2b3e536aa971073bca57ed69205 100644 (file)
@@ -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.
index f9b9a9a924b7ca485674f22a41219a99437356e0..0382a4e15e792c4b815c52263ddbf920a80dc4ab 100644 (file)
@@ -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;