aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorPeter Bergner <bergner@vnet.ibm.com>2017-05-10 11:44:45 -0500
committerPeter Bergner <bergner@gcc.gnu.org>2017-05-10 11:44:45 -0500
commitca4d28516878755a01ab8c2ba48d083100aba3fb (patch)
tree70d19af5ced974c859545f07f4ad66c75b41b3be /gcc/testsuite
parent415dcf965368a67599b93579848181ecec24f860 (diff)
downloadgcc-ca4d28516878755a01ab8c2ba48d083100aba3fb.zip
gcc-ca4d28516878755a01ab8c2ba48d083100aba3fb.tar.gz
gcc-ca4d28516878755a01ab8c2ba48d083100aba3fb.tar.bz2
tree-cfg.c (gimple_seq_unreachable_p): New function.
gcc/ * tree-cfg.c (gimple_seq_unreachable_p): New function. (assert_unreachable_fallthru_edge_p): Use it. (group_case_labels_stmt): Likewise. * tree-cfg.h: Prototype it. * stmt.c: Include cfghooks.h and tree-cfg.h. (emit_case_dispatch_table) <gap_label>: New local variable. Use it to fill dispatch table gaps. Test for default_label before updating probabilities. (expand_case) <default_label>: Remove unneeded initialization. Test for unreachable default case statement and remove its edge. Set default_label accordingly. * tree-ssa-ccp.c (optimize_unreachable): Update comment. gcc/testsuite/ * gcc.target/powerpc/pr51513.c: New test. * gcc.dg/predict-13.c: Replace __builtin_unreachable() with __builtin_abort(). * gcc.dg/predict-14.c: Likewise. From-SVN: r247844
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog7
-rw-r--r--gcc/testsuite/gcc.dg/predict-13.c4
-rw-r--r--gcc/testsuite/gcc.dg/predict-14.c6
-rw-r--r--gcc/testsuite/gcc.target/powerpc/pr51513.c25
4 files changed, 37 insertions, 5 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ef45039..3e465e4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2017-05-10 Peter Bergner <bergner@vnet.ibm.com>
+
+ * gcc.target/powerpc/pr51513.c: New test.
+ * gcc.dg/predict-13.c: Replace __builtin_unreachable() with
+ __builtin_abort().
+ * gcc.dg/predict-14.c: Likewise.
+
2017-05-10 Carl Love <cel@us.ibm.com>
* gcc.target/powerpc/builtins-3.c: Add tests for the new built-ins to
to the test suite file.
diff --git a/gcc/testsuite/gcc.dg/predict-13.c b/gcc/testsuite/gcc.dg/predict-13.c
index df82b7e..7fe714a 100644
--- a/gcc/testsuite/gcc.dg/predict-13.c
+++ b/gcc/testsuite/gcc.dg/predict-13.c
@@ -10,9 +10,9 @@ int main(int argc, char **argv)
case 2:
return 2;
case 3:
- __builtin_unreachable();
+ __builtin_abort();
case 4:
- __builtin_unreachable();
+ __builtin_abort();
default:
return 5;
}
diff --git a/gcc/testsuite/gcc.dg/predict-14.c b/gcc/testsuite/gcc.dg/predict-14.c
index e241667..18ede8f 100644
--- a/gcc/testsuite/gcc.dg/predict-14.c
+++ b/gcc/testsuite/gcc.dg/predict-14.c
@@ -6,11 +6,11 @@ int main(int argc, char **argv)
switch (argc)
{
case 1:
- __builtin_unreachable();
+ __builtin_abort();
case 4:
- __builtin_unreachable();
+ __builtin_abort();
default:
- __builtin_unreachable();
+ __builtin_abort();
}
return 10;
diff --git a/gcc/testsuite/gcc.target/powerpc/pr51513.c b/gcc/testsuite/gcc.target/powerpc/pr51513.c
new file mode 100644
index 0000000..1c72a75
--- /dev/null
+++ b/gcc/testsuite/gcc.target/powerpc/pr51513.c
@@ -0,0 +1,25 @@
+/* { dg-do compile { target { powerpc*-*-linux* } } } */
+/* { dg-options "-O2 -fjump-tables --param case-values-threshold=1" } */
+/* Verify we created a jump table. */
+/* { dg-final { scan-assembler-times "mtctr " 1 } } */
+/* { dg-final { scan-assembler-times "bctr" 1 } } */
+/* Verify we eliminated the range check. */
+/* { dg-final { scan-assembler-not "cmpldi" } } */
+/* { dg-final { scan-assembler-not "cmplwi" } } */
+
+long
+bug (long cond, long v0, long v1, long v2)
+{
+ switch (cond)
+ {
+ case 0:
+ return v0;
+ case 1:
+ return v1;
+ case 2:
+ return v2;
+ default:
+ __builtin_unreachable ();
+ }
+ __builtin_abort ();
+}