From: Artem Dergachev Date: Wed, 20 Dec 2017 01:17:53 +0000 (+0000) Subject: [analyzer] De-duplicate path diagnostics for each exploded graph node. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3ad7a89220f4dd3d8433659d0d31bb6b49762612;p=clang [analyzer] De-duplicate path diagnostics for each exploded graph node. The bugreporter::trackNullOrUndefValue() mechanism contains a system of bug reporter visitors that recursively call each other in order to track where a null or undefined value came from, where each visitor represents a particular tracking mechanism (track how the value was stored, track how the value was returned from a function, track how the value was constrained to null, etc.). Each visitor is only added once per value it needs to track. Almost. One exception from this rule would be FindLastStoreBRVisitor that has two operation modes: it contains a flag that indicates whether null stored values should be suppressed. Two instances of FindLastStoreBRVisitor with different values of this flag are considered to be different visitors, so they can be added twice and produce the same diagnostic twice. This was indeed the case in the affected test. With the current logic of this whole machinery, such duplication seems unavoidable. We should be able to safely add visitors with different flag values without constructing duplicate diagnostic pieces. Hence the effort in this commit to de-duplicate diagnostics regardless of what visitors have produced them. Differential Revision: https://reviews.llvm.org/D41258 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@321135 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h index a07cd88950..f31ab2cd81 100644 --- a/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h +++ b/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h @@ -334,7 +334,7 @@ public: // Path "pieces" for path-sensitive diagnostics. //===----------------------------------------------------------------------===// -class PathDiagnosticPiece { +class PathDiagnosticPiece: public llvm::FoldingSetNode { public: enum Kind { ControlFlow, Event, Macro, Call, Note }; enum DisplayHint { Above, Below }; diff --git a/lib/StaticAnalyzer/Core/BugReporter.cpp b/lib/StaticAnalyzer/Core/BugReporter.cpp index 4a5d25fc56..dc284888eb 100644 --- a/lib/StaticAnalyzer/Core/BugReporter.cpp +++ b/lib/StaticAnalyzer/Core/BugReporter.cpp @@ -885,8 +885,12 @@ static bool GenerateMinimalPathDiagnostic( if (NextNode) { // Add diagnostic pieces from custom visitors. BugReport *R = PDB.getBugReport(); + llvm::FoldingSet DeduplicationSet; for (auto &V : visitors) { if (auto p = V->VisitNode(N, NextNode, PDB, *R)) { + if (DeduplicationSet.GetOrInsertNode(p.get()) != p.get()) + continue; + updateStackPiecesWithMessage(*p, CallStack); PD.getActivePath().push_front(std::move(p)); } @@ -1584,8 +1588,12 @@ static bool GenerateExtensivePathDiagnostic( // Add pieces from custom visitors. BugReport *R = PDB.getBugReport(); + llvm::FoldingSet DeduplicationSet; for (auto &V : visitors) { if (auto p = V->VisitNode(N, NextNode, PDB, *R)) { + if (DeduplicationSet.GetOrInsertNode(p.get()) != p.get()) + continue; + const PathDiagnosticLocation &Loc = p->getLocation(); EB.addEdge(Loc, true); updateStackPiecesWithMessage(*p, CallStack); @@ -1879,8 +1887,12 @@ static bool GenerateAlternateExtensivePathDiagnostic( continue; // Add pieces from custom visitors. + llvm::FoldingSet DeduplicationSet; for (auto &V : visitors) { if (auto p = V->VisitNode(N, NextNode, PDB, *report)) { + if (DeduplicationSet.GetOrInsertNode(p.get()) != p.get()) + continue; + addEdgeToPath(PD.getActivePath(), PrevLoc, p->getLocation(), PDB.LC); updateStackPiecesWithMessage(*p, CallStack); PD.getActivePath().push_front(std::move(p)); diff --git a/test/Analysis/inlining/path-notes.cpp b/test/Analysis/inlining/path-notes.cpp index 3c7fd63e8d..4d0b899e7c 100644 --- a/test/Analysis/inlining/path-notes.cpp +++ b/test/Analysis/inlining/path-notes.cpp @@ -163,10 +163,8 @@ namespace ReturnZeroNote { const int &getZeroByRef() { static int zeroVar; - // FIXME: Duplicate diagnostics! zeroVar = 0; // expected-note@-1 {{The value 0 is assigned to 'zeroVar'}} - // expected-note@-2 {{The value 0 is assigned to 'zeroVar'}} return zeroVar; // expected-note@-1 {{Returning zero (reference to 'zeroVar')}} } @@ -2940,12 +2938,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2953,12 +2951,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2970,7 +2968,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -2978,12 +2976,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3076,7 +3074,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3084,12 +3082,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3109,12 +3107,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col29 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3122,12 +3120,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3139,7 +3137,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3147,12 +3145,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3176,7 +3174,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line175 +// CHECK-NEXT: line173 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3192,12 +3190,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3205,12 +3203,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3222,7 +3220,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3230,12 +3228,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col36 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3316,12 +3314,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3333,7 +3331,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3341,41 +3339,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line167 -// CHECK-NEXT: col15 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: depth1 -// CHECK-NEXT: extended_message -// CHECK-NEXT: The value 0 is assigned to 'zeroVar' -// CHECK-NEXT: message -// CHECK-NEXT: The value 0 is assigned to 'zeroVar' -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: kindevent -// CHECK-NEXT: location -// CHECK-NEXT: -// CHECK-NEXT: line167 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: ranges -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line167 -// CHECK-NEXT: col5 -// CHECK-NEXT: file0 -// CHECK-NEXT: -// CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3395,12 +3364,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line167 +// CHECK-NEXT: line166 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3408,12 +3377,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line170 +// CHECK-NEXT: line168 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line170 +// CHECK-NEXT: line168 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3425,7 +3394,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line170 +// CHECK-NEXT: line168 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3433,12 +3402,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line170 +// CHECK-NEXT: line168 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line170 +// CHECK-NEXT: line168 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3454,7 +3423,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3462,12 +3431,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col36 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3487,12 +3456,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col34 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3500,12 +3469,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3517,7 +3486,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3525,12 +3494,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col36 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3554,7 +3523,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line182 +// CHECK-NEXT: line180 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3566,7 +3535,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line190 +// CHECK-NEXT: line188 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3574,12 +3543,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line190 +// CHECK-NEXT: line188 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line190 +// CHECK-NEXT: line188 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3599,12 +3568,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line190 +// CHECK-NEXT: line188 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line190 +// CHECK-NEXT: line188 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3612,12 +3581,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line192 +// CHECK-NEXT: line190 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line192 +// CHECK-NEXT: line190 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3629,7 +3598,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line192 +// CHECK-NEXT: line190 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3637,12 +3606,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line192 +// CHECK-NEXT: line190 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line192 +// CHECK-NEXT: line190 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3666,7 +3635,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line192 +// CHECK-NEXT: line190 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3678,7 +3647,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line205 +// CHECK-NEXT: line203 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3686,12 +3655,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line205 +// CHECK-NEXT: line203 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line205 +// CHECK-NEXT: line203 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3711,12 +3680,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line205 +// CHECK-NEXT: line203 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line205 +// CHECK-NEXT: line203 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3724,12 +3693,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3745,12 +3714,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3758,12 +3727,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3775,7 +3744,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3783,12 +3752,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3808,12 +3777,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col23 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3821,12 +3790,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3838,7 +3807,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3846,12 +3815,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line207 +// CHECK-NEXT: line205 // CHECK-NEXT: col24 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3867,7 +3836,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3885,12 +3854,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col19 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3898,12 +3867,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col35 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col35 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3919,12 +3888,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col35 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col35 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3932,12 +3901,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col33 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3949,7 +3918,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3967,12 +3936,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col31 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line198 +// CHECK-NEXT: line196 // CHECK-NEXT: col33 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3980,12 +3949,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line199 +// CHECK-NEXT: line197 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line199 +// CHECK-NEXT: line197 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -3997,7 +3966,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line199 +// CHECK-NEXT: line197 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4005,12 +3974,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line199 +// CHECK-NEXT: line197 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line199 +// CHECK-NEXT: line197 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4032,7 +4001,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line199 +// CHECK-NEXT: line197 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4044,7 +4013,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line212 +// CHECK-NEXT: line210 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4052,12 +4021,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line212 +// CHECK-NEXT: line210 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line212 +// CHECK-NEXT: line210 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4077,12 +4046,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line212 +// CHECK-NEXT: line210 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line212 +// CHECK-NEXT: line210 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4090,12 +4059,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4107,7 +4076,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4115,12 +4084,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4140,12 +4109,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line213 +// CHECK-NEXT: line211 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4153,12 +4122,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4174,12 +4143,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4187,12 +4156,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4204,7 +4173,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4212,12 +4181,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4241,7 +4210,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset3 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line214 +// CHECK-NEXT: line212 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4253,7 +4222,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line222 +// CHECK-NEXT: line220 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4261,12 +4230,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line222 +// CHECK-NEXT: line220 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line222 +// CHECK-NEXT: line220 // CHECK-NEXT: col9 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4286,12 +4255,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line222 +// CHECK-NEXT: line220 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line222 +// CHECK-NEXT: line220 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4299,12 +4268,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line223 +// CHECK-NEXT: line221 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line223 +// CHECK-NEXT: line221 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4316,7 +4285,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line223 +// CHECK-NEXT: line221 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4324,12 +4293,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line223 +// CHECK-NEXT: line221 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line223 +// CHECK-NEXT: line221 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4353,7 +4322,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line223 +// CHECK-NEXT: line221 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4369,12 +4338,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4382,12 +4351,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4399,7 +4368,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4407,12 +4376,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4432,12 +4401,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col6 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line236 +// CHECK-NEXT: line234 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4445,12 +4414,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4466,12 +4435,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4479,12 +4448,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4496,7 +4465,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4504,12 +4473,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4533,7 +4502,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset4 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line239 +// CHECK-NEXT: line237 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4545,7 +4514,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line244 +// CHECK-NEXT: line242 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4553,12 +4522,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line244 +// CHECK-NEXT: line242 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line244 +// CHECK-NEXT: line242 // CHECK-NEXT: col21 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4578,12 +4547,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line244 +// CHECK-NEXT: line242 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line244 +// CHECK-NEXT: line242 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4591,12 +4560,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line245 +// CHECK-NEXT: line243 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line245 +// CHECK-NEXT: line243 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4608,7 +4577,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line245 +// CHECK-NEXT: line243 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4616,12 +4585,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line245 +// CHECK-NEXT: line243 // CHECK-NEXT: col2 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line245 +// CHECK-NEXT: line243 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4645,7 +4614,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset2 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line245 +// CHECK-NEXT: line243 // CHECK-NEXT: col11 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4657,7 +4626,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line256 +// CHECK-NEXT: line254 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4665,12 +4634,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line256 +// CHECK-NEXT: line254 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line256 +// CHECK-NEXT: line254 // CHECK-NEXT: col14 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4690,12 +4659,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line256 +// CHECK-NEXT: line254 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line256 +// CHECK-NEXT: line254 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4703,12 +4672,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4724,12 +4693,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col4 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4737,12 +4706,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4754,7 +4723,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4762,12 +4731,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col15 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4787,12 +4756,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line261 +// CHECK-NEXT: line259 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4800,12 +4769,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line263 +// CHECK-NEXT: line261 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line263 +// CHECK-NEXT: line261 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4817,7 +4786,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line263 +// CHECK-NEXT: line261 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4825,12 +4794,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line263 +// CHECK-NEXT: line261 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line263 +// CHECK-NEXT: line261 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4854,7 +4823,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset8 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line263 +// CHECK-NEXT: line261 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4870,12 +4839,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4883,12 +4852,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col38 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4900,7 +4869,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4908,12 +4877,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4929,7 +4898,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4937,12 +4906,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line275 +// CHECK-NEXT: line273 // CHECK-NEXT: col41 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4958,7 +4927,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line270 +// CHECK-NEXT: line268 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4976,12 +4945,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line270 +// CHECK-NEXT: line268 // CHECK-NEXT: col1 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line270 +// CHECK-NEXT: line268 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -4989,12 +4958,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5010,12 +4979,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col3 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col8 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5023,12 +4992,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5040,7 +5009,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5048,12 +5017,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col10 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5077,7 +5046,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line271 +// CHECK-NEXT: line269 // CHECK-NEXT: col13 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5089,7 +5058,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line298 +// CHECK-NEXT: line296 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5097,12 +5066,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line298 +// CHECK-NEXT: line296 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line298 +// CHECK-NEXT: line296 // CHECK-NEXT: col16 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5118,7 +5087,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line291 +// CHECK-NEXT: line289 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5136,12 +5105,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line291 +// CHECK-NEXT: line289 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line291 +// CHECK-NEXT: line289 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5149,12 +5118,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line292 +// CHECK-NEXT: line290 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line292 +// CHECK-NEXT: line290 // CHECK-NEXT: col12 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5166,7 +5135,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line292 +// CHECK-NEXT: line290 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5174,12 +5143,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line292 +// CHECK-NEXT: line290 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line292 +// CHECK-NEXT: line290 // CHECK-NEXT: col18 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5195,7 +5164,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line282 +// CHECK-NEXT: line280 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5213,12 +5182,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line282 +// CHECK-NEXT: line280 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line282 +// CHECK-NEXT: line280 // CHECK-NEXT: col5 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5226,12 +5195,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5247,12 +5216,12 @@ namespace PR17746 { // CHECK-NEXT: start // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5260,12 +5229,12 @@ namespace PR17746 { // CHECK-NEXT: end // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5277,7 +5246,7 @@ namespace PR17746 { // CHECK-NEXT: kindevent // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5285,12 +5254,12 @@ namespace PR17746 { // CHECK-NEXT: // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col7 // CHECK-NEXT: file0 // CHECK-NEXT: // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col28 // CHECK-NEXT: file0 // CHECK-NEXT: @@ -5312,7 +5281,7 @@ namespace PR17746 { // CHECK-NEXT: issue_hash_function_offset1 // CHECK-NEXT: location // CHECK-NEXT: -// CHECK-NEXT: line283 +// CHECK-NEXT: line281 // CHECK-NEXT: col26 // CHECK-NEXT: file0 // CHECK-NEXT: