aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/pr42963.c
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2010-04-14 14:50:33 +0000
committerMichael Matz <matz@gcc.gnu.org>2010-04-14 14:50:33 +0000
commitfc249fe5d62c73210b3f752fb45119391d0774f0 (patch)
tree05e8f3fe688ca2ced73803178ff9b08bfa60f8b5 /gcc/testsuite/gcc.dg/pr42963.c
parent289a9f867a78d0c928eed2d9793964b9c7272022 (diff)
downloadgcc-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.c28
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" } } */