aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-cfg.c
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2010-01-15 11:53:26 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2010-01-15 11:53:26 +0000
commit1197e78957aea05816665f843e4a0b936c847e07 (patch)
tree67ed89e55330179795b12967f60c0b05168d6454 /gcc/tree-cfg.c
parent58be9ce9c30e0b16d4d4cb6ccccc4b910b8ae834 (diff)
downloadgcc-1197e78957aea05816665f843e4a0b936c847e07.zip
gcc-1197e78957aea05816665f843e4a0b936c847e07.tar.gz
gcc-1197e78957aea05816665f843e4a0b936c847e07.tar.bz2
re PR middle-end/42739 (ICE with computed goto, destructors, and optimization)
2010-01-15 Richard Guenther <rguenther@suse.de> PR middle-end/42739 * tree-cfgcleanup.c (remove_forwarder_block): Move destination labels of computed or non-local gotos to the destination. * tree-cfg.c (gimple_verify_flow_info): Verify that a EH landing pad label is the first label. * g++.dg/torture/pr42739.C: New testcase. From-SVN: r155937
Diffstat (limited to 'gcc/tree-cfg.c')
-rw-r--r--gcc/tree-cfg.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index 4ba9dd7..0a3d544 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -4268,6 +4268,15 @@ gimple_verify_flow_info (void)
err = 1;
}
+ if (prev_stmt && EH_LANDING_PAD_NR (label) != 0)
+ {
+ error ("EH landing pad label ");
+ print_generic_expr (stderr, label, 0);
+ fprintf (stderr, " is not first in a sequence of labels in bb %d",
+ bb->index);
+ err = 1;
+ }
+
if (label_to_block (label) != bb)
{
error ("label ");