Blame view

include/linux/compiler-gcc4.h 2.09 KB
94f582f82   Robert P. J. Day   Force erroneous i...
1
2
3
  #ifndef __LINUX_COMPILER_H
  #error "Please don't include <linux/compiler-gcc4.h> directly, include <linux/compiler.h> instead."
  #endif
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
4

f9d142500   Linus Torvalds   Disallow gcc vers...
5
  /* GCC 4.1.[01] miscompiles __weak */
8cd2c29dd   H. Peter Anvin   compiler-gcc4: co...
6
7
8
9
  #ifdef __KERNEL__
  # if __GNUC_MINOR__ == 1 && __GNUC_PATCHLEVEL__ <= 1
  #  error Your version of gcc miscompiles the __weak directive
  # endif
f9d142500   Linus Torvalds   Disallow gcc vers...
10
  #endif
0d7ebbbc6   David Rientjes   compiler: introdu...
11
  #define __used			__attribute__((__used__))
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
12
13
  #define __must_check 		__attribute__((warn_unused_result))
  #define __compiler_offsetof(a,b) __builtin_offsetof(a,b)
a586df067   Andi Kleen   x86: Support __at...
14

f153b8212   Linus Torvalds   Sanitize gcc vers...
15
  #if __GNUC_MINOR__ >= 3
a586df067   Andi Kleen   x86: Support __at...
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  /* Mark functions as cold. gcc will assume any path leading to a call
     to them will be unlikely.  This means a lot of manual unlikely()s
     are unnecessary now for any paths leading to the usual suspects
     like BUG(), printk(), panic() etc. [but let's keep them for now for
     older compilers]
  
     Early snapshots of gcc 4.3 don't support this and we can't detect this
     in the preprocessor, but we can live with this because they're unreleased.
     Maketime probing would be overkill here.
  
     gcc also has a __attribute__((__hot__)) to move hot functions into
     a special section, but I don't see any sense in this right now in
     the kernel context */
  #define __cold			__attribute__((__cold__))
1399ff86f   David Daney   kernel.h: add BUI...
30
  #define __linktime_error(message) __attribute__((__error__(message)))
38938c879   David Daney   Add support for G...
31
32
33
34
35
36
37
38
39
40
41
42
  
  #if __GNUC_MINOR__ >= 5
  /*
   * Mark a position in code as unreachable.  This can be used to
   * suppress control flow warnings after asm blocks that transfer
   * control elsewhere.
   *
   * Early snapshots of gcc 4.5 don't support this and we can't detect
   * this in the preprocessor, but we can live with this because they're
   * unreleased.  Really, we need to have autoconf for the kernel.
   */
  #define unreachable() __builtin_unreachable()
9c695203a   Mikael Pettersson   compiler-gcc.h: g...
43
44
45
  
  /* Mark a function definition as prohibited from being cloned. */
  #define __noclone	__attribute__((__noclone__))
38938c879   David Daney   Add support for G...
46
  #endif
a586df067   Andi Kleen   x86: Support __at...
47
  #endif
9f0cf4adb   Arjan van de Ven   x86: Use __builti...
48

7cff7ce94   Andrew Morton   include/linux/com...
49
  #if __GNUC_MINOR__ > 0
9f0cf4adb   Arjan van de Ven   x86: Use __builti...
50
  #define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
7cff7ce94   Andrew Morton   include/linux/com...
51
  #endif
746a2a838   KOSAKI Motohiro   sparse: Undef __c...
52
  #if __GNUC_MINOR__ >= 4 && !defined(__CHECKER__)
4a3127693   Arjan van de Ven   x86: Turn the cop...
53
  #define __compiletime_warning(message) __attribute__((warning(message)))
63312b6a6   Arjan van de Ven   x86: Add a Kconfi...
54
  #define __compiletime_error(message) __attribute__((error(message)))
4a3127693   Arjan van de Ven   x86: Turn the cop...
55
  #endif