]> git.ipfire.org Git - people/ms/gcc.git/commit
Backwards jump threader rewrite with ranger.
authorAldy Hernandez <aldyh@redhat.com>
Tue, 15 Jun 2021 10:32:51 +0000 (12:32 +0200)
committerAldy Hernandez <aldyh@redhat.com>
Thu, 29 Jul 2021 06:24:50 +0000 (08:24 +0200)
commit2e96b5f14e4025691b57d2301d71aa6092ed44bc
treeaf5c127a07cf61c4c86e3e347f4545bd4332d227
parente63d76234d18cac731c4f3610d513bd8b39b5520
Backwards jump threader rewrite with ranger.

This is a rewrite of the backwards threader with a ranger based solver.

The code is divided into two parts: the path solver in
gimple-range-path.*, and the path discovery bits in
tree-ssa-threadbackward.c.

The legacy code is still available with --param=threader-mode=legacy,
but will be removed shortly after.

gcc/ChangeLog:

* Makefile.in (tree-ssa-loop-im.o-warn): New.
* flag-types.h (enum threader_mode): New.
* params.opt: Add entry for --param=threader-mode.
* tree-ssa-threadbackward.c (THREADER_ITERATIVE_MODE): New.
(class back_threader): New.
(back_threader::back_threader): New.
(back_threader::~back_threader): New.
(back_threader::maybe_register_path): New.
(back_threader::find_taken_edge): New.
(back_threader::find_taken_edge_switch): New.
(back_threader::find_taken_edge_cond): New.
(back_threader::resolve_def): New.
(back_threader::resolve_phi): New.
(back_threader::find_paths_to_names): New.
(back_threader::find_paths): New.
(dump_path): New.
(debug): New.
(thread_jumps::find_jump_threads_backwards): Call ranger threader.
(thread_jumps::find_jump_threads_backwards_with_ranger): New.
(pass_thread_jumps::execute): Abstract out code...
(try_thread_blocks): ...here.
* tree-ssa-threadedge.c (jump_threader::thread_outgoing_edges):
Abstract out threading candidate code to...
(single_succ_to_potentially_threadable_block): ...here.
* tree-ssa-threadedge.h (single_succ_to_potentially_threadable_block):
New.
* tree-ssa-threadupdate.c (register_jump_thread): Return boolean.
* tree-ssa-threadupdate.h (class jump_thread_path_registry):
Return bool from register_jump_thread.

libgomp/ChangeLog:

* testsuite/libgomp.graphite/force-parallel-4.c: Adjust for
threader.
* testsuite/libgomp.graphite/force-parallel-8.c: Same.

gcc/testsuite/ChangeLog:

