~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/scripts/coccinelle/misc/minmax.cocci

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /scripts/coccinelle/misc/minmax.cocci (Version linux-6.12-rc7) and /scripts/coccinelle/misc/minmax.cocci (Version linux-4.11.12)


  1 // SPDX-License-Identifier: GPL-2.0-only          
  2 ///                                               
  3 /// Check for opencoded min(), max() implement    
  4 /// Generated patches sometimes require adding    
  5 /// Warnings/patches scope intentionally limit    
  6 ///                                               
  7 // Confidence: Medium                             
  8 // Copyright: (C) 2021 Denis Efremov ISPRAS       
  9 // Options: --no-includes --include-headers       
 10 //                                                
 11 // Keywords: min, max                             
 12 //                                                
 13                                                   
 14                                                   
 15 virtual report                                    
 16 virtual org                                       
 17 virtual context                                   
 18 virtual patch                                     
 19                                                   
 20 @rmax depends on !patch@                          
 21 identifier func;                                  
 22 expression x, y;                                  
 23 binary operator cmp = {>, >=};                    
 24 position p;                                       
 25 @@                                                
 26                                                   
 27 func(...)                                         
 28 {                                                 
 29         <...                                      
 30 *       ((x) cmp@p (y) ? (x) : (y))               
 31         ...>                                      
 32 }                                                 
 33                                                   
 34 @rmaxif depends on !patch@                        
 35 identifier func;                                  
 36 expression x, y;                                  
 37 expression max_val;                               
 38 binary operator cmp = {>, >=};                    
 39 position p;                                       
 40 @@                                                
 41                                                   
 42 func(...)                                         
 43 {                                                 
 44         <...                                      
 45 *       if ((x) cmp@p (y)) {                      
 46 *               max_val = (x);                    
 47 *       } else {                                  
 48 *               max_val = (y);                    
 49 *       }                                         
 50         ...>                                      
 51 }                                                 
 52                                                   
 53 // Ignore errcode returns.                        
 54 @errcode@                                         
 55 position p;                                       
 56 identifier func;                                  
 57 expression x;                                     
 58 binary operator cmp = {<, <=};                    
 59 @@                                                
 60                                                   
 61 func(...)                                         
 62 {                                                 
 63         <...                                      
 64         return ((x) cmp@p 0 ? (x) : 0);           
 65         ...>                                      
 66 }                                                 
 67                                                   
 68 @rmin depends on !patch@                          
 69 identifier func;                                  
 70 expression x, y;                                  
 71 binary operator cmp = {<, <=};                    
 72 position p != errcode.p;                          
 73 @@                                                
 74                                                   
 75 func(...)                                         
 76 {                                                 
 77         <...                                      
 78 *       ((x) cmp@p (y) ? (x) : (y))               
 79         ...>                                      
 80 }                                                 
 81                                                   
 82 @rminif depends on !patch@                        
 83 identifier func;                                  
 84 expression x, y;                                  
 85 expression min_val;                               
 86 binary operator cmp = {<, <=};                    
 87 position p;                                       
 88 @@                                                
 89                                                   
 90 func(...)                                         
 91 {                                                 
 92         <...                                      
 93 *       if ((x) cmp@p (y)) {                      
 94 *               min_val = (x);                    
 95 *       } else {                                  
 96 *               min_val = (y);                    
 97 *       }                                         
 98         ...>                                      
 99 }                                                 
100                                                   
101 @pmax depends on patch@                           
102 identifier func;                                  
103 expression x, y;                                  
104 binary operator cmp = {>=, >};                    
105 @@                                                
106                                                   
107 func(...)                                         
108 {                                                 
109         <...                                      
110 -       ((x) cmp (y) ? (x) : (y))                 
111 +       max(x, y)                                 
112         ...>                                      
113 }                                                 
114                                                   
115 @pmaxif depends on patch@                         
116 identifier func;                                  
117 expression x, y;                                  
118 expression max_val;                               
119 binary operator cmp = {>=, >};                    
120 @@                                                
121                                                   
122 func(...)                                         
123 {                                                 
124         <...                                      
125 -       if ((x) cmp (y)) {                        
126 -               max_val = x;                      
127 -       } else {                                  
128 -               max_val = y;                      
129 -       }                                         
130 +       max_val = max(x, y);                      
131         ...>                                      
132 }                                                 
133                                                   
134 @pmin depends on patch@                           
135 identifier func;                                  
136 expression x, y;                                  
137 binary operator cmp = {<=, <};                    
138 position p != errcode.p;                          
139 @@                                                
140                                                   
141 func(...)                                         
142 {                                                 
143         <...                                      
144 -       ((x) cmp@p (y) ? (x) : (y))               
145 +       min(x, y)                                 
146         ...>                                      
147 }                                                 
148                                                   
149 @pminif depends on patch@                         
150 identifier func;                                  
151 expression x, y;                                  
152 expression min_val;                               
153 binary operator cmp = {<=, <};                    
154 @@                                                
155                                                   
156 func(...)                                         
157 {                                                 
158         <...                                      
159 -       if ((x) cmp (y)) {                        
160 -               min_val = x;                      
161 -       } else {                                  
162 -               min_val = y;                      
163 -       }                                         
164 +       min_val = min(x, y);                      
165         ...>                                      
166 }                                                 
167                                                   
168 @script:python depends on report@                 
169 p << rmax.p;                                      
170 @@                                                
171                                                   
172 for p0 in p:                                      
173         coccilib.report.print_report(p0, "WARN    
174                                                   
175 @script:python depends on org@                    
176 p << rmax.p;                                      
177 @@                                                
178                                                   
179 for p0 in p:                                      
180         coccilib.org.print_todo(p0, "WARNING o    
181                                                   
182 @script:python depends on report@                 
183 p << rmaxif.p;                                    
184 @@                                                
185                                                   
186 for p0 in p:                                      
187         coccilib.report.print_report(p0, "WARN    
188                                                   
189 @script:python depends on org@                    
190 p << rmaxif.p;                                    
191 @@                                                
192                                                   
193 for p0 in p:                                      
194         coccilib.org.print_todo(p0, "WARNING o    
195                                                   
196 @script:python depends on report@                 
197 p << rmin.p;                                      
198 @@                                                
199                                                   
200 for p0 in p:                                      
201         coccilib.report.print_report(p0, "WARN    
202                                                   
203 @script:python depends on org@                    
204 p << rmin.p;                                      
205 @@                                                
206                                                   
207 for p0 in p:                                      
208         coccilib.org.print_todo(p0, "WARNING o    
209                                                   
210 @script:python depends on report@                 
211 p << rminif.p;                                    
212 @@                                                
213                                                   
214 for p0 in p:                                      
215         coccilib.report.print_report(p0, "WARN    
216                                                   
217 @script:python depends on org@                    
218 p << rminif.p;                                    
219 @@                                                
220                                                   
221 for p0 in p:                                      
222         coccilib.org.print_todo(p0, "WARNING o    
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php