https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120358

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Sam James from comment #0)
> Looking at dumps between r15-579-ga9251ab3c91c8c and
> r15-580-gf3e5f4c58591f5, there's a lot of noise like:
> ```
> -  # PT = nonlocal escaped null { D.387695 D.418643 } (nonlocal, escaped)
> -  # USE = nonlocal escaped null { D.387695 D.418643 } (nonlocal, escaped)
> -  # CLB = nonlocal escaped null { D.387695 D.418643 } (nonlocal, escaped)
> +  # PT = nonlocal escaped null const-pool { D.387695 D.418643 } (nonlocal,
> escaped)
> +  # USE = nonlocal escaped null const-pool { D.387695 D.418643 } (nonlocal,
> escaped)
> +  # CLB = nonlocal escaped null const-pool { D.387695 D.418643 } (nonlocal,
> escaped)
> ```

without a testcase it's hard to see what goes wrong - the above is a
correctness fix, we get strictly larger points-to sets.  For ptr-ptr
compares we rely on those being conservative, so possibly we miss more.

I'll note the newer preprocessed source doesn't build around the offending rev
(the old does).

The first actual IL difference happens in VRP1.  Differences in wc -l for
all dump files (w/o details):

qt.ii.120t.threadfull1 0
qt.ii.121t.vrp1 20
qt.ii.122t.dse2 30
..
qt.ii.149t.walloca2 20
qt.ii.150t.pre 29
qt.ii.151t.sink1 53
qt.ii.155t.dse3 43
...
qt.ii.202t.thread2 7
qt.ii.203t.dom3 49
qt.ii.204t.strlen1 39
qt.ii.205t.threadfull2 180
qt.ii.206t.vrp2 106

it's not definite data since there's stuff that should be in -details
leaking into normal dumps.  It's quite difficult to isolate an
offending transform.  Possibly adding a dbgcnt to ptrs_compare_unequal
when it triggers the ptr-vs.-ptr case can track down the bogus offender...

Reply via email to