]> git.ipfire.org Git - thirdparty/gcc.git/commit
rtl-optimization/109237 - quadraticness in delete_trivially_dead_insns
authorRichard Biener <rguenther@suse.de>
Wed, 22 Mar 2023 08:29:49 +0000 (09:29 +0100)
committerRichard Biener <rguenther@suse.de>
Wed, 19 Apr 2023 08:28:42 +0000 (10:28 +0200)
commit675ac8822b51a39f6a66a44858d7c31ece8700f2
tree689f5ae298c28bdcc10d217d45116a257e0a2a57
parent8f81100115f68b37fb2723e987c14a3185d1f47d
rtl-optimization/109237 - quadraticness in delete_trivially_dead_insns

The following addresses quadraticness in processing debug insns
in delete_trivially_dead_insns and insn_live_p by using TREE_VISITED
on the INSN_VAR_LOCATION_DECL to indicate a later debug bind
with the same decl and no intervening real insn or debug marker.
That gets rid of the NEXT_INSN walk in insn_live_p in favor of
first clearing TREE_VISITED in the first loop over insn and
the book-keeping of decls we set the bit since we need to clear
them when visiting a real or debug marker insn.

That improves the time spent in delete_trivially_dead_insns from
10.6s to 2.2s for the testcase.

PR rtl-optimization/109237
* cse.cc (insn_live_p): Remove NEXT_INSN walk, instead check
TREE_VISITED on INSN_VAR_LOCATION_DECL.
(delete_trivially_dead_insns): Maintain TREE_VISITED on
active debug bind INSN_VAR_LOCATION_DECL.
gcc/cse.cc