Hi, On Thu, Mar 12, 2020 at 10:29:45PM +0000, Segher Boessenkool wrote: > The df dataflow solvers use the aux field in the basic_block struct, > although that is reserved for any use by passes. And not only that, > it is required that you set all such fields to NULL before calling > the solvers, or you quietly get wrong results. > > This changes the solvers to use a local array for last_change_age > instead, just like it already had a local array for last_visit_age. > > Tested on powerpc64-linux {-m32,-m64}. Also tested with the tests for > PR94042, which it also solves (I need to confirm that still though, > there are other testsuite problems interfering with my testing).
I can confirm it also fixes PR94042, no extra patch to shrink-wrap is needed even (as I thought before). Segher > PR rtl-optimization/94148 > PR rtl-optimization/94042 > * df-core.c (BB_LAST_CHANGE_AGE): Delete. > (df_worklist_propagate_forward): New parameter last_change_age, use > that instead of bb->aux. > (df_worklist_propagate_backward): Ditto. > (df_worklist_dataflow_doublequeue): Use a local array last_change_age.