Messages in this thread | | | Date | Sun, 25 Jun 2023 05:12:36 +0800 | From | kernel test robot <> | Subject | lib/test_bitmap.c:920:2: error: call to __compiletime_assert_372 declared with 'error' attribute: BUILD_BUG_ON failed: !__builtin_constant_p(res) |
| |
Hi Alexander,
FYI, the error/warning still remains.
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: a92b7d26c743b9dc06d520f863d624e94978a1d9 commit: dc34d5036692c614eef23c1130ee42a201c316bf lib: test_bitmap: add compile-time optimization/evaluations assertions date: 12 months ago config: x86_64-buildonly-randconfig-r003-20230624 (https://download.01.org/0day-ci/archive/20230625/202306250533.CBxzOSEh-lkp@intel.com/config) compiler: clang version 15.0.7 (https://github.com/llvm/llvm-project.git 8dfdcc7b7bf66834a761bd8de445840ef68e4d1a) reproduce: (https://download.01.org/0day-ci/archive/20230625/202306250533.CBxzOSEh-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/202306250533.CBxzOSEh-lkp@intel.com/
All errors (new ones prefixed by >>):
>> lib/test_bitmap.c:920:2: error: call to __compiletime_assert_372 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>:295:1: note: expanded from here __compiletime_assert_372 ^ 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
| |