From: Jason Merrill Date: Thu, 25 May 2000 00:36:28 +0000 (+0000) Subject: stmt.c (expand_end_bindings): Look through NOTEs to find a BARRIER. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=04da69d3a6eeb4b9cbd3efc5473d063577e66d58;p=platform%2Fupstream%2Fgcc.git stmt.c (expand_end_bindings): Look through NOTEs to find a BARRIER. * stmt.c (expand_end_bindings): Look through NOTEs to find a BARRIER. From-SVN: r34149 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 27b5554..0ff533f 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-05-24 Jason Merrill + + * stmt.c (expand_end_bindings): Look through NOTEs to find a + BARRIER. + 2000-05-24 Mark Mitchell * calls.c (expand_call): Handle cleanups in tail-recursion diff --git a/gcc/stmt.c b/gcc/stmt.c index a3b72ea..81f4132 100644 --- a/gcc/stmt.c +++ b/gcc/stmt.c @@ -3675,8 +3675,8 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) if (thisblock->data.block.stack_level != 0 || thisblock->data.block.cleanups != 0) { - /* Only clean up here if this point can actually be reached. */ - int reachable = GET_CODE (get_last_insn ()) != BARRIER; + int reachable; + rtx insn; /* Don't let cleanups affect ({...}) constructs. */ int old_expr_stmts_for_value = expr_stmts_for_value; @@ -3684,6 +3684,12 @@ expand_end_bindings (vars, mark_ends, dont_jump_in) tree old_last_expr_type = last_expr_type; expr_stmts_for_value = 0; + /* Only clean up here if this point can actually be reached. */ + insn = get_last_insn (); + if (GET_CODE (insn) == NOTE) + insn = prev_nonnote_insn (insn); + reachable = GET_CODE (insn) != BARRIER; + /* Do the cleanups. */ expand_cleanups (thisblock->data.block.cleanups, NULL_TREE, 0, reachable); if (reachable)