aboutsummaryrefslogtreecommitdiff
path: root/gcc/emit-rtl.c
diff options
context:
space:
mode:
authorTom Wood <wood@gnu.org>1993-03-23 12:52:39 +0000
committerTom Wood <wood@gnu.org>1993-03-23 12:52:39 +0000
commitf15ae3a138ba40d224d0d95cd900f45546621895 (patch)
tree459c001bc37a147e01af23ce211762d985e77f40 /gcc/emit-rtl.c
parenta93821e903e06a282633f4acf0abf23e1628cb99 (diff)
downloadgcc-f15ae3a138ba40d224d0d95cd900f45546621895.zip
gcc-f15ae3a138ba40d224d0d95cd900f45546621895.tar.gz
gcc-f15ae3a138ba40d224d0d95cd900f45546621895.tar.bz2
(push_topmost_sequence, pop_topmost_sequence): New
functions. From-SVN: r3841
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r--gcc/emit-rtl.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c
index 31c6d39..4721662 100644
--- a/gcc/emit-rtl.c
+++ b/gcc/emit-rtl.c
@@ -2614,6 +2614,40 @@ push_to_sequence (first)
last_insn = last;
}
+/* Set up the outer-level insn chain
+ as the current sequence, saving the previously current one. */
+
+void
+push_topmost_sequence ()
+{
+ struct sequence_stack *stack, *top;
+
+ start_sequence ();
+
+ for (stack = sequence_stack; stack; stack = stack->next)
+ top = stack;
+
+ first_insn = top->first;
+ last_insn = top->last;
+}
+
+/* After emitting to the outer-level insn chain, update the outer-level
+ insn chain, and restore the previous saved state. */
+
+void
+pop_topmost_sequence ()
+{
+ struct sequence_stack *stack, *top;
+
+ for (stack = sequence_stack; stack; stack = stack->next)
+ top = stack;
+
+ top->first = first_insn;
+ top->last = last_insn;
+
+ end_sequence ();
+}
+
/* After emitting to a sequence, restore previous saved state.
To get the contents of the sequence just made,