diff options
author | Richard Guenther <rguenther@suse.de> | 2010-01-15 11:53:26 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2010-01-15 11:53:26 +0000 |
commit | 1197e78957aea05816665f843e4a0b936c847e07 (patch) | |
tree | 67ed89e55330179795b12967f60c0b05168d6454 /gcc/tree-cfg.c | |
parent | 58be9ce9c30e0b16d4d4cb6ccccc4b910b8ae834 (diff) | |
download | gcc-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.c | 9 |
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 "); |