55 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			55 lines
		
	
	
	
		
			1.1 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								/// Find bit operations that include the same argument more than once
							 | 
						||
| 
								 | 
							
								//# One source of false positives is when the argument performs a side
							 | 
						||
| 
								 | 
							
								//# effect.  Another source of false positives is when a neutral value
							 | 
						||
| 
								 | 
							
								//# such as 0 for | is used to indicate no information, to maintain the
							 | 
						||
| 
								 | 
							
								//# same structure as other similar expressions
							 | 
						||
| 
								 | 
							
								///
							 | 
						||
| 
								 | 
							
								// Confidence: Moderate
							 | 
						||
| 
								 | 
							
								// Copyright: (C) 2010 Nicolas Palix, DIKU.  GPLv2.
							 | 
						||
| 
								 | 
							
								// Copyright: (C) 2010 Julia Lawall, DIKU.  GPLv2.
							 | 
						||
| 
								 | 
							
								// Copyright: (C) 2010 Gilles Muller, INRIA/LiP6.  GPLv2.
							 | 
						||
| 
								 | 
							
								// URL: http://coccinelle.lip6.fr/
							 | 
						||
| 
								 | 
							
								// Comments:
							 | 
						||
| 
								 | 
							
								// Options: -no_includes -include_headers
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								virtual context
							 | 
						||
| 
								 | 
							
								virtual org
							 | 
						||
| 
								 | 
							
								virtual report
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@r expression@
							 | 
						||
| 
								 | 
							
								expression E;
							 | 
						||
| 
								 | 
							
								position p;
							 | 
						||
| 
								 | 
							
								@@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(
							 | 
						||
| 
								 | 
							
								*        E@p
							 | 
						||
| 
								 | 
							
								         & ... & E
							 | 
						||
| 
								 | 
							
								|
							 | 
						||
| 
								 | 
							
								*        E@p
							 | 
						||
| 
								 | 
							
								         | ... | E
							 | 
						||
| 
								 | 
							
								|
							 | 
						||
| 
								 | 
							
								*        E@p
							 | 
						||
| 
								 | 
							
								         & ... & !E
							 | 
						||
| 
								 | 
							
								|
							 | 
						||
| 
								 | 
							
								*        E@p
							 | 
						||
| 
								 | 
							
								         | ... | !E
							 | 
						||
| 
								 | 
							
								|
							 | 
						||
| 
								 | 
							
								*        !E@p
							 | 
						||
| 
								 | 
							
								         & ... & E
							 | 
						||
| 
								 | 
							
								|
							 | 
						||
| 
								 | 
							
								*        !E@p
							 | 
						||
| 
								 | 
							
								         | ... | E
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@script:python depends on org@
							 | 
						||
| 
								 | 
							
								p << r.p;
							 | 
						||
| 
								 | 
							
								@@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								cocci.print_main("duplicated argument to & or |",p)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								@script:python depends on report@
							 | 
						||
| 
								 | 
							
								p << r.p;
							 | 
						||
| 
								 | 
							
								@@
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								coccilib.report.print_report(p[0],"duplicated argument to & or |")
							 |