aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfgcleanup.c
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-11-17 12:39:24 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2016-11-17 12:39:24 +0000
commitb05c3fd684219cde701d995c88277ced21dbc3b5 (patch)
tree278a1308b034e7aaea6279a302aeefd3561e65e1 /gcc/tree-cfgcleanup.c
parentbef69eb57d7958e119fa581b376c6e05cb838c38 (diff)
downloadgcc-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/tree-cfgcleanup.c')
-rw-r--r--gcc/tree-cfgcleanup.c2
1 files changed, 2 insertions, 0 deletions
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)); )
{