// RUN: %clang --analyze %s -o %t > /dev/null 2>&1 // RUN: FileCheck -input-file %t %s void test_null_init(void) { int *p = 0; *p = 0xDEADBEEF; } void test_null_assign(void) { int *p; p = 0; *p = 0xDEADBEEF; } void test_null_assign_transitive(void) { int *p; p = 0; int *q = p; *q = 0xDEADBEEF; } void test_null_cond(int *p) { if (!p) { *p = 0xDEADBEEF; } } void test_null_cond_transitive(int *q) { if (!q) { // FIXME: we need a diagnostic saying that p is initialized to 0 int *p = q; *p = 0xDEADBEEF; } } void test_null_field(void) { struct s { int *p; } x; x.p = 0; *(x.p) = 0xDEADBEEF; } void test_assumptions(int a, int b) { if (a == 0) { return; } if (b != 0) { return; } int *p = 0; *p = 0xDEADBEEF; } int *bar_cond_assign(); int test_cond_assign() { int *p; if (p = bar_cond_assign()) return 1; return *p; } // The following previously crashed when generating extensive diagnostics. // @interface RDar10797980_help @property (readonly) int x; @end @interface RDar10797980 { RDar10797980_help *y; } - (void) test; @end @implementation RDar10797980 - (void) test { if (y.x == 1) { int *p = 0; *p = 0xDEADBEEF; // expected-warning {{deference}} } } @end // CHECK: // CHECK: // CHECK: // CHECK: files // CHECK: // CHECK: // CHECK: diagnostics // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line5 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line5 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line6 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: line6 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_null_init // CHECK: location // CHECK: // CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line10 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line10 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line12 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line12 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line12 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line12 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: line12 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_null_assign // CHECK: location // CHECK: // CHECK: line12 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line16 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line16 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line19 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: line19 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'q') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'q') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'q') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_null_assign_transitive // CHECK: location // CHECK: // CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line23 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line23 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line23 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line23 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line23 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line23 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line23 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Assuming 'p' is null // CHECK: message // CHECK: Assuming 'p' is null // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line23 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line23 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line24 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line24 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line24 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line24 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: line24 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_null_cond // CHECK: location // CHECK: // CHECK: line24 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line29 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line29 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line29 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line29 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line29 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line29 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line31 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line31 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line31 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line31 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line32 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line32 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line32 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line32 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: line32 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_null_cond_transitive // CHECK: location // CHECK: // CHECK: line32 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line37 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line37 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line37 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: line37 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line37 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: line37 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line39 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line39 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line39 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line39 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line39 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from field 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from field 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from field 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_null_field // CHECK: location // CHECK: // CHECK: line39 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line44 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line44 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line44 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line44 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line44 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line44 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line47 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line47 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line47 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line47 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line47 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line47 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line47 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line47 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line51 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line51 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line51 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line51 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: line51 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_assumptions // CHECK: location // CHECK: // CHECK: line51 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line56 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line56 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line57 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line57 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line57 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line57 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Assuming 'p' is null // CHECK: message // CHECK: Assuming 'p' is null // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line57 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line59 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line59 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line59 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line59 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line59 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: line59 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line59 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line59 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: line59 // CHECK: col11 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindfunction // CHECK: issue_contexttest_cond_assign // CHECK: location // CHECK: // CHECK: line59 // CHECK: col10 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: path // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line76 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line76 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line76 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line76 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line76 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: line76 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line76 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line76 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line76 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: line76 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line77 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line77 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: // CHECK: // CHECK: start // CHECK: // CHECK: // CHECK: line77 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line77 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: // CHECK: line78 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: line78 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: kindevent // CHECK: location // CHECK: // CHECK: line78 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: // CHECK: line78 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: line78 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: depth0 // CHECK: extended_message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message // CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: // CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: issue_context_kindObjective-C method // CHECK: issue_contexttest // CHECK: location // CHECK: // CHECK: line78 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: // CHECK: