diff options
author | Peter Bergner <bergner@vnet.ibm.com> | 2017-05-10 11:44:45 -0500 |
---|---|---|
committer | Peter Bergner <bergner@gcc.gnu.org> | 2017-05-10 11:44:45 -0500 |
commit | ca4d28516878755a01ab8c2ba48d083100aba3fb (patch) | |
tree | 70d19af5ced974c859545f07f4ad66c75b41b3be /gcc/testsuite | |
parent | 415dcf965368a67599b93579848181ecec24f860 (diff) | |
download | gcc-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/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/predict-13.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/predict-14.c | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/powerpc/pr51513.c | 25 |
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 (); +} |