[Bug tree-optimization/106293] [13/14 Regression] 456.hmmer at -Ofast -march=native regressed by 19% on zen2 and zen3 in July 2022
Jan Hubicka
hubicka@ucw.cz
Fri Jul 28 08:01:04 GMT 2023
> This heuristic wants to catch
>
> <sink stmt>
> if (foo) abort ();
> <place to sink>
>
> and avoid sinking "too far" across a path with "similar enough"
> execution count (I think the original motivation was to fix some
> spilling / register pressure issue). The loop depth test
> should be !(bb_loop_depth (best_bb) < bb_loop_depth (early_bb))
I am still concenred that loop_depth (bb1) < loop_depth (bb2)
does not really imply that bb1 is not in different loop nest with
loop with significantly higher iteration count than bb2...
> so we shouldn't limit sinking to a more outer nest. As we rule
> out > before this becomes ==.
>
> It looks tempting to sink to the earliest place with the same
> execution count rather than the latest but the above doesn't
> really achive that (it doesn't look "upwards" but simply fails).
> With a guessed profile it's also going to be hard.
Statistically guessed profile works quite well for things like placement
of splills in IRA (not perfectly of course) and this looks like kind of
similar thing. So perhaps it could work reasoably well...
>
> And it in no way implements register pressure / spilling sensitivity
> (see also Ajits attempts at producing a patch that avoids sinking
> across a call). All these are ultimatively doomed unless we at least
> consider a group of stmts together.
hmm, life is hard :)
Honza
More information about the Gcc-bugs
mailing list