[Bug debug/78288] Compile time hog (with var-tracking) for libsanitizer/asan/asan_interceptors.cc

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Jul 14 09:33:33 GMT 2020


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
  Attachment #48869|0                           |1
        is obsolete|                            |

--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> ---
Created attachment 48873
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=48873&action=edit
updated alternate patch

(In reply to Richard Biener from comment #8)
> files with growth:
> 
> obj/gcc/calls.c.325t.statistics:320 4958                      | 5571
> obj/gcc/prefix.c.325t.statistics:320 115                      | 118
> 
> yes, that's all of them.

The prefix.c one is a two-BB natural loop inside an irreducible region.  Since
we do not represent irreducible regions in the loop tree it is falsely
classified as being independent so the scheduling change could make things
worse here.  Not regressing could be easily achieved by keying the thing on no
BB_IRREDUCIBLE_LOOP block in the function but then we need to compute that.
That said, the patch logic assumes that there's no natural loop inside an
irreducible region at outermost loop level.

mark_irreducible_loops uses graphds_scc which in the end would be all we
need (sorting RPO after the SCC component number).

Updated patch taking into account optimized iteration between two outermost
loops w/o a block in the root loop.


More information about the Gcc-bugs mailing list