linux/include
Andi Kleen a586df067a x86: Support __attribute__((__cold__)) in gcc 4.3
gcc 4.3 supports a new __attribute__((__cold__)) to mark functions cold. Any
path directly leading to a call of this function will be unlikely. And gcc
will try to generate smaller code for the function itself.

Please use with care. The code generation advantage isn't large and in most
cases it is not worth uglifying code with this.

This patch marks some common error functions like panic(), printk()
as cold.  This will longer term make many unlikely()s unnecessary, although
we can keep them for now for older compilers.

BUG is not marked cold because there is currently no way to tell
gcc to mark a inline function told.

Also all __init and __exit functions are marked cold. With a non -Os
build this will tell the compiler to generate slightly smaller code
for them. I think it currently only uses less alignments for labels,
but that might change in the future.

One disadvantage over *likely() is that they cannot be easily instrumented
to verify them.

Another drawback is that only the latest gcc 4.3 snapshots support this.
Unfortunately we cannot detect this using the preprocessor. This means older
snapshots will fail now. I don't think that's a problem because they are
unreleased compilers that nobody should be using.

gcc also has a __hot__ attribute, but I don't see any sense in using
this in the kernel right now. But someday I hope gcc will be able
to use more aggressive optimizing for hot functions even in -Os,
if that happens it should be added.

Includes compile fix from Thomas Gleixner.

Cc: Jan Hubicka <jh@suse.cz>
Signed-off-by: Andi Kleen <ak@suse.de>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-21 18:37:08 -07:00
..
acpi
asm-alpha [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-arm [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-arm26 [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-avr32 arch: personality independent stack top 2007-07-19 10:04:45 -07:00
asm-blackfin fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-cris arch: personality independent stack top 2007-07-19 10:04:45 -07:00
asm-frv arch: personality independent stack top 2007-07-19 10:04:45 -07:00
asm-generic i386: Put allocated ELF notes in read-only data segment 2007-07-19 10:04:47 -07:00
asm-h8300 arch: personality independent stack top 2007-07-19 10:04:45 -07:00
asm-i386 i386: Move all simple string operations out of line 2007-07-21 18:37:08 -07:00
asm-ia64 Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/aegl/linux-2.6 2007-07-20 12:02:20 -07:00
asm-m32r [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-m68k m68k iomem (based on Geert's tree + memcpy_... stuff) 2007-07-20 08:24:49 -07:00
asm-m68knommu m68knommu: remove is_in_rom() function 2007-07-19 10:04:51 -07:00
asm-mips [MIPS] User stack pointer randomisation 2007-07-20 18:57:40 +01:00
asm-parisc [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-powerpc [CELL] spufs: rework list management and associated locking 2007-07-20 21:42:28 +02:00
asm-ppc [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-s390 [PATCH] sched: sched_cacheflush is now unused 2007-07-19 21:28:35 +02:00
asm-sh sh: intc - add support for SH7750 and its variants 2007-07-20 18:44:49 +09:00
asm-sh64 sh64: Wire up fallocate() syscall. 2007-07-20 12:37:51 +09:00
asm-sparc [SPARC]: Implement fb_is_primary_device(). 2007-07-20 17:15:09 -07:00
asm-sparc64 [SPARC64]: Convert parport to of_platform_driver. 2007-07-20 17:15:35 -07:00
asm-um arch: personality independent stack top 2007-07-19 10:04:45 -07:00
asm-v850 fbdev: detect primary display device 2007-07-17 10:23:11 -07:00
asm-x86_64 x86_64: Always use builtin memcpy on gcc 4.3 2007-07-21 18:37:08 -07:00
asm-xtensa arch: personality independent stack top 2007-07-19 10:04:45 -07:00
crypto
keys
linux x86: Support __attribute__((__cold__)) in gcc 4.3 2007-07-21 18:37:08 -07:00
math-emu
media V4L/DVB (5835): saa7146/dvb-ttpci: Fix signedness warnings (gcc 4.1.1, kernel 2.6.22) 2007-07-18 14:24:44 -03:00
mtd UBI: kill homegrown endian macros 2007-07-18 16:53:49 +03:00
net Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/selinux-2.6 2007-07-19 14:42:40 -07:00
pcmcia
rdma
rxrpc
scsi [SCSI] Remove unused method scsi_device_cancel 2007-07-14 16:01:16 -05:00
sound [ALSA] version 1.0.14 2007-07-20 11:13:35 +02:00
video tgafb: actually allocate memory for the pseudo_palette 2007-07-17 10:23:12 -07:00
xen xen: Place vcpu_info structure into per-cpu memory 2007-07-18 08:47:45 -07:00
Kbuild