http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46176

           Summary: profile feedback causes 20% linux kernel binary growth
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: andi-...@firstfloor.org


Recent gcc 4.6 snapshot on x86_64-linux.

I did an experimental patch to use profile feedback with the Linux kernel
With a very simple training run (covering only ~50% of the files partially)
Unfortunately recompiling with the feedback data leads to a 20% larger
binary. This is compiled using -O2.

Trained:
   text    data     bss     dec     hex filename
13615040        1202668 1357680 16175388         f6d11c vmlinux

Untrained:
11136452        1200876 1357552 13694880         d0f7a0 vmlinux

Comparing the symbols with the largest growth I get:

add/remove: 674/2006 grow/shrink: 12172/4139 up/down: 3000900/-510189 (2490711)
function                                     old     new   delta
r600_kms_blit_copy                          2640   16394  +13754
static.do_con_write                            -   10681  +10681
r600_blit_copy                             10605   21205  +10600
zlib_inflate                                5459   15261   +9802
static.rv770_startup                           -    9541   +9541
e1000_setup_copper_link                        -    9510   +9510
e1000_diag_test                            14064   22948   +8884
kmem_cache_create                           1385   10227   +8842

I have not analyzed it in detail, but current suspicion is much
more aggressive inlining?

Note also that a lot of functions were using fallback profiling data
because the training load wasn't very good.

Reply via email to