diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-04-29 23:01:29 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-04-29 23:01:29 +0000 |
commit | 5c7a310f81ad5609a1830d4d156ef90f3a35d764 (patch) | |
tree | 556b4266f6a4292a1085b6bcb6c75790cd0cf08f /gcc/emit-rtl.c | |
parent | 1a6580ec80d9c0dba5970a7541162faffb48a613 (diff) | |
download | gcc-5c7a310f81ad5609a1830d4d156ef90f3a35d764.zip gcc-5c7a310f81ad5609a1830d4d156ef90f3a35d764.tar.gz gcc-5c7a310f81ad5609a1830d4d156ef90f3a35d764.tar.bz2 |
emit-rtl.c (start_sequence): Expand comments.
* emit-rtl.c (start_sequence): Expand comments.
(start_sequence_for_rtl_expr): Likewise.
(push_to_sequence): Likewise.
(end_sequence): Likewise.
* expr.c (inhibit_defer_pop): Likewise.
* expr.h (inhibit_defer_pop): Likewise.
(NO_DEFER_POP): Likewise.
(OK_DEFER_POP): Likewise.
From-SVN: r26704
Diffstat (limited to 'gcc/emit-rtl.c')
-rw-r--r-- | gcc/emit-rtl.c | 30 |
1 files changed, 23 insertions, 7 deletions
diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index b1e2d3d..2aa51ac 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -3284,7 +3284,13 @@ emit (x) abort (); } -/* Begin emitting insns to a sequence which can be packaged in an RTL_EXPR. */ +/* Begin emitting insns to a sequence which can be packaged in an + RTL_EXPR. If this sequence will contain something that might cause + the compiler to pop arguments to function calls (because those + pops have previously been deferred; see INHIBIT_DEFER_POP for more + details), use do_pending_stack_adjust before calling this function. + That will ensure that the deferred pops are not accidentally + emitted in the middel of this sequence. */ void start_sequence () @@ -3311,8 +3317,9 @@ start_sequence () last_insn = 0; } -/* Similarly, but indicate that this sequence will be placed in - T, an RTL_EXPR. */ +/* Similarly, but indicate that this sequence will be placed in T, an + RTL_EXPR. See the documentation for start_sequence for more + information about how to use this function. */ void start_sequence_for_rtl_expr (t) @@ -3323,8 +3330,9 @@ start_sequence_for_rtl_expr (t) sequence_rtl_expr = t; } -/* Set up the insn chain starting with FIRST - as the current sequence, saving the previously current one. */ +/* Set up the insn chain starting with FIRST as the current sequence, + saving the previously current one. See the documentation for + start_sequence for more information about how to use this function. */ void push_to_sequence (first) @@ -3378,8 +3386,16 @@ pop_topmost_sequence () /* After emitting to a sequence, restore previous saved state. - To get the contents of the sequence just made, - you must call `gen_sequence' *before* calling here. */ + To get the contents of the sequence just made, you must call + `gen_sequence' *before* calling here. + + If the compiler might have deferred popping arguments while + generating this sequence, and this sequence will not be immediately + inserted into the instruction stream, use do_pending_stack_adjust + before calling gen_sequence. That will ensure that the deferred + pops are inserted into this sequence, and not into some random + location in the instruction stream. See INHIBIT_DEFER_POP for more + information about deferred popping of arguments. */ void end_sequence () |