re PR c++/78383 (label as values ICE with C++ lambda)
authorRichard Biener <rguenther@suse.de>
Thu, 17 Nov 2016 12:39:24 +0000 (12:39 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 17 Nov 2016 12:39:24 +0000 (12:39 +0000)
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

gcc/ChangeLog
gcc/tree-cfgcleanup.c

index e07caaa..0fb592a 100644 (file)
@@ -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.
index 21873f8..fe22ed3 100644 (file)
@@ -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)); )
        {