bug: When !CONFIG_BUG, simplify WARN_ON_ONCE and family
PATCH 1/1 bug: When !CONFIG_BUG, simplify WARN_ON_ONCE and family
When !CONFIG_BUG, WARN_ON and family become simple passthroughs of their condition argument; however, WARN_ON_ONCE and family still have conditions and a boolean to detect one-time invocation, even though the warning they'd emit doesn't exist. Make the existing definitions conditional on CONFIG_BUG, and map them all to the passthrough WARN_ON when !CONFIG_BUG.
This saves 4.4k on a minimized configuration (smaller than allnoconfig), and 20.6k with defconfig plus CONFIG_BUG=n.
Signed-off-by Josh Triplett <[email protected]>
--- include/asm-generic/bug.h | 57 +++++++++++++++++++++++++---------------------- 1 file changed, 30 insertions(+), 27 deletions(-)
include/asm-generic/bug.h +30 -27
@@ -106,33 +106,6 @@ extern void warn_slowpath_null(const char *file, const int line);unlikely (__ret_warn_on); \ }) -#else /* !CONFIG_BUG */ -#ifndef HAVE_ARCH_BUG -#define BUG () do {} while(0) -#endif - -#ifndef HAVE_ARCH_BUG_ON -#define BUG_ON (condition) do { if (condition) ; } while(0) -#endif - -#ifndef HAVE_ARCH_WARN_ON -#define WARN_ON (condition) ({ \ - int __ret_warn_on = !!(condition); \ - unlikely(__ret_warn_on); \ -}) -#endif - -#ifndef WARN -#define WARN(condition, format...) ({ \ - int __ret_warn_on = !!(condition); \ - unlikely(__ret_warn_on); \ -}) -#endif - -#define WARN_TAINT(condition, taint, format...) WARN_ON(condition) - -#endif -#define WARN_ON_ONCE (condition) ({ \ static bool __section(.data.unlikely) __warned; \ int __ret_warn_once = !!(condition); \
@@ -163,6 +136,36 @@ extern void warn_slowpath_null(const char *file, const int line);unlikely (__ret_warn_once); \ }) +#else /* !CONFIG_BUG */ +#ifndef HAVE_ARCH_BUG +#define BUG () do {} while(0) +#endif + +#ifndef HAVE_ARCH_BUG_ON +#define BUG_ON (condition) do { if (condition) ; } while(0) +#endif + +#ifndef HAVE_ARCH_WARN_ON +#define WARN_ON (condition) ({ \ + int __ret_warn_on = !!(condition); \ + unlikely(__ret_warn_on); \ +}) +#endif + +#ifndef WARN +#define WARN(condition, format...) ({ \ + int __ret_warn_on = !!(condition); \ + unlikely(__ret_warn_on); \ +}) +#endif + +#define WARN_ON_ONCE (condition) WARN_ON(condition) +#define WARN_ONCE(condition, format...) WARN_ON(condition) +#define WARN_TAINT(condition, taint, format...) WARN_ON(condition) +#define WARN_TAINT_ONCE(condition, taint, format...) WARN_ON(condition) + +#endif +/* * WARN_ON_SMP() is for cases that the warning is either * meaningless for !SMP or may even cause failures.
Signature · 1 line
1.8.4.rc3