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

--- Comment #26 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #25)
> When considering the patch from comment#18 additional data is that only
> 95802 out of 636160 disambiguations that ultimately require base_alias_check
> involve non-CONST_INT_P "other" operand.  That is out of 9531871 total
> cases that would run into base_alias_check, or 1%.
> 
> This is w/o "fixing" DSE (the simple patch of course miscompiles things).

Sorting by invoking pass this is

    236 combine
   8138 cse1
   8404 cse2
   1423 cse_local
 144964 dse1
  83650 dse2
    350 ira
  32000 postreload
  32758 sched2
  75866 vartrack

so the majority comes from DSE (note the above numbers are for the full
boostrap so not comparable to the numbers quoted which are just for
stage3-gcc/*.o)

From CSE I also see the weird

(mem:TF (plus:SI (reg/f:SI 7 sp)
        (scratch:SI)) [0  S16 A8])
 vs. (mem/c:TF (plus:SI (reg/f:SI 19 frame)
        (const_int -16 [0xfffffffffffffff0])) [1  S16 A128])

what's this (scratch:SI)!?  Anyway, I wonder how with unknown scratch
value base_alias_check can figure out the above do not alias.

Reply via email to