aboutsummaryrefslogtreecommitdiff
path: root/gcc
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
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')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-cfgcleanup.c2
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)); )
{