All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Alexander Lobakin <alexandr.lobakin@intel.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev,
	linux-kernel@vger.kernel.org, Yury Norov <yury.norov@gmail.com>,
	Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Subject: lib/test_bitmap.c:920:2: error: call to __compiletime_assert_348 declared with 'error' attribute: BUILD_BUG_ON failed: !__builtin_constant_p(res)
Date: Mon, 17 Jul 2023 12:42:57 +0800	[thread overview]
Message-ID: <202307171254.yFcH97ej-lkp@intel.com> (raw)

Hi Alexander,

FYI, the error/warning still remains.

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   fdf0eaf11452d72945af31804e2a1048ee1b574c
commit: dc34d5036692c614eef23c1130ee42a201c316bf lib: test_bitmap: add compile-time optimization/evaluations assertions
date:   1 year, 1 month ago
config: arm64-randconfig-r031-20230717 (https://download.01.org/0day-ci/archive/20230717/202307171254.yFcH97ej-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce: (https://download.01.org/0day-ci/archive/20230717/202307171254.yFcH97ej-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202307171254.yFcH97ej-lkp@intel.com/

All errors (new ones prefixed by >>):

>> lib/test_bitmap.c:920:2: error: call to __compiletime_assert_348 declared with 'error' attribute: BUILD_BUG_ON failed: !__builtin_constant_p(res)
           BUILD_BUG_ON(!__builtin_constant_p(res));
           ^
   include/linux/build_bug.h:50:2: note: expanded from macro 'BUILD_BUG_ON'
           BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
           ^
   include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
   #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
                                       ^
   include/linux/compiler_types.h:352:2: note: expanded from macro 'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
           ^
   include/linux/compiler_types.h:340:2: note: expanded from macro '_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:333:4: note: expanded from macro '__compiletime_assert'
                           prefix ## suffix();                             \
                           ^
   <scratch space>:287:1: note: expanded from here
   __compiletime_assert_348
   ^
   1 error generated.


vim +/error +920 lib/test_bitmap.c

   871	
   872	static void __init test_bitmap_const_eval(void)
   873	{
   874		DECLARE_BITMAP(bitmap, BITS_PER_LONG);
   875		unsigned long initvar = BIT(2);
   876		unsigned long bitopvar = 0;
   877		unsigned long var = 0;
   878		int res;
   879	
   880		/*
   881		 * Compilers must be able to optimize all of those to compile-time
   882		 * constants on any supported optimization level (-O2, -Os) and any
   883		 * architecture. Otherwise, trigger a build bug.
   884		 * The whole function gets optimized out then, there's nothing to do
   885		 * in runtime.
   886		 */
   887	
   888		/*
   889		 * Equals to `unsigned long bitmap[1] = { GENMASK(6, 5), }`.
   890		 * Clang on s390 optimizes bitops at compile-time as intended, but at
   891		 * the same time stops treating @bitmap and @bitopvar as compile-time
   892		 * constants after regular test_bit() is executed, thus triggering the
   893		 * build bugs below. So, call const_test_bit() there directly until
   894		 * the compiler is fixed.
   895		 */
   896		bitmap_clear(bitmap, 0, BITS_PER_LONG);
   897	#if defined(__s390__) && defined(__clang__)
   898		if (!const_test_bit(7, bitmap))
   899	#else
   900		if (!test_bit(7, bitmap))
   901	#endif
   902			bitmap_set(bitmap, 5, 2);
   903	
   904		/* Equals to `unsigned long bitopvar = BIT(20)` */
   905		__change_bit(31, &bitopvar);
   906		bitmap_shift_right(&bitopvar, &bitopvar, 11, BITS_PER_LONG);
   907	
   908		/* Equals to `unsigned long var = BIT(25)` */
   909		var |= BIT(25);
   910		if (var & BIT(0))
   911			var ^= GENMASK(9, 6);
   912	
   913		/* __const_hweight<32|64>(GENMASK(6, 5)) == 2 */
   914		res = bitmap_weight(bitmap, 20);
   915		BUILD_BUG_ON(!__builtin_constant_p(res));
   916		BUILD_BUG_ON(res != 2);
   917	
   918		/* !(BIT(31) & BIT(18)) == 1 */
   919		res = !test_bit(18, &bitopvar);
 > 920		BUILD_BUG_ON(!__builtin_constant_p(res));
   921		BUILD_BUG_ON(!res);
   922	
   923		/* BIT(2) & GENMASK(14, 8) == 0 */
   924		res = initvar & GENMASK(14, 8);
   925		BUILD_BUG_ON(!__builtin_constant_p(res));
   926		BUILD_BUG_ON(res);
   927	
   928		/* ~BIT(25) */
   929		BUILD_BUG_ON(!__builtin_constant_p(~var));
   930		BUILD_BUG_ON(~var != ~BIT(25));
   931	}
   932	

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2023-07-17  4:43 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-17  4:42 kernel test robot [this message]
2023-07-17 10:04 ` lib/test_bitmap.c:920:2: error: call to __compiletime_assert_348 declared with 'error' attribute: BUILD_BUG_ON failed: !__builtin_constant_p(res) Andy Shevchenko
2023-07-17 16:35   ` Nick Desaulniers
2023-07-17 18:08     ` Yury Norov
2023-07-17 18:24       ` Nick Desaulniers
2023-07-18 13:40   ` Alexander Lobakin

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202307171254.yFcH97ej-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=alexandr.lobakin@intel.com \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=llvm@lists.linux.dev \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=yury.norov@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.