Re: [patch 00/2] improve .text size on gcc 4.0 and newer compilers

Arjan van de Ven
2005-12-29T22:58:21Z

Some data from an x86-64 allyesconfig build.

Below is a *rough* estimate of savings that could be achieved by
uninlining specific functions. The estimate is rough in the sense that it assumes
that no "trick" allows the uninlined version to be significantly smaller
than the inlined version, which for certain functions is not a valid
assumption (kmalloc comes to mind as an obvious one).

The saving is estimated at (count-1) * (size-6), eg the estimate for a
function call is 6 bytes as well and the estimate for the size something
takes as inlined is the same as the uninline size.

These are the top items only; a more complete list can be gotten
from http://www.fenrus.org/savings

Est saving function name count uninline size
----------------------------------------------------------------------
95940 down [2461] <45>
84392 skb_put [1097] <83>
50932 kfree_skb [1499] <40>
44880 init_waitqueue_head [881] <57>
34840 lowmem_page_address [537] <71>
25573 cfi_build_cmd [108] <245>
19825 skb_push [326] <67>
17992 aic_outb [347] <58>
17434 module_put [380] <52>
16318 ahd_outb [399] <47>
16035 kmalloc [3208] <11>
14040 netif_wake_queue [361] <45>
13266 dev_kfree_skb_irq [202] <72>
12078 signal_pending [672] <24>
11979 ahc_outb [364] <39>
11603 down_interruptible [284] <47>
11552 ahd_inb [305] <44>
11310 dst_release [175] <71>
11275 netif_stop_queue [452] <31>
11165 down_write [320] <41>
11107 ahc_inb [384] <35>
10807 usb_fill_bulk_urb [102] <113>
10508 ahd_set_modes [72] <154>
10266 skb_queue_head_init [178] <64>