 -/* 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 0.0 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__)) - -#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) - -#ifndef __CHECKER__ -# define __compiletime_warning(message) __attribute__((warning(message))) -# define __compiletime_error(message) __attribute__((error(message))) -#endif /* __CHECKER__ */ -#endif /* GCC_VERSION >= 00000 */ - -#if GCC_VERSION >= 00000 -/* - * 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 0.0 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() - -/* Mark a function definition as prohibited from being cloned. */ -#define __noclone __attribute__((__noclone__)) - -#endif /* GCC_VERSION >= 00000 */ - -#if GCC_VERSION >= 00000 -/* - * Tell the optimizer that something else uses this function or variable. - */ -#define __visible __attribute__((externally_visible)) -