diff options
author | Mark Mitchell <mark@codesourcery.com> | 1999-09-17 22:01:23 +0000 |
---|---|---|
committer | Mark Mitchell <mmitchel@gcc.gnu.org> | 1999-09-17 22:01:23 +0000 |
commit | 8e91754ed432246436075871d84d87de2390c405 (patch) | |
tree | 9b627a788d95d6fe1744e179f42c17925b07a34f /gcc/stmt.c | |
parent | 05ca5990713469bc7ca0b473c10d9698d688cf6b (diff) | |
download | gcc-8e91754ed432246436075871d84d87de2390c405.zip gcc-8e91754ed432246436075871d84d87de2390c405.tar.gz gcc-8e91754ed432246436075871d84d87de2390c405.tar.bz2 |
stmt.c (expand_start_bindings): Allow callers to pass a flag indicating that no NOTE_INSN_BLOCK_BEG note is...
* stmt.c (expand_start_bindings): Allow callers to pass a flag
indicating that no NOTE_INSN_BLOCK_BEG note is required.
(expand_start_target_temps): Use it.
* except.c (expand_eh_region_start_for_decl): Likewise.
* expr.c (expand_expr): Likewise.
From-SVN: r29484
Diffstat (limited to 'gcc/stmt.c')
-rw-r--r-- | gcc/stmt.c | 27 |
1 files changed, 21 insertions, 6 deletions
@@ -3168,15 +3168,30 @@ tail_recursion_args (actuals, formals) /* Generate the RTL code for entering a binding contour. The variables are declared one by one, by calls to `expand_decl'. - EXIT_FLAG is nonzero if this construct should be visible to - `exit_something'. */ + FLAGS is a bitwise or of the following flags: + + 1 - Nonzero if this construct should be visible to + `exit_something'. + + 2 - Nonzero if this contour does not require a + NOTE_INSN_BLOCK_BEG note. Virtually all calls from + language-independent code should set this flag because they + will not create corresponding BLOCK nodes. (There should be + a one-to-one correspondence between NOTE_INSN_BLOCK_BEG notes + and BLOCKs.) If this flag is set, MARK_ENDS should be zero + when expand_end_bindings is called. */ void -expand_start_bindings (exit_flag) - int exit_flag; +expand_start_bindings (flags) + int flags; { struct nesting *thisblock = ALLOC_NESTING (); - rtx note = emit_note (NULL_PTR, NOTE_INSN_BLOCK_BEG); + rtx note; + int exit_flag = ((flags & 1) != 0); + int block_flag = ((flags & 2) == 0); + + note = emit_note (NULL_PTR, + block_flag ? NOTE_INSN_BLOCK_BEG : NOTE_INSN_DELETED); /* Make an entry on block_stack for the block we are entering. */ @@ -3228,7 +3243,7 @@ expand_start_target_temps () /* Start a new binding layer that will keep track of all cleanup actions to be performed. */ - expand_start_bindings (0); + expand_start_bindings (2); target_temp_slot_level = temp_slot_level; } |