* g++.dg/debug/dwarf2/deallocator.C: Adjust for threader.
* gcc.c-torture/compile/pr83510.c: Same.
* dg.dg/analyzer/pr94851-2.c: Same.
* gcc.dg/loop-unswitch-2.c: Same.
* gcc.dg/old-style-asm-1.c: Same.
* gcc.dg/pr68317.c: Same.
* gcc.dg/pr97567-2.c: Same.
* gcc.dg/predict-9.c: Same.
* gcc.dg/shrink-wrap-loop.c: Same.
* gcc.dg/sibcall-1.c: Same.
* gcc.dg/tree-ssa/builtin-sprintf-3.c: Same.
* gcc.dg/tree-ssa/pr21001.c: Same.
* gcc.dg/tree-ssa/pr21294.c: Same.
* gcc.dg/tree-ssa/pr21417.c: Same.
* gcc.dg/tree-ssa/pr21458-2.c: Same.
* gcc.dg/tree-ssa/pr21563.c: Same.
* gcc.dg/tree-ssa/pr49039.c: Same.
* gcc.dg/tree-ssa/pr61839_1.c: Same.
* gcc.dg/tree-ssa/pr61839_3.c: Same.
* gcc.dg/tree-ssa/pr77445-2.c: Same.
* gcc.dg/tree-ssa/split-path-4.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-11.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-12.c: Same.
* gcc.dg/tree-ssa/ssa-dom-thread-14.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-dom-thread-7.c: Same.
* gcc.dg/tree-ssa/ssa-fre-48.c: Same.
* gcc.dg/tree-ssa/ssa-thread-11.c: Same.
* gcc.dg/tree-ssa/ssa-thread-12.c: Same.
* gcc.dg/tree-ssa/ssa-thread-14.c: Same.
* gcc.dg/tree-ssa/vrp02.c: Same.
* gcc.dg/tree-ssa/vrp03.c: Same.
* gcc.dg/tree-ssa/vrp05.c: Same.
* gcc.dg/tree-ssa/vrp06.c: Same.
* gcc.dg/tree-ssa/vrp07.c: Same.
* gcc.dg/tree-ssa/vrp09.c: Same.
* gcc.dg/tree-ssa/vrp19.c: Same.
* gcc.dg/tree-ssa/vrp20.c: Same.
* gcc.dg/tree-ssa/vrp33.c: Same.
* gcc.dg/uninit-pred-9_b.c: Same.
* gcc.dg/uninit-pr61112.c: Same.
* gcc.dg/vect/bb-slp-16.c: Same.
* gcc.target/i386/avx2-vect-aggressive.c: Same.
* gcc.dg/tree-ssa/ranger-threader-1.c: New test.
* gcc.dg/tree-ssa/ranger-threader-2.c: New test.
* gcc.dg/tree-ssa/ranger-threader-3.c: New test.
* gcc.dg/tree-ssa/ranger-threader-4.c: New test.
* gcc.dg/tree-ssa/ranger-threader-5.c: New test.
58 files changed:
gcc/flag-types.h
gcc/params.opt
gcc/testsuite/g++.dg/debug/dwarf2/deallocator.C
gcc/testsuite/gcc.c-torture/compile/pr83510.c
gcc/testsuite/gcc.dg/analyzer/pr94851-2.c
gcc/testsuite/gcc.dg/loop-unswitch-2.c
gcc/testsuite/gcc.dg/old-style-asm-1.c
gcc/testsuite/gcc.dg/pr68317.c
gcc/testsuite/gcc.dg/pr97567-2.c
gcc/testsuite/gcc.dg/predict-9.c
gcc/testsuite/gcc.dg/shrink-wrap-loop.c
gcc/testsuite/gcc.dg/sibcall-1.c
gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-3.c
gcc/testsuite/gcc.dg/tree-ssa/pr21001.c
gcc/testsuite/gcc.dg/tree-ssa/pr21294.c
gcc/testsuite/gcc.dg/tree-ssa/pr21417.c
gcc/testsuite/gcc.dg/tree-ssa/pr21458-2.c
gcc/testsuite/gcc.dg/tree-ssa/pr21563.c
gcc/testsuite/gcc.dg/tree-ssa/pr49039.c
gcc/testsuite/gcc.dg/tree-ssa/pr61839_1.c
gcc/testsuite/gcc.dg/tree-ssa/pr61839_3.c
gcc/testsuite/gcc.dg/tree-ssa/pr77445-2.c
gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/ranger-threader-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/tree-ssa/split-path-4.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-11.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-12.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-14.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-18.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-6.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-48.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-11.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-12.c
gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-14.c
gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
gcc/testsuite/gcc.dg/tree-ssa/vrp19.c
gcc/testsuite/gcc.dg/tree-ssa/vrp20.c
gcc/testsuite/gcc.dg/tree-ssa/vrp33.c
gcc/testsuite/gcc.dg/uninit-pr61112.c
gcc/testsuite/gcc.dg/uninit-pred-9_b.c
gcc/testsuite/gcc.dg/vect/bb-slp-16.c
gcc/testsuite/gcc.target/i386/avx2-vect-aggressive.c
gcc/tree-ssa-threadbackward.c
gcc/tree-ssa-threadedge.c
gcc/tree-ssa-threadedge.h
gcc/tree-ssa-threadupdate.c
gcc/tree-ssa-threadupdate.h
libgomp/testsuite/libgomp.graphite/force-parallel-4.c
libgomp/testsuite/libgomp.graphite/force-parallel-8.c