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.