From: Ted Kremenek Date: Tue, 20 Dec 2011 22:00:25 +0000 (+0000) Subject: Fix inversion of static analyzer path diagnostics for path conditions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ae325737c2ef7ce60ac6650a96bd489ef6e7ebe;p=clang Fix inversion of static analyzer path diagnostics for path conditions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@146993 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp index 1abd8baef6..6828a9e159 100644 --- a/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ b/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -637,7 +637,7 @@ ConditionBRVisitor::VisitTrueTest(const Expr *Cond, return 0; } - switch (BExpr->getOpcode()) { + switch (Op) { case BO_EQ: Out << "equal to "; break; diff --git a/test/Analysis/plist-output.m b/test/Analysis/plist-output.m index e08ccc43de..2e209bbba0 100644 --- a/test/Analysis/plist-output.m +++ b/test/Analysis/plist-output.m @@ -1,5 +1,5 @@ -// RUN: %clang_cc1 -analyze -analyzer-checker=core,experimental.core -analyzer-store=region -analyzer-constraints=range -fblocks -analyzer-output=plist -o - %s | FileCheck %s -// XFAIL: * +// RUN: %clang --analyze %s -o %t > /dev/null 2>&1 +// RUN: FileCheck -input-file %t %s void test_null_init(void) { int *p = 0; @@ -38,6 +38,18 @@ void test_null_field(void) { *(x.p) = 0xDEADBEEF; } +void test_assumptions(int a, int b) +{ + if (a == 0) { + return; + } + if (b != 0) { + return; + } + int *p = 0; + *p = 0xDEADBEEF; +} + // CHECK: // CHECK: // CHECK: @@ -51,34 +63,6 @@ void test_null_field(void) { // CHECK: path // CHECK: // CHECK: -// CHECK: kindevent -// CHECK: location -// CHECK: -// CHECK: line4 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: ranges -// CHECK: -// CHECK: -// CHECK: -// CHECK: line4 -// CHECK: col3 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: line4 -// CHECK: col8 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: extended_message -// CHECK: Variable 'p' initialized to a null pointer value -// CHECK: message -// CHECK: Variable 'p' initialized to a null pointer value -// CHECK: -// CHECK: // CHECK: kindcontrol // CHECK: edges // CHECK: @@ -86,25 +70,25 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line4 +// CHECK: line5 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line4 -// CHECK: col8 +// CHECK: line5 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: -// CHECK: line5 +// CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line5 +// CHECK: line6 // CHECK: col4 // CHECK: file0 // CHECK: @@ -116,7 +100,7 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line5 +// CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: @@ -124,12 +108,12 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line5 +// CHECK: line6 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line5 +// CHECK: line6 // CHECK: col4 // CHECK: file0 // CHECK: @@ -146,7 +130,7 @@ void test_null_field(void) { // CHECK: typeDereference of null pointer // CHECK: location // CHECK: -// CHECK: line5 +// CHECK: line6 // CHECK: col3 // CHECK: file0 // CHECK: @@ -162,12 +146,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line9 +// CHECK: line10 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line9 +// CHECK: line10 // CHECK: col3 // CHECK: file0 // CHECK: @@ -175,13 +159,13 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line10 +// CHECK: line12 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line10 -// CHECK: col3 +// CHECK: line12 +// CHECK: col4 // CHECK: file0 // CHECK: // CHECK: @@ -192,7 +176,7 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line10 +// CHECK: line12 // CHECK: col3 // CHECK: file0 // CHECK: @@ -200,22 +184,36 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line10 -// CHECK: col3 +// CHECK: line12 +// CHECK: col4 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line10 -// CHECK: col7 +// CHECK: line12 +// CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Null pointer value stored to 'p' +// CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message -// CHECK: Null pointer value stored to 'p' +// 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: location +// CHECK: +// CHECK: line12 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: path +// CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges @@ -224,12 +222,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line10 +// CHECK: line16 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line10 +// CHECK: line16 // CHECK: col3 // CHECK: file0 // CHECK: @@ -237,12 +235,12 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line11 +// CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line11 +// CHECK: line19 // CHECK: col4 // CHECK: file0 // CHECK: @@ -254,7 +252,7 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line11 +// CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: @@ -262,29 +260,29 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line11 +// CHECK: line19 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line11 +// CHECK: line19 // CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Dereference of null pointer (loaded from variable 'p') +// CHECK: Dereference of null pointer (loaded from variable 'q') // CHECK: message -// CHECK: Dereference of null pointer (loaded from variable 'p') +// CHECK: Dereference of null pointer (loaded from variable 'q') // CHECK: // CHECK: -// CHECK: descriptionDereference of null pointer (loaded from variable 'p') +// CHECK: descriptionDereference of null pointer (loaded from variable 'q') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: location // CHECK: -// CHECK: line11 +// CHECK: line19 // CHECK: col3 // CHECK: file0 // CHECK: @@ -300,12 +298,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line15 +// CHECK: line23 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line15 +// CHECK: line23 // CHECK: col3 // CHECK: file0 // CHECK: @@ -313,12 +311,12 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line17 -// CHECK: col3 +// CHECK: line23 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line17 +// CHECK: line23 // CHECK: col8 // CHECK: file0 // CHECK: @@ -330,29 +328,29 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line17 -// CHECK: col3 +// CHECK: line23 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: -// CHECK: line17 -// CHECK: col3 +// CHECK: line23 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line17 +// CHECK: line23 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Variable 'q' initialized to a null pointer value +// CHECK: Assuming 'p' is null // CHECK: message -// CHECK: Variable 'q' initialized to a null pointer value +// CHECK: Assuming 'p' is null // CHECK: // CHECK: // CHECK: kindcontrol @@ -362,12 +360,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line17 -// CHECK: col3 +// CHECK: line23 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line17 +// CHECK: line23 // CHECK: col8 // CHECK: file0 // CHECK: @@ -375,13 +373,13 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line18 -// CHECK: col3 +// CHECK: line24 +// CHECK: col5 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line18 -// CHECK: col4 +// CHECK: line24 +// CHECK: col6 // CHECK: file0 // CHECK: // CHECK: @@ -392,38 +390,38 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line18 -// CHECK: col3 +// CHECK: line24 +// CHECK: col5 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: -// CHECK: line18 -// CHECK: col4 +// CHECK: line24 +// CHECK: col6 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line18 -// CHECK: col4 +// CHECK: line24 +// CHECK: col6 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Dereference of null pointer (loaded from variable 'q') +// CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message -// CHECK: Dereference of null pointer (loaded from variable 'q') +// CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: -// CHECK: descriptionDereference of null pointer (loaded from variable 'q') +// CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: location // CHECK: -// CHECK: line18 -// CHECK: col3 +// CHECK: line24 +// CHECK: col5 // CHECK: file0 // CHECK: // CHECK: @@ -438,12 +436,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col3 // CHECK: file0 // CHECK: @@ -451,12 +449,12 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col8 // CHECK: file0 // CHECK: @@ -468,7 +466,7 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col7 // CHECK: file0 // CHECK: @@ -476,21 +474,21 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col8 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Assuming pointer value is null +// CHECK: Assuming 'q' is null // CHECK: message -// CHECK: Assuming pointer value is null +// CHECK: Assuming 'q' is null // CHECK: // CHECK: // CHECK: kindcontrol @@ -500,12 +498,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line22 +// CHECK: line29 // CHECK: col8 // CHECK: file0 // CHECK: @@ -513,12 +511,46 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line23 +// CHECK: line30 // CHECK: col5 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line23 +// CHECK: line30 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line30 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line30 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line31 +// CHECK: col5 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line31 // CHECK: col6 // CHECK: file0 // CHECK: @@ -530,7 +562,7 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line23 +// CHECK: line31 // CHECK: col5 // CHECK: file0 // CHECK: @@ -538,12 +570,12 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line23 +// CHECK: line31 // CHECK: col6 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line23 +// CHECK: line31 // CHECK: col6 // CHECK: file0 // CHECK: @@ -560,7 +592,7 @@ void test_null_field(void) { // CHECK: typeDereference of null pointer // CHECK: location // CHECK: -// CHECK: line23 +// CHECK: line31 // CHECK: col5 // CHECK: file0 // CHECK: @@ -576,12 +608,12 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line28 +// CHECK: line36 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line28 +// CHECK: line36 // CHECK: col3 // CHECK: file0 // CHECK: @@ -589,12 +621,46 @@ void test_null_field(void) { // CHECK: end // CHECK: // CHECK: -// CHECK: line28 -// CHECK: col7 +// CHECK: line36 +// CHECK: col10 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line28 +// CHECK: line36 +// CHECK: col10 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line36 +// CHECK: col10 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line36 +// CHECK: col10 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line38 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line38 // CHECK: col8 // CHECK: file0 // CHECK: @@ -606,7 +672,83 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line28 +// CHECK: line38 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: ranges +// CHECK: +// CHECK: +// CHECK: +// CHECK: line38 +// CHECK: col7 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line38 +// CHECK: col7 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// 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: location +// CHECK: +// CHECK: line38 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: path +// CHECK: +// CHECK: +// CHECK: kindcontrol +// CHECK: edges +// CHECK: +// CHECK: +// CHECK: start +// CHECK: +// CHECK: +// CHECK: line43 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line43 +// CHECK: col3 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: end +// CHECK: +// CHECK: +// CHECK: line43 +// CHECK: col7 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: line43 +// CHECK: col7 +// CHECK: file0 +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: +// CHECK: kindevent +// CHECK: location +// CHECK: +// CHECK: line43 // CHECK: col7 // CHECK: file0 // CHECK: @@ -614,21 +756,21 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line28 +// CHECK: line43 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line28 -// CHECK: col8 +// CHECK: line43 +// CHECK: col12 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Assuming pointer value is null +// CHECK: Assuming 'a' is not equal to 0 // CHECK: message -// CHECK: Assuming pointer value is null +// CHECK: Assuming 'a' is not equal to 0 // CHECK: // CHECK: // CHECK: kindcontrol @@ -638,26 +780,26 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line28 +// CHECK: line43 // CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line28 -// CHECK: col8 +// CHECK: line43 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: -// CHECK: line29 -// CHECK: col5 +// CHECK: line46 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line29 -// CHECK: col5 +// CHECK: line46 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: @@ -672,26 +814,26 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line29 -// CHECK: col5 +// CHECK: line46 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line29 -// CHECK: col5 +// CHECK: line46 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: -// CHECK: line30 -// CHECK: col5 +// CHECK: line46 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line30 -// CHECK: col6 +// CHECK: line46 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: @@ -702,44 +844,30 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line30 -// CHECK: col5 +// CHECK: line46 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: ranges // CHECK: // CHECK: // CHECK: -// CHECK: line30 -// CHECK: col6 +// CHECK: line46 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line30 -// CHECK: col6 +// CHECK: line46 +// CHECK: col12 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Dereference of null pointer (loaded from variable 'p') +// CHECK: Assuming 'b' is equal to 0 // CHECK: message -// CHECK: Dereference of null pointer (loaded from variable 'p') +// CHECK: Assuming 'b' is equal to 0 // CHECK: -// CHECK: -// CHECK: descriptionDereference of null pointer (loaded from variable 'p') -// CHECK: categoryLogic error -// CHECK: typeDereference of null pointer -// CHECK: location -// CHECK: -// CHECK: line30 -// CHECK: col5 -// CHECK: file0 -// CHECK: -// CHECK: -// CHECK: -// CHECK: path -// CHECK: // CHECK: // CHECK: kindcontrol // CHECK: edges @@ -748,26 +876,26 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line35 -// CHECK: col3 +// CHECK: line46 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line35 -// CHECK: col8 +// CHECK: line46 +// CHECK: col7 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: -// CHECK: line35 -// CHECK: col10 +// CHECK: line49 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line35 -// CHECK: col10 +// CHECK: line49 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: @@ -782,26 +910,26 @@ void test_null_field(void) { // CHECK: start // CHECK: // CHECK: -// CHECK: line35 -// CHECK: col10 +// CHECK: line49 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line35 -// CHECK: col10 +// CHECK: line49 +// CHECK: col3 // CHECK: file0 // CHECK: // CHECK: // CHECK: end // CHECK: // CHECK: -// CHECK: line37 +// CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line37 -// CHECK: col8 +// CHECK: line50 +// CHECK: col4 // CHECK: file0 // CHECK: // CHECK: @@ -812,7 +940,7 @@ void test_null_field(void) { // CHECK: kindevent // CHECK: location // CHECK: -// CHECK: line37 +// CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: @@ -820,29 +948,29 @@ void test_null_field(void) { // CHECK: // CHECK: // CHECK: -// CHECK: line37 -// CHECK: col3 +// CHECK: line50 +// CHECK: col4 // CHECK: file0 // CHECK: // CHECK: -// CHECK: line37 -// CHECK: col8 +// CHECK: line50 +// CHECK: col4 // CHECK: file0 // CHECK: // CHECK: // CHECK: // CHECK: extended_message -// CHECK: Dereference of null pointer +// CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: message -// CHECK: Dereference of null pointer +// CHECK: Dereference of null pointer (loaded from variable 'p') // CHECK: // CHECK: -// CHECK: descriptionDereference of null pointer +// CHECK: descriptionDereference of null pointer (loaded from variable 'p') // CHECK: categoryLogic error // CHECK: typeDereference of null pointer // CHECK: location // CHECK: -// CHECK: line37 +// CHECK: line50 // CHECK: col3 // CHECK: file0 // CHECK: