forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			30 lines
		
	
	
		
			997 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			997 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,unix.MismatchedDeallocator -std=c++11 -verify %s
 | |
| // RUN: %clang_cc1 -analyze -analyzer-checker=core,cplusplus.NewDelete,alpha.cplusplus.NewDeleteLeaks,unix.MismatchedDeallocator -DLEAKS -std=c++11 -verify %s
 | |
| // expected-no-diagnostics
 | |
| 
 | |
| typedef __typeof(sizeof(int)) size_t;
 | |
| void *malloc(size_t);
 | |
| void free(void *);
 | |
| 
 | |
| //------------------------------------------------------------------
 | |
| // Check that alpha.cplusplus.NewDelete + unix.MismatchedDeallocator 
 | |
| // does not enable warnings produced by the unix.Malloc checker.
 | |
| //------------------------------------------------------------------
 | |
| void testMallocFreeNoWarn() {
 | |
|   int i;
 | |
|   free(&i); // no warn
 | |
| 
 | |
|   int *p1 = (int *)malloc(sizeof(int));
 | |
|   free(++p1); // no warn
 | |
| 
 | |
|   int *p2 = (int *)malloc(sizeof(int));
 | |
|   free(p2);
 | |
|   free(p2); // no warn
 | |
| 
 | |
|   int *p3 = (int *)malloc(sizeof(int)); // no warn
 | |
| 
 | |
|   int *p4 = (int *)malloc(sizeof(int));
 | |
|   free(p4);
 | |
|   int j = *p4; // no warn
 | |
| }
 |