diff options
author | Aldy Hernandez <aldyh@redhat.com> | 2021-09-11 17:33:25 +0200 |
---|---|---|
committer | Aldy Hernandez <aldyh@redhat.com> | 2021-09-13 16:34:48 +0200 |
commit | c7a669af0aeb639eb78f1614cbecb72a98d81ce8 (patch) | |
tree | a696301076a76ac2f3a927db342d94b700b0ff33 /gcc/testsuite | |
parent | c8b2b89358481d36755dbc99e585a251780453b0 (diff) | |
download | gcc-c7a669af0aeb639eb78f1614cbecb72a98d81ce8.zip gcc-c7a669af0aeb639eb78f1614cbecb72a98d81ce8.tar.gz gcc-c7a669af0aeb639eb78f1614cbecb72a98d81ce8.tar.bz2 |
Remove references to FSM threads.
Now that the jump thread back registry has been split into the generic
copier and the custom (old) copier, it becomes trivial to remove the
FSM bits from the jump threaders.
First, there's no need for an EDGE_FSM_THREAD type. The only reason
we were looking at the threading type was to determine what type of
copier to use, and now that the copier has been split, there's no need
to even look. However, there is one check in register_jump_thread
where we verify that only the generic copier can thread through
back-edges. I've removed that check in favor of a flag passed to the
constructor.
I've also removed all the FSM references from the code and tests.
Interestingly, some tests weren't even testing the right thing. They
were testing for "FSM" which would catch jump thread paths as well as
the backward threader *failing* on registering a path. *big eye roll*
The only remaining code that was actually checking for EDGE_FSM_THREAD
was adjust_paths_after_duplication, and the checks could be written
without looking at the edge type at all. For the record, the code
there is horrible: it's convoluted, hard to read, and doesn't have any
tests. I'd smack myself if I could go back in time.
All that remains are the FSM references in the --param's themselves.
I think we should s/fsm/threader/, since I envision a day when we can
share the cost basis code between the threaders. However, I don't
know what the proper procedure is for renaming existing compiler
options.
By the way, param_fsm_maximum_phi_arguments is no longer relevant
after the rewrite. We can nuke that one right away.
Tested on x86-64 Linux.
gcc/ChangeLog:
* tree-ssa-threadbackward.c
(back_threader_profitability::profitable_path_p): Remove FSM
references.
(back_threader_registry::register_path): Same.
* tree-ssa-threadedge.c
(jump_threader::simplify_control_stmt_condition): Same.
* tree-ssa-threadupdate.c (jt_path_registry::jt_path_registry):
Add backedge_threads argument.
(fwd_jt_path_registry::fwd_jt_path_registry): Pass
backedge_threads argument.
(back_jt_path_registry::back_jt_path_registry): Same.
(dump_jump_thread_path): Adjust for FSM removal.
(back_jt_path_registry::rewire_first_differing_edge): Same.
(back_jt_path_registry::adjust_paths_after_duplication): Same.
(back_jt_path_registry::update_cfg): Same.
(jt_path_registry::register_jump_thread): Same.
* tree-ssa-threadupdate.h (enum jump_thread_edge_type): Remove
EDGE_FSM_THREAD.
(class back_jt_path_registry): Add backedge_threads to
constructor.
gcc/testsuite/ChangeLog:
* gcc.dg/tree-ssa/pr21417.c: Adjust for FSM removal.
* gcc.dg/tree-ssa/pr66752-3.c: Same.
* gcc.dg/tree-ssa/pr68198.c: Same.
* gcc.dg/tree-ssa/pr69196-1.c: Same.
* gcc.dg/tree-ssa/pr70232.c: Same.
* gcc.dg/tree-ssa/pr77445.c: Same.
* gcc.dg/tree-ssa/ranger-threader-4.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-18.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-6.c: Same.
* gcc.dg/tree-ssa/ssa-thread-12.c: Same.
* gcc.dg/tree-ssa/ssa-thread-13.c: Same.
Diffstat (limited to 'gcc/testsuite')
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr21417.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr66752-3.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr68198.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr70232.c | 12 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/pr77445.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-4.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-18.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c | 7 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c | 2 |
11 files changed, 21 insertions, 22 deletions
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c index fc14af4..b934c9c 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21417.c @@ -49,5 +49,5 @@ L23: /* We should thread the backedge to the top of the loop; ie we only execute the if (expr->common.code != 142) test once per loop iteration. */ -/* { dg-final { scan-tree-dump-times "FSM jump thread" 1 "thread4" } } */ +/* { dg-final { scan-tree-dump-times "jump thread" 1 "thread4" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr66752-3.c b/gcc/testsuite/gcc.dg/tree-ssa/pr66752-3.c index 896c8bf..e1464e2 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr66752-3.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr66752-3.c @@ -32,9 +32,9 @@ foo (int N, int c, int b, int *a) pt--; } -/* There are 4 FSM jump threading opportunities, all of which will be +/* There are 4 jump threading opportunities, all of which will be realized, which will eliminate testing of FLAG, completely. */ -/* { dg-final { scan-tree-dump-times "Registering FSM" 4 "thread1"} } */ +/* { dg-final { scan-tree-dump-times "Registering jump" 4 "thread1"} } */ /* There should be no assignments or references to FLAG, verify they're eliminated as early as possible. */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr68198.c b/gcc/testsuite/gcc.dg/tree-ssa/pr68198.c index 59d562e..af8b7a5 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr68198.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr68198.c @@ -37,5 +37,5 @@ c_finish_omp_clauses (tree clauses) } } -/* There are 3 FSM jump threading opportunities. */ -/* { dg-final { scan-tree-dump-times "Registering FSM" 3 "thread1"} } */ +/* There are 3 jump threading opportunities. */ +/* { dg-final { scan-tree-dump-times "Registering jump" 3 "thread1"} } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c index 960491f..dfabb48 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr69196-1.c @@ -1,7 +1,7 @@ /* { dg-do compile { target sparc*-*-* i?86-*-* x86_64-*-* } } */ /* { dg-options "-O2 -fdump-tree-thread1-details -fdisable-tree-ethread" } */ -/* { dg-final { scan-tree-dump "FSM did not thread around loop and would copy too many statements" "thread1" } } */ +/* { dg-final { scan-tree-dump "Did not thread around loop and would copy too many statements" "thread1" } } */ typedef __builtin_va_list __gnuc_va_list; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr70232.c b/gcc/testsuite/gcc.dg/tree-ssa/pr70232.c index 6cc987a..d636672 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr70232.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr70232.c @@ -1,12 +1,12 @@ /* { dg-do compile } */ /* { dg-options "-O2 -w -fdump-tree-vrp1-details -fdump-tree-vrp2-details -fdump-tree-dom2-details -fdump-tree-dom3-details" } */ -/* All the threads found by the FSM threader should have too - many statements to be profitable. */ -/* { dg-final { scan-tree-dump-not "Registering FSM " "dom2"} } */ -/* { dg-final { scan-tree-dump-not "Registering FSM " "dom3"} } */ -/* { dg-final { scan-tree-dump-not "Registering FSM " "vrp1"} } */ -/* { dg-final { scan-tree-dump-not "Registering FSM " "vrp2"} } */ +/* All the threads found by the threader should have too many + statements to be profitable. */ +/* { dg-final { scan-tree-dump-not "Registering jump " "dom2"} } */ +/* { dg-final { scan-tree-dump-not "Registering jump " "dom3"} } */ +/* { dg-final { scan-tree-dump-not "Registering jump " "vrp1"} } */ +/* { dg-final { scan-tree-dump-not "Registering jump " "vrp2"} } */ typedef _Bool bool; typedef unsigned char uint8_t; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr77445.c b/gcc/testsuite/gcc.dg/tree-ssa/pr77445.c index 98eb0f2..883a63d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/pr77445.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/pr77445.c @@ -25,5 +25,5 @@ main (int argc) if (b) test2 (); } -/* { dg-final { scan-tree-dump-times "Registering FSM jump thread" 2 "thread3" } } */ +/* { dg-final { scan-tree-dump-times "Registering jump thread" 2 "thread3" } } */ /* { dg-final { scan-tree-dump-not "Invalid sum" "thread3" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-4.c b/gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-4.c index e8d1cfc..d5aa2e8 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-4.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-4.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-additional-options "-O2 -fdump-tree-vrp-details -fdump-tree-thread1-details --param logical-op-non-short-circuit=1" } */ -/* { dg-final { scan-tree-dump-times "Registering FSM jump" 8 "thread1" } } */ +/* { dg-final { scan-tree-dump-times "Registering jump" 8 "thread1" } } */ /* Copied from ssa-thread-14. */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-18.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-18.c index 03872e7..60d4f76 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-18.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-18.c @@ -21,5 +21,5 @@ condition. All the cases are picked up by VRP1 as jump threads. */ -/* { dg-final { scan-tree-dump-times "Registering FSM jump" 6 "thread1" } } */ +/* { dg-final { scan-tree-dump-times "Registering jump" 6 "thread1" } } */ /* { dg-final { scan-tree-dump-times "Threaded" 2 "vrp1" } } */ diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c index ee46759..b0a7d42 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c @@ -1,8 +1,8 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-thread1-details -fdump-tree-thread3-details" } */ -/* { dg-final { scan-tree-dump-times "Registering FSM jump" 6 "thread1" } } */ -/* { dg-final { scan-tree-dump-times "Registering FSM jump" 1 "thread3" } } */ +/* { dg-final { scan-tree-dump-times "Registering jump" 6 "thread1" } } */ +/* { dg-final { scan-tree-dump-times "Registering jump" 1 "thread3" } } */ int sum0, sum1, sum2, sum3; int foo (char *s, char **ret) diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c index 8f55464..08c0b8d 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c @@ -1,8 +1,7 @@ /* { dg-do compile } */ -/* { dg-options "-O2 -fdump-tree-thread2-details -fdump-tree-thread3-details -fdump-tree-thread4-details -fno-finite-loops --param early-inlining-insns=14 -fno-inline-functions" } */ -/* { dg-final { scan-tree-dump "FSM" "thread2" } } */ -/* { dg-final { scan-tree-dump "FSM" "thread3" } } */ -/* { dg-final { scan-tree-dump "FSM" "thread4" } } */ +/* { dg-options "-O2 -fdump-tree-thread3-details -fdump-tree-thread4-details -fno-finite-loops --param early-inlining-insns=14 -fno-inline-functions" } */ +/* { dg-final { scan-tree-dump "Registering jump thread" "thread3" } } */ +/* { dg-final { scan-tree-dump "Registering jump thread" "thread4" } } */ typedef struct bitmap_head_def *bitmap; typedef const struct bitmap_head_def *const_bitmap; diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c index 061f223..ad38b89 100644 --- a/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c +++ b/gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c @@ -1,6 +1,6 @@ /* { dg-do compile } */ /* { dg-options "-O2 -fdump-tree-ethread-details" } */ -/* { dg-final { scan-tree-dump "FSM" "ethread" } } */ +/* { dg-final { scan-tree-dump "Registering jump thread" "ethread" } } */ typedef struct rtx_def *rtx; typedef const struct rtx_def *const_rtx; |