forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			32 lines
		
	
	
		
			874 B
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			32 lines
		
	
	
		
			874 B
		
	
	
	
		
			C
		
	
	
	
| // REQUIRES: shell
 | |
| // RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s
 | |
| // (sanity check)
 | |
| 
 | |
| // RUN: rm -rf %t.dir
 | |
| // RUN: mkdir -p %t.dir
 | |
| // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-html -o %t.dir/index.plist %s
 | |
| // RUN: ls %t.dir | grep \\.html | count 1
 | |
| // RUN: grep \\.html %t.dir/index.plist | count 1
 | |
| 
 | |
| // This tests two things: that the two calls to null_deref below are coalesced
 | |
| // into a single bug by both the plist and HTML diagnostics, and that the plist
 | |
| // diagnostics have a reference to the HTML diagnostics. (It would be nice to
 | |
| // check more carefully that the two actually match, but that's hard to write
 | |
| // in a lit RUN line.)
 | |
| 
 | |
| #define CALL_FN(a) null_deref(a)
 | |
| 
 | |
| void null_deref(int *a) {
 | |
|   if (a)
 | |
|     return;
 | |
|   *a = 1; // expected-warning{{null}}
 | |
| }
 | |
| 
 | |
| void test1() {
 | |
|   CALL_FN(0);
 | |
| }
 | |
| 
 | |
| void test2(int *p) {
 | |
|   CALL_FN(p);
 | |
| }
 |