forked from mirrors/linux
		
	bug.h: prevent double evaulation of `condition' in BUILD_BUG_ON
When calling BUILD_BUG_ON in an optimized build using gcc 4.3 and later, the condition will be evaulated twice, possibily with side-effects. This patch eliminates that error. [akpm@linux-foundation.org: tweak code layout] Signed-off-by: Daniel Santos <daniel.santos@pobox.com> Cc: Andi Kleen <ak@linux.intel.com> Cc: Borislav Petkov <bp@alien8.de> Cc: David Rientjes <rientjes@google.com> Cc: Joe Perches <joe@perches.com> Cc: Josh Triplett <josh@joshtriplett.org> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									ca623c914e
								
							
						
					
					
						commit
						1d6a0d19c8
					
				
					 1 changed files with 4 additions and 3 deletions
				
			
		|  | @ -59,8 +59,9 @@ struct pt_regs; | |||
| extern int __build_bug_on_failed; | ||||
| #define BUILD_BUG_ON(condition)					\ | ||||
| 	do {							\ | ||||
| 		((void)sizeof(char[1 - 2*!!(condition)]));	\ | ||||
| 		if (condition) __build_bug_on_failed = 1;	\ | ||||
| 		bool __cond = !!(condition);			\ | ||||
| 		((void)sizeof(char[1 - 2 * __cond]));		\ | ||||
| 		if (__cond) __build_bug_on_failed = 1;		\ | ||||
| 	} while (0) | ||||
| #endif | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Daniel Santos
						Daniel Santos