From 8e91754ed432246436075871d84d87de2390c405 Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 17 Sep 1999 22:01:23 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 8 ++++++++ gcc/except.c | 2 +- gcc/expr.c | 6 +++--- gcc/stmt.c | 27 +++++++++++++++++++++------ 4 files changed, 33 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d0035d..f3d7e9f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +Fri Sep 17 15:03:16 1999 Mark Mitchell + + * 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. + Fri Sep 17 15:05:27 1999 Gavin Romig-Koch * fold-const.c (operand_equal_p): Pay attention to side effects. diff --git a/gcc/except.c b/gcc/except.c index f063c9a..3ecf7fc 100644 --- a/gcc/except.c +++ b/gcc/except.c @@ -1418,7 +1418,7 @@ expand_eh_region_start_for_decl (decl) /* We need a new block to record the start and end of the dynamic handler chain. We also want to prevent jumping into a try block. */ - expand_start_bindings (0); + expand_start_bindings (2); /* But we don't need or want a new temporary level. */ pop_temp_slots (); diff --git a/gcc/expr.c b/gcc/expr.c index daa06d0..880e347 100644 --- a/gcc/expr.c +++ b/gcc/expr.c @@ -6104,7 +6104,7 @@ expand_expr (exp, target, tmode, modifier) /* Need to open a binding contour here because if there are any cleanups they must be contained here. */ - expand_start_bindings (0); + expand_start_bindings (2); /* Mark the corresponding BLOCK for output in its proper place. */ if (TREE_OPERAND (exp, 2) != 0 @@ -6793,7 +6793,7 @@ expand_expr (exp, target, tmode, modifier) { /* 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; @@ -8185,7 +8185,7 @@ expand_expr (exp, target, tmode, modifier) /* 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; diff --git a/gcc/stmt.c b/gcc/stmt.c index fcfdb06..1a16adc 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -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; } -- 2.7.4