From 8d7c8a4dd6ef965e9f6b358c7005195e635ca7c1 Mon Sep 17 00:00:00 2001 From: Anna Zaks Date: Sat, 2 Mar 2013 03:20:52 +0000 Subject: [PATCH] [analyzer] Simple inline defensive checks suppression Inlining brought a few "null pointer use" false positives, which occur because the callee defensively checks if a pointer is NULL, whereas the caller knows that the pointer cannot be NULL in the context of the given call. This is a first attempt to silence these warnings by tracking the symbolic value along the execution path in the BugReporter. The new visitor finds the node in which the symbol was first constrained to NULL. If the node belongs to a function on the active stack, the warning is reported, otherwise, it is suppressed. There are several areas for follow up work, for example: - How do we differentiate the cases where the first check is followed by another one, which does happen on the active stack? Also, this only silences a fraction of null pointer use warnings. For example, it does not do anything for the cases where NULL was assigned inside a callee. llvm-svn: 176402 --- .../Core/BugReporter/BugReporterVisitor.h | 25 + .../Core/PathSensitive/ProgramState.h | 10 +- .../StaticAnalyzer/Core/BugReporterVisitors.cpp | 55 +- clang/lib/StaticAnalyzer/Core/ProgramState.cpp | 10 + .../diagnostics/deref-track-symbolic-region.c | 197 +--- .../Analysis/inlining/inline-defensive-checks.c | 99 ++ clang/test/Analysis/inlining/path-notes.c | 1004 ++++++-------------- 7 files changed, 530 insertions(+), 870 deletions(-) create mode 100644 clang/test/Analysis/inlining/inline-defensive-checks.c diff --git a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h index bef4b30..c1b5594 100644 --- a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h +++ b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h @@ -280,6 +280,31 @@ public: BugReport &BR); }; +class SuppressInlineDefensiveChecksVisitor +: public BugReporterVisitorImpl +{ + // The symbolic value for which we are tracking constraints. + // This value is constrained to null in the end of path. + DefinedSVal V; + + // Track if we found the node where the constraint was first added. + bool IsSatisfied; + +public: + SuppressInlineDefensiveChecksVisitor(DefinedSVal Val, const ExplodedNode *N); + + void Profile(llvm::FoldingSetNodeID &ID) const; + + /// Return the tag associated with this visitor. This tag will be used + /// to make all PathDiagnosticPieces created by this visitor. + static const char *getTag(); + + PathDiagnosticPiece *VisitNode(const ExplodedNode *N, + const ExplodedNode *PrevN, + BugReporterContext &BRC, + BugReport &BR); +}; + namespace bugreporter { /// Attempts to add visitors to trace a null or undefined value back to its diff --git a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h index eab248b..7980907 100644 --- a/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h +++ b/clang/include/clang/StaticAnalyzer/Core/PathSensitive/ProgramState.h @@ -173,8 +173,8 @@ public: ProgramStateRef assume(DefinedOrUnknownSVal cond, bool assumption) const; /// This method assumes both "true" and "false" for 'cond', and - /// returns both corresponding states. It's shorthand for doing - /// 'assume' twice. + /// returns both corresponding states. It's shorthand for doing + /// 'assume' twice. std::pair assume(DefinedOrUnknownSVal cond) const; @@ -182,7 +182,11 @@ public: DefinedOrUnknownSVal upperBound, bool assumption, QualType IndexType = QualType()) const; - + + /// \brief Check if the given SVal is constrained to zero or is a zero + /// constant. + ConditionTruthVal isNull(SVal V) const; + /// Utility method for getting regions. const VarRegion* getRegion(const VarDecl *D, const LocationContext *LC) const; diff --git a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp index bb20c0d..b4ba2d4 100644 --- a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -27,6 +27,8 @@ using namespace clang; using namespace ento; +using llvm::FoldingSetNodeID; + //===----------------------------------------------------------------------===// // Utility functions. //===----------------------------------------------------------------------===// @@ -663,6 +665,49 @@ TrackConstraintBRVisitor::VisitNode(const ExplodedNode *N, return NULL; } +SuppressInlineDefensiveChecksVisitor:: +SuppressInlineDefensiveChecksVisitor(DefinedSVal Value, const ExplodedNode *N) + : V(Value), IsSatisfied(false) { + + assert(N->getState()->isNull(V).isConstrainedTrue() && + "The visitor only tracks the cases where V is constrained to 0"); +} + +void SuppressInlineDefensiveChecksVisitor::Profile(FoldingSetNodeID &ID) const { + static int id = 0; + ID.AddPointer(&id); + ID.Add(V); +} + +const char *SuppressInlineDefensiveChecksVisitor::getTag() { + return "IDCVisitor"; +} + +PathDiagnosticPiece * +SuppressInlineDefensiveChecksVisitor::VisitNode(const ExplodedNode *N, + const ExplodedNode *PrevN, + BugReporterContext &BRC, + BugReport &BR) { + if (IsSatisfied) + return 0; + + // Check if in the previous state it was feasible for this value + // to *not* be null. + if (PrevN->getState()->assume(V, true)) { + IsSatisfied = true; + + // TODO: Investigate if missing the transition point, where V + // is non-null in N could lead to false negatives. + + // Check if this is inline defensive checks. + const LocationContext *CurLC = PrevN->getLocationContext(); + const LocationContext *ReportLC = BR.getErrorNode()->getLocationContext(); + if (CurLC != ReportLC && !CurLC->isParentOf(ReportLC)) + BR.markInvalid("Suppress IDC", CurLC); + } + return 0; +} + bool bugreporter::trackNullOrUndefValue(const ExplodedNode *N, const Stmt *S, BugReport &report, bool IsArg) { if (!S || !N) @@ -772,8 +817,16 @@ bool bugreporter::trackNullOrUndefValue(const ExplodedNode *N, const Stmt *S, // If the contents are symbolic, find out when they became null. if (V.getAsLocSymbol()) { BugReporterVisitor *ConstraintTracker = - new TrackConstraintBRVisitor(V.castAs(), false); + new TrackConstraintBRVisitor(V.castAs(), false); report.addVisitor(ConstraintTracker); + + // Add visitor, which will suppress inline defensive checks. + if (N->getState()->isNull(V).isConstrainedTrue()) { + BugReporterVisitor *IDCSuppressor = + new SuppressInlineDefensiveChecksVisitor(V.castAs(), + N); + report.addVisitor(IDCSuppressor); + } } if (Optional KV = V.getAs()) diff --git a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp index 400569e..64205f8 100644 --- a/clang/lib/StaticAnalyzer/Core/ProgramState.cpp +++ b/clang/lib/StaticAnalyzer/Core/ProgramState.cpp @@ -324,6 +324,16 @@ ProgramStateRef ProgramState::assumeInBound(DefinedOrUnknownSVal Idx, return CM.assume(this, inBound.castAs(), Assumption); } +ConditionTruthVal ProgramState::isNull(SVal V) const { + if (V.isZeroConstant()) + return true; + + SymbolRef Sym = V.getAsSymbol(); + if (!Sym) + return false; + return getStateManager().ConstraintMgr->isNull(this, Sym); +} + ProgramStateRef ProgramStateManager::getInitialState(const LocationContext *InitLoc) { ProgramState State(this, EnvMgr.getInitialEnvironment(), diff --git a/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c b/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c index e2ec8fc..94774dd 100644 --- a/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c +++ b/clang/test/Analysis/diagnostics/deref-track-symbolic-region.c @@ -9,22 +9,19 @@ struct S { int *foo(); -void inlined(struct S *s, int m) { - if (s->x) +void test(struct S syz, int *pp) { + int m = 0; + syz.x = foo(); // expected-note{{Value assigned to 'syz.x'}} + + struct S *ps = &syz; + if (ps->x) //expected-note@-1{{Taking false branch}} //expected-note@-2{{Assuming pointer value is null}} m++; -} -void test(struct S syz, int *pp) { - int m = 0; - syz.x = foo(); // expected-note{{Value assigned to 'syz.x'}} - inlined(&syz, m); - // expected-note@-1{{Calling 'inlined'}} - // expected-note@-2{{Returning from 'inlined'}} m += *syz.x; // expected-warning{{Dereference of null pointer (loaded from field 'x')}} - // expected-note@-1{{Dereference of null pointer (loaded from field 'x')}} + // expected-note@-1{{Dereference of null pointer (loaded from field 'x')}} } // CHECK: diagnostics @@ -40,12 +37,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line21 +// CHECK-NEXT: line13 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line21 +// CHECK-NEXT: line13 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -53,12 +50,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -70,7 +67,7 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -78,12 +75,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -103,12 +100,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line22 +// CHECK-NEXT: line14 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -116,89 +113,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line23 +// CHECK-NEXT: line17 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col9 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col18 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Calling 'inlined' -// CHECK-NEXT: message -// CHECK-NEXT: Calling 'inlined' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line12 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Entered call from 'test' -// CHECK-NEXT: message -// CHECK-NEXT: Entered call from 'test' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line12 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line12 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line13 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line13 +// CHECK-NEXT: line17 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -214,12 +134,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line13 +// CHECK-NEXT: line17 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line13 +// CHECK-NEXT: line17 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -227,13 +147,13 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line13 +// CHECK-NEXT: line17 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line13 -// CHECK-NEXT: col7 +// CHECK-NEXT: line17 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: @@ -244,7 +164,7 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line13 +// CHECK-NEXT: line17 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -252,53 +172,24 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line13 +// CHECK-NEXT: line17 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line13 -// CHECK-NEXT: col10 +// CHECK-NEXT: line17 +// CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message // CHECK-NEXT: Assuming pointer value is null // CHECK-NEXT: message // CHECK-NEXT: Assuming pointer value is null // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col18 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Returning from 'inlined' -// CHECK-NEXT: message -// CHECK-NEXT: Returning from 'inlined' -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -306,25 +197,25 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col3 +// CHECK-NEXT: line17 +// CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line23 -// CHECK-NEXT: col9 +// CHECK-NEXT: line17 +// CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -340,12 +231,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -353,12 +244,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -370,7 +261,7 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -378,12 +269,12 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -401,12 +292,14 @@ void test(struct S syz, int *pp) { // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttest -// CHECK-NEXT: issue_hash6 +// CHECK-NEXT: issue_hash11 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line26 +// CHECK-NEXT: line23 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: +// CHECK-NEXT: +// CHECK-NEXT: diff --git a/clang/test/Analysis/inlining/inline-defensive-checks.c b/clang/test/Analysis/inlining/inline-defensive-checks.c new file mode 100644 index 0000000..a91d6a3 --- /dev/null +++ b/clang/test/Analysis/inlining/inline-defensive-checks.c @@ -0,0 +1,99 @@ +// RUN: %clang_cc1 -analyze -analyzer-checker=core -verify %s + +// Perform inline defensive checks. +void idc(int *p) { + if (p) + ; +} + +int test01(int *p) { + if (p) + ; + return *p; // expected-warning {{Dereference of null pointer}} +} + +int test02(int *p, int *x) { + if (p) + ; + idc(p); + if (x) + ; + return *p; // expected-warning {{Dereference of null pointer}} +} + +int test03(int *p, int *x) { + idc(p); + if (p) + ; + return *p; // False negative +} + +int deref04(int *p) { + return *p; // expected-warning {{Dereference of null pointer}} +} + +int test04(int *p) { + if (p) + ; + idc(p); + return deref04(p); +} + +int test11(int *q, int *x) { + int *p = q; + if (q) + ; + if (x) + ; + return *p; // expected-warning{{Dereference of null pointer}} +} + +int test12(int *q) { + int *p = q; + idc(q); + return *p; +} + +int test13(int *q) { + int *p = q; + idc(p); + return *p; +} + +int test21(int *q, int *x) { + if (q) + ; + if (x) + ; + int *p = q; + return *p; // expected-warning{{Dereference of null pointer}} +} + +int test22(int *q, int *x) { + idc(q); + if (x) + ; + int *p = q; + return *p; +} + +int test23(int *q, int *x) { + idc(q); + if (x) + ; + int *p = q; + if (!p) + ; + return *p; // False negative +} + +void use(char *p) { + if (!p) + return; + p[0] = 'a'; +} + +void test24(char *buffer) { + use(buffer); + buffer[1] = 'b'; +} diff --git a/clang/test/Analysis/inlining/path-notes.c b/clang/test/Analysis/inlining/path-notes.c index a2d603c..b128aab 100644 --- a/clang/test/Analysis/inlining/path-notes.c +++ b/clang/test/Analysis/inlining/path-notes.c @@ -15,20 +15,12 @@ void testZero(int *a) { // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}} } - -void check(int *p) { - if (p) { - // expected-note@-1 + {{Assuming 'p' is null}} +void testCheck(int *a) { + if (a) { + // expected-note@-1 + {{Assuming 'a' is null}} // expected-note@-2 + {{Taking false branch}} - return; + ; } - return; -} - -void testCheck(int *a) { - check(a); - // expected-note@-1 {{Calling 'check'}} - // expected-note@-2 {{Returning from 'check'}} *a = 1; // expected-warning{{Dereference of null pointer}} // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}} } @@ -39,9 +31,11 @@ int *getPointer(); void testInitCheck() { int *a = getPointer(); // expected-note@-1 {{'a' initialized here}} - check(a); - // expected-note@-1 {{Calling 'check'}} - // expected-note@-2 {{Returning from 'check'}} + if (a) { + // expected-note@-1 + {{Assuming 'a' is null}} + // expected-note@-2 + {{Taking false branch}} + ; + } *a = 1; // expected-warning{{Dereference of null pointer}} // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}} } @@ -49,9 +43,11 @@ void testInitCheck() { void testStoreCheck(int *a) { a = getPointer(); // expected-note@-1 {{Value assigned to 'a'}} - check(a); - // expected-note@-1 {{Calling 'check'}} - // expected-note@-2 {{Returning from 'check'}} + if (a) { + // expected-note@-1 + {{Assuming 'a' is null}} + // expected-note@-2 + {{Taking false branch}} + ; + } *a = 1; // expected-warning{{Dereference of null pointer}} // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}} } @@ -332,49 +328,6 @@ void testUseOfNullPointer() { // CHECK-NEXT: path // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Calling 'check' -// CHECK-NEXT: message -// CHECK-NEXT: Calling 'check' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Entered call from 'testCheck' -// CHECK-NEXT: message -// CHECK-NEXT: Entered call from 'testCheck' -// CHECK-NEXT: -// CHECK-NEXT: // CHECK-NEXT: kindcontrol // CHECK-NEXT: edges // CHECK-NEXT: @@ -383,45 +336,11 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: line19 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -429,12 +348,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -446,7 +365,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -454,22 +373,22 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Assuming 'p' is null +// CHECK-NEXT: Assuming 'a' is null // CHECK-NEXT: message -// CHECK-NEXT: Assuming 'p' is null +// CHECK-NEXT: Assuming 'a' is null // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -479,75 +398,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line25 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line25 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Returning from 'check' -// CHECK-NEXT: message -// CHECK-NEXT: Returning from 'check' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line29 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line29 +// CHECK-NEXT: line19 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -555,12 +411,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line32 +// CHECK-NEXT: line24 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line32 +// CHECK-NEXT: line24 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -572,7 +428,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line32 +// CHECK-NEXT: line24 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -580,12 +436,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line32 +// CHECK-NEXT: line24 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line32 +// CHECK-NEXT: line24 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -603,10 +459,10 @@ void testUseOfNullPointer() { // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttestCheck -// CHECK-NEXT: issue_hash4 +// CHECK-NEXT: issue_hash6 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line32 +// CHECK-NEXT: line24 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -618,7 +474,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line40 +// CHECK-NEXT: line32 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -626,12 +482,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line40 +// CHECK-NEXT: line32 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line40 +// CHECK-NEXT: line32 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -651,12 +507,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line40 +// CHECK-NEXT: line32 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line40 +// CHECK-NEXT: line32 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -664,89 +520,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line42 +// CHECK-NEXT: line34 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Calling 'check' -// CHECK-NEXT: message -// CHECK-NEXT: Calling 'check' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Entered call from 'testInitCheck' -// CHECK-NEXT: message -// CHECK-NEXT: Entered call from 'testInitCheck' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -762,12 +541,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -775,12 +554,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -792,7 +571,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -800,22 +579,22 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Assuming 'p' is null +// CHECK-NEXT: Assuming 'a' is null // CHECK-NEXT: message -// CHECK-NEXT: Assuming 'p' is null +// CHECK-NEXT: Assuming 'a' is null // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -825,75 +604,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line25 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line25 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Returning from 'check' -// CHECK-NEXT: message -// CHECK-NEXT: Returning from 'check' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line42 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line42 +// CHECK-NEXT: line34 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -901,12 +617,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line45 +// CHECK-NEXT: line39 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line45 +// CHECK-NEXT: line39 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -918,7 +634,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line45 +// CHECK-NEXT: line39 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -926,12 +642,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line45 +// CHECK-NEXT: line39 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line45 +// CHECK-NEXT: line39 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -949,10 +665,10 @@ void testUseOfNullPointer() { // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttestInitCheck -// CHECK-NEXT: issue_hash6 +// CHECK-NEXT: issue_hash8 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line45 +// CHECK-NEXT: line39 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -964,7 +680,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line50 +// CHECK-NEXT: line44 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -972,12 +688,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line50 +// CHECK-NEXT: line44 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line50 +// CHECK-NEXT: line44 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -997,12 +713,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line50 +// CHECK-NEXT: line44 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line50 +// CHECK-NEXT: line44 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1010,89 +726,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line52 +// CHECK-NEXT: line46 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth0 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Calling 'check' -// CHECK-NEXT: message -// CHECK-NEXT: Calling 'check' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Entered call from 'testStoreCheck' -// CHECK-NEXT: message -// CHECK-NEXT: Entered call from 'testStoreCheck' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col1 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line19 -// CHECK-NEXT: col4 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1108,12 +747,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1121,12 +760,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1138,7 +777,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1146,22 +785,22 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: depth1 +// CHECK-NEXT: depth0 // CHECK-NEXT: extended_message -// CHECK-NEXT: Assuming 'p' is null +// CHECK-NEXT: Assuming 'a' is null // CHECK-NEXT: message -// CHECK-NEXT: Assuming 'p' is null +// CHECK-NEXT: Assuming 'a' is null // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: kindcontrol @@ -1171,75 +810,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line20 -// CHECK-NEXT: col7 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: end -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line25 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line25 -// CHECK-NEXT: col8 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col10 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: Returning from 'check' -// CHECK-NEXT: message -// CHECK-NEXT: Returning from 'check' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindcontrol -// CHECK-NEXT: edges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: start -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line52 -// CHECK-NEXT: col3 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line52 +// CHECK-NEXT: line46 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1247,12 +823,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line55 +// CHECK-NEXT: line51 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line55 +// CHECK-NEXT: line51 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1264,7 +840,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line55 +// CHECK-NEXT: line51 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1272,12 +848,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line55 +// CHECK-NEXT: line51 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line55 +// CHECK-NEXT: line51 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1295,10 +871,10 @@ void testUseOfNullPointer() { // CHECK-NEXT: typeDereference of null pointer // CHECK-NEXT: issue_context_kindfunction // CHECK-NEXT: issue_contexttestStoreCheck -// CHECK-NEXT: issue_hash6 +// CHECK-NEXT: issue_hash8 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line55 +// CHECK-NEXT: line51 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1314,12 +890,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1327,12 +903,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1344,7 +920,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1352,12 +928,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1373,7 +949,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1391,12 +967,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1404,12 +980,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1421,7 +997,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1429,12 +1005,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1454,12 +1030,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1467,12 +1043,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1484,7 +1060,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1492,12 +1068,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1513,7 +1089,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1521,12 +1097,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1546,12 +1122,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1559,12 +1135,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1580,12 +1156,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1593,12 +1169,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1610,7 +1186,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1618,12 +1194,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1644,7 +1220,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line69 +// CHECK-NEXT: line65 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1660,12 +1236,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1673,12 +1249,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1690,7 +1266,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1698,12 +1274,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1719,7 +1295,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1737,12 +1313,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1750,12 +1326,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1767,7 +1343,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1775,12 +1351,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1800,12 +1376,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1813,12 +1389,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1830,7 +1406,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1838,12 +1414,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1859,7 +1435,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1867,12 +1443,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1892,12 +1468,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1905,12 +1481,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1926,12 +1502,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col17 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1939,12 +1515,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1956,7 +1532,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1964,12 +1540,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -1990,7 +1566,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line76 +// CHECK-NEXT: line72 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2006,12 +1582,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2019,12 +1595,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2036,7 +1612,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2044,12 +1620,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2065,7 +1641,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2083,12 +1659,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2096,12 +1672,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2113,7 +1689,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2121,12 +1697,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2146,12 +1722,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2159,12 +1735,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2176,7 +1752,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2184,12 +1760,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2205,7 +1781,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2213,12 +1789,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2238,12 +1814,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2251,12 +1827,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2272,12 +1848,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2285,12 +1861,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2302,7 +1878,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2310,12 +1886,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2335,12 +1911,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line83 +// CHECK-NEXT: line79 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2348,12 +1924,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line87 +// CHECK-NEXT: line83 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line87 +// CHECK-NEXT: line83 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2365,7 +1941,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line87 +// CHECK-NEXT: line83 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2373,12 +1949,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line87 +// CHECK-NEXT: line83 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line87 +// CHECK-NEXT: line83 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2399,7 +1975,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: issue_hash5 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line87 +// CHECK-NEXT: line83 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2415,12 +1991,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2428,12 +2004,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2445,7 +2021,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2453,12 +2029,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2474,7 +2050,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2492,12 +2068,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2505,12 +2081,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2522,7 +2098,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2530,12 +2106,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2555,12 +2131,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2568,12 +2144,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2585,7 +2161,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2593,12 +2169,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2614,7 +2190,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2622,12 +2198,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2647,12 +2223,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2660,12 +2236,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2681,12 +2257,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2694,12 +2270,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2711,7 +2287,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2719,12 +2295,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2744,12 +2320,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line92 +// CHECK-NEXT: line88 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2757,12 +2333,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line96 +// CHECK-NEXT: line92 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line96 +// CHECK-NEXT: line92 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2774,7 +2350,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line96 +// CHECK-NEXT: line92 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2782,12 +2358,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line96 +// CHECK-NEXT: line92 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line96 +// CHECK-NEXT: line92 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2808,7 +2384,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: issue_hash5 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line96 +// CHECK-NEXT: line92 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2824,12 +2400,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2837,12 +2413,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2854,7 +2430,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2862,12 +2438,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2883,7 +2459,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2901,12 +2477,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line60 +// CHECK-NEXT: line56 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2914,12 +2490,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2931,7 +2507,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2939,12 +2515,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2964,12 +2540,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line61 +// CHECK-NEXT: line57 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2977,12 +2553,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2994,7 +2570,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3002,12 +2578,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line64 +// CHECK-NEXT: line60 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3023,7 +2599,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3031,12 +2607,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3056,12 +2632,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3069,12 +2645,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col20 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3086,7 +2662,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3094,12 +2670,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col22 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3115,7 +2691,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3123,12 +2699,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line107 +// CHECK-NEXT: line103 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3144,7 +2720,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line100 +// CHECK-NEXT: line96 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3162,12 +2738,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line100 +// CHECK-NEXT: line96 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line100 +// CHECK-NEXT: line96 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3175,12 +2751,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line101 +// CHECK-NEXT: line97 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line101 +// CHECK-NEXT: line97 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3192,7 +2768,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line101 +// CHECK-NEXT: line97 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3200,12 +2776,12 @@ void testUseOfNullPointer() { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line101 +// CHECK-NEXT: line97 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line101 +// CHECK-NEXT: line97 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3226,7 +2802,7 @@ void testUseOfNullPointer() { // CHECK-NEXT: issue_hash1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line101 +// CHECK-NEXT: line97 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: -- 2.7.4