18 lines
		
	
	
		
			782 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			18 lines
		
	
	
		
			782 B
		
	
	
	
		
			C
		
	
	
	
	
	
| // RUN: %clang_cc1 %s -verify -fsyntax-only -pedantic
 | |
| // Check that we don't crash trying to emit warnings in a potentially-evaluated
 | |
| // sizeof or typeof.  (This test needs to be in a separate file because we use
 | |
| // a different codepath when we have already emitted an error.)
 | |
| 
 | |
| int PotentiallyEvaluatedSizeofWarn(int n) {
 | |
|   return (int)sizeof *(0 << 32,(int(*)[n])0); // expected-warning {{expression result unused}} expected-warning {{shift count >= width of type}}
 | |
| }
 | |
| 
 | |
| void PotentiallyEvaluatedTypeofWarn(int n) {
 | |
|   __typeof(*(0 << 32,(int(*)[n])0)) x; // expected-warning {{expression result unused}} expected-warning {{shift count >= width of type}}
 | |
|   (void)x;
 | |
| }
 | |
| 
 | |
| void PotentiallyEvaluatedArrayBoundWarn(int n) {
 | |
|   (void)*(int(*)[(0 << 32,n)])0; // FIXME: We should warn here.
 | |
| }
 | 
