diff options
author | Michael Matz <matz@suse.de> | 2010-04-14 14:50:33 +0000 |
---|---|---|
committer | Michael Matz <matz@gcc.gnu.org> | 2010-04-14 14:50:33 +0000 |
commit | fc249fe5d62c73210b3f752fb45119391d0774f0 (patch) | |
tree | 05e8f3fe688ca2ced73803178ff9b08bfa60f8b5 /gcc/testsuite/gcc.dg/pr42963.c | |
parent | 289a9f867a78d0c928eed2d9793964b9c7272022 (diff) | |
download | gcc-fc249fe5d62c73210b3f752fb45119391d0774f0.zip gcc-fc249fe5d62c73210b3f752fb45119391d0774f0.tar.gz gcc-fc249fe5d62c73210b3f752fb45119391d0774f0.tar.bz2 |
re PR tree-optimization/42963 (Redundant switch labels not cleaned up anymore)
PR tree-optimization/42963
* tree-cfg.c (touched_switch_bbs): New static variable.
(group_case_labels_stmt): New function broken out from ...
(group_case_labels): ... here, use the above.
(start_recording_case_labels): Allocate touched_switch_bbs.
(end_recording_case_labels): Deallocate it, call
group_case_labels_stmt.
(gimple_redirect_edge_and_branch): Remember index of affected BB.
testsuite/
* testsuite/gcc.dg/pr42963.c: New testcase.
From-SVN: r158345
Diffstat (limited to 'gcc/testsuite/gcc.dg/pr42963.c')
-rw-r--r-- | gcc/testsuite/gcc.dg/pr42963.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/pr42963.c b/gcc/testsuite/gcc.dg/pr42963.c new file mode 100644 index 0000000..8664b0d --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr42963.c @@ -0,0 +1,28 @@ +/* { dg-do compile } */ +/* { dg-options "-O2 -fdump-tree-cfg" } */ +extern void foo (void); +extern int i; +void +bar (void) +{ + switch (i) + { + case 0: + foo (); + break; + case 1: + break; + } + + + switch (i) + { + case 0: + foo (); + break; + case 1: + break; + } +} +/* { dg-final { scan-tree-dump-times "case 1:" 0 "cfg" } } */ +/* { dg-final { cleanup-tree-dump "cfg" } } */ |