On Fri, Oct 15, 2021 at 6:53 AM Andrew MacLeod via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > I've been looking at the pathological time issue ranger has with the > testcase from, uuuuuh.. PR 97623 I think. I've lost the details, but > kept the file since it was showing unpleasant behaviour. > > Most of the time is spent in callbacks from substitute_and_fold to > value_on_edge() dealing with PHI results and arguments. Turns out, its > virtually all wasted time dealing with SSA_NAMES with the > OCCURS_IN_ABNORMAL_PHI flag set.. > > This patch tells ranger not to consider any SSA_NAMEs which occur in > abnormal PHIs. This reduces the memory footprint of all the caches, and > also has a ripple effect with the new threader code which uses the GORI > exports and imports tables, making it faster as well as no ssa-name with > the abnormal flag set will be entered into the tables. > > That alone was not quite enough, as all the sheer volume of call backs > still took time, so I added checks in the value_of_* class of routines > used by substitute_and_fold to indicate there is no constant value > available for any SSA_NAME with that flag set. > > On my x86_64 box, before this change, that test case looked like: > > tree VRP : 7.76 ( 4%) 0.23 ( 5%) 8.02 > ( 4%) 537k ( 0%) > tree VRP threader : 7.20 ( 4%) 0.08 ( 2%) 7.28 ( > 4%) 392k ( 0%) > tree Early VRP : 39.22 ( 22%) 0.07 ( 2%) 39.44 ( > 22%) 1142k ( 0%) > > And with this patch , the results are: > > tree VRP : 7.57 ( 6%) 0.26 ( 5%) 7.85 > ( 6%) 537k ( 0%) > tree VRP threader : 0.62 ( 0%) 0.02 ( 0%) 0.65 > ( 0%) 392k ( 0%) > tree Early VRP : 4.00 ( 3%) 0.01 ( 0%) 4.03 > ( 3%) 1142k ( 0%) > > Which is a significant improvement, both for EVRP and the threader.. > > The patch adjusts the ranger folder, as well as the hybrid folder. > > bootstrapped on x86_64-pc-linux-gnu with no regressions and no missed > cases that I have been able to find.
Did you test it with go enabled? Because others and myself are now running into a bootstrap failure most likely due to this patch. The number of SSA_NAME_OCCURS_IN_ABNORMAL_PHI in go is increased due to -fnon-call-exceptions being true there. Thanks, Andrew Pinski PS here is the ICE for me: libtool: compile: /home/apinski/src/upstream-gcc/gcc/objdir/./gcc/gccgo -B/home/apinski/src/upstream-gcc/gcc/objdir/./gcc/ -B/home/apinski/upstream-gcc/x86_64-pc-linux-gnu/bin/ -B/home/apinski/upstream-gcc/x86_64-pc-linux-gnu/lib/ -isystem /home/apinski/upstream-gcc/x86_64-pc-linux-gnu/include -isystem /home/apinski/upstream-gcc/x86_64-pc-linux-gnu/sys-include -fchecking=1 -minline-all-stringops -O2 -g -m32 -I . -c -fgo-pkgpath=cmd/go/internal/modget /home/apinski/src/upstream-gcc/gcc/libgo/go/cmd/go/internal/modget/get.go /home/apinski/src/upstream-gcc/gcc/libgo/go/cmd/go/internal/modget/query.go -o cmd/go/internal/modget.o during GIMPLE pass: evrp In function ‘cmd/go/internal/modget.resolver.resolveQueries’: go1: internal compiler error: tree check: expected class ‘type’, have ‘exceptional’ (error_mark) in useless_type_conversion_p, at gimple-expr.c:87 0x862719 tree_class_check_failed(tree_node const*, tree_code_class, char const*, int, char const*) /home/apinski/src/upstream-gcc/gcc/gcc/tree.c:8739 0x7910ed tree_class_check(tree_node*, tree_code_class, char const*, int, char const*) /home/apinski/src/upstream-gcc/gcc/gcc/tree.h:3556 0x7910ed useless_type_conversion_p(tree_node*, tree_node*) /home/apinski/src/upstream-gcc/gcc/gcc/gimple-expr.c:87 0xf81a58 verify_gimple_phi /home/apinski/src/upstream-gcc/gcc/gcc/tree-cfg.c:5128 0xf81a58 verify_gimple_in_cfg(function*, bool) /home/apinski/src/upstream-gcc/gcc/gcc/tree-cfg.c:5457 0xe54a57 execute_function_todo /home/apinski/src/upstream-gcc/gcc/gcc/passes.c:2042 0xe5546e execute_todo /home/apinski/src/upstream-gcc/gcc/gcc/passes.c:2096 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. > > I don't want to push it quite yet as I wanted feedback to make sure we > don't actually do anything I'm not aware of with SSA_NAMES which have > the ABNORMAL_PHI flag set. Most of the code i can find in VRP and > vr-values appears to punt, so I presume not even considering those names > is fine? > > This also seems like something that might be worth back-porting, > especially the hybrid pass parts... > > Andrew > >