18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0-only 28c2ecf20Sopenharmony_ci/// Check for constants that are added but are used elsewhere as bitmasks 38c2ecf20Sopenharmony_ci/// The results should be checked manually to ensure that the nonzero 48c2ecf20Sopenharmony_ci/// bits in the two constants are actually disjoint. 58c2ecf20Sopenharmony_ci/// 68c2ecf20Sopenharmony_ci// Confidence: Moderate 78c2ecf20Sopenharmony_ci// Copyright: (C) 2013 Julia Lawall, INRIA/LIP6. 88c2ecf20Sopenharmony_ci// Copyright: (C) 2013 Gilles Muller, INRIA/LIP6. 98c2ecf20Sopenharmony_ci// URL: http://coccinelle.lip6.fr/ 108c2ecf20Sopenharmony_ci// Comments: 118c2ecf20Sopenharmony_ci// Options: --no-includes --include-headers 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_civirtual org 148c2ecf20Sopenharmony_civirtual report 158c2ecf20Sopenharmony_civirtual context 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci@r@ 188c2ecf20Sopenharmony_ciconstant c,c1; 198c2ecf20Sopenharmony_ciidentifier i,i1; 208c2ecf20Sopenharmony_ciposition p; 218c2ecf20Sopenharmony_ci@@ 228c2ecf20Sopenharmony_ci 238c2ecf20Sopenharmony_ci( 248c2ecf20Sopenharmony_ci c1 + c - 1 258c2ecf20Sopenharmony_ci| 268c2ecf20Sopenharmony_ci c1@i1 +@p c@i 278c2ecf20Sopenharmony_ci) 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci@s@ 308c2ecf20Sopenharmony_ciconstant r.c, r.c1; 318c2ecf20Sopenharmony_ciidentifier i; 328c2ecf20Sopenharmony_ciexpression e; 338c2ecf20Sopenharmony_ci@@ 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci( 368c2ecf20Sopenharmony_cie | c@i 378c2ecf20Sopenharmony_ci| 388c2ecf20Sopenharmony_cie & c@i 398c2ecf20Sopenharmony_ci| 408c2ecf20Sopenharmony_cie |= c@i 418c2ecf20Sopenharmony_ci| 428c2ecf20Sopenharmony_cie &= c@i 438c2ecf20Sopenharmony_ci| 448c2ecf20Sopenharmony_cie | c1@i 458c2ecf20Sopenharmony_ci| 468c2ecf20Sopenharmony_cie & c1@i 478c2ecf20Sopenharmony_ci| 488c2ecf20Sopenharmony_cie |= c1@i 498c2ecf20Sopenharmony_ci| 508c2ecf20Sopenharmony_cie &= c1@i 518c2ecf20Sopenharmony_ci) 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci@depends on s@ 548c2ecf20Sopenharmony_ciposition r.p; 558c2ecf20Sopenharmony_ciconstant c1,c2; 568c2ecf20Sopenharmony_ci@@ 578c2ecf20Sopenharmony_ci 588c2ecf20Sopenharmony_ci* c1 +@p c2 598c2ecf20Sopenharmony_ci 608c2ecf20Sopenharmony_ci@script:python depends on s && org@ 618c2ecf20Sopenharmony_cip << r.p; 628c2ecf20Sopenharmony_ci@@ 638c2ecf20Sopenharmony_ci 648c2ecf20Sopenharmony_cicocci.print_main("sum of probable bitmasks, consider |",p) 658c2ecf20Sopenharmony_ci 668c2ecf20Sopenharmony_ci@script:python depends on s && report@ 678c2ecf20Sopenharmony_cip << r.p; 688c2ecf20Sopenharmony_ci@@ 698c2ecf20Sopenharmony_ci 708c2ecf20Sopenharmony_cimsg = "WARNING: sum of probable bitmasks, consider |" 718c2ecf20Sopenharmony_cicoccilib.report.print_report(p[0],msg) 72