diff options
author | Richard Biener <rguenther@suse.de> | 2016-11-17 12:39:24 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2016-11-17 12:39:24 +0000 |
commit | b05c3fd684219cde701d995c88277ced21dbc3b5 (patch) | |
tree | 278a1308b034e7aaea6279a302aeefd3561e65e1 /gcc | |
parent | bef69eb57d7958e119fa581b376c6e05cb838c38 (diff) | |
download | gcc-b05c3fd684219cde701d995c88277ced21dbc3b5.zip gcc-b05c3fd684219cde701d995c88277ced21dbc3b5.tar.gz gcc-b05c3fd684219cde701d995c88277ced21dbc3b5.tar.bz2 |
re PR c++/78383 (label as values ICE with C++ lambda)
2016-11-17 Richard Biener <rguenther@suse.de>
PR middle-end/78383
* tree-cfgcleanup.c (cleanup_control_flow_bb): Do not turn
non-local goto into CFG.
From-SVN: r242543
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-cfgcleanup.c | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e07caaa..0fb592a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2016-11-17 Richard Biener <rguenther@suse.de> + PR middle-end/78383 + * tree-cfgcleanup.c (cleanup_control_flow_bb): Do not turn + non-local goto into CFG. + +2016-11-17 Richard Biener <rguenther@suse.de> + * common.opt (ftree-loop-if-convert-stores): Mark as preserved for backward compatibility. * doc/invoke.texi (ftree-loop-if-convert-stores): Remove. diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c index 21873f8..fe22ed3 100644 --- a/gcc/tree-cfgcleanup.c +++ b/gcc/tree-cfgcleanup.c @@ -230,6 +230,8 @@ cleanup_control_flow_bb (basic_block bb, bool first_p) edges which do not go to the right block. For the one edge which goes to the right block, fix up its flags. */ label = TREE_OPERAND (gimple_goto_dest (stmt), 0); + if (DECL_CONTEXT (label) != cfun->decl) + return retval; target_block = label_to_block (label); for (ei = ei_start (bb->succs); (e = ei_safe_edge (ei)); ) { |