• Andi Kleen's avatar
    x86, generic: mark complex bitops.h inlines as __always_inline · c8399943
    Andi Kleen authored
    Impact: reduce kernel image size
    
    Hugh Dickins noticed that older gcc versions when the kernel
    is built for code size didn't inline some of the bitops.
    
    Mark all complex x86 bitops that have more than a single
    asm statement or two as always inline to avoid this problem.
    
    Probably should be done for other architectures too.
    
    Ingo then found a better fix that only requires
    a single line change, but it unfortunately only
    works on gcc 4.3.
    
    On older gccs the original patch still makes a ~0.3% defconfig
    difference with CONFIG_OPTIMIZE_INLINING=y.
    
    With gcc 4.1 and a defconfig like build:
    
        61169987 1138540  883788 8139326  7c323e vmlinux-oi-with-patch
        6137043 1138540  883788 8159371  7c808b vmlinux-optimize-inlining
    
    ~20k / 0.3% difference.
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    c8399943
__ffs.h 738 Bytes