[cfe-commits] r165354 - in /cfe/trunk: lib/StaticAnalyzer/Core/PathDiagnostic.cpp test/Analysis/plist-output.m
NAKAMURA Takumi
geek4civic at gmail.com
Fri Oct 5 18:43:00 PDT 2012
Jordan it fails on some hosts for me.
http://bb.pgr.jp/builders/cmake-clang-x86_64-linux/builds/2174
http://bb.pgr.jp/builders/cmake-clang-i686-mingw32/builds/1508
http://bb.pgr.jp/builders/cmake-clang-i686-msvc10/builds/1593
The emissions of each host attached.
...Takumi
2012/10/6 Jordan Rose <jordan_rose at apple.com>:
> Author: jrose
> Date: Fri Oct 5 20:19:30 2012
> New Revision: 165354
>
> URL: http://llvm.org/viewvc/llvm-project?rev=165354&view=rev
> Log:
> [analyzer] Handle implicit statements used for end-of-path nodes' source locs.
>
> Some implicit statements, such as the implicit 'self' inserted for "free"
> Objective-C ivar access, have invalid source locations. If one of these
> statements is the location where an issue is reported, we'll now look at
> the enclosing statements for a valid source location.
>
> <rdar://problem/12446776>
>
> Modified:
> cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
> cfe/trunk/test/Analysis/plist-output.m
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp?rev=165354&r1=165353&r2=165354&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp Fri Oct 5 20:19:30 2012
> @@ -612,21 +612,26 @@
> assert(N && "Cannot create a location with a null node.");
>
> const ExplodedNode *NI = N;
> + const Stmt *S = 0;
>
> while (NI) {
> ProgramPoint P = NI->getLocation();
> - const LocationContext *LC = P.getLocationContext();
> if (const StmtPoint *PS = dyn_cast<StmtPoint>(&P))
> - return PathDiagnosticLocation(PS->getStmt(), SM, LC);
> - else if (const BlockEdge *BE = dyn_cast<BlockEdge>(&P)) {
> - const Stmt *Term = BE->getSrc()->getTerminator();
> - if (Term) {
> - return PathDiagnosticLocation(Term, SM, LC);
> - }
> - }
> + S = PS->getStmt();
> + else if (const BlockEdge *BE = dyn_cast<BlockEdge>(&P))
> + S = BE->getSrc()->getTerminator();
> + if (S)
> + break;
> NI = NI->succ_empty() ? 0 : *(NI->succ_begin());
> }
>
> + if (S) {
> + const LocationContext *LC = NI->getLocationContext();
> + if (S->getLocStart().isValid())
> + return PathDiagnosticLocation(S, SM, LC);
> + return PathDiagnosticLocation(getValidSourceLocation(S, LC), SM);
> + }
> +
> return createDeclEnd(N->getLocationContext(), SM);
> }
>
>
> Modified: cfe/trunk/test/Analysis/plist-output.m
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/plist-output.m?rev=165354&r1=165353&r2=165354&view=diff
> ==============================================================================
> --- cfe/trunk/test/Analysis/plist-output.m (original)
> +++ cfe/trunk/test/Analysis/plist-output.m Fri Oct 5 20:19:30 2012
> @@ -77,6 +77,17 @@
> *p = 0xDEADBEEF; // expected-warning {{deference}}
> }
> }
> +
> +// The original source for the above Radar contains another problem:
> +// if the end-of-path node is an implicit statement, it may not have a valid
> +// source location. <rdar://problem/12446776>
> +- (void)test2 {
> + if (bar_cond_assign()) {
> + id foo = [[RDar10797980 alloc] init]; // leak
> + }
> + (void)y; // first statement after the 'if' is an implicit 'self' DeclRefExpr
> +}
> +
> @end
>
> // Test that loops are documented in the path.
> @@ -1789,6 +1800,64 @@
> // CHECK-NEXT: <key>path</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>kind</key><string>event</string>
> +// CHECK-NEXT: <key>location</key>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>8</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <key>ranges</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>8</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>10</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>40</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>depth</key><integer>0</integer>
> +// CHECK-NEXT: <key>extended_message</key>
> +// CHECK-NEXT: <string>Value stored to 'foo' during its initialization is never read</string>
> +// CHECK-NEXT: <key>message</key>
> +// CHECK-NEXT: <string>Value stored to 'foo' during its initialization is never read</string>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>description</key><string>Value stored to 'foo' during its initialization is never read</string>
> +// CHECK-NEXT: <key>category</key><string>Dead store</string>
> +// CHECK-NEXT: <key>type</key><string>Dead initialization</string>
> +// CHECK-NEXT: <key>issue_context_kind</key><string>Objective-C method</string>
> +// CHECK-NEXT: <key>issue_context</key><string>test2</string>
> +// CHECK-NEXT: <key>issue_hash</key><integer>2</integer>
> +// CHECK-NEXT: <key>location</key>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>8</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>path</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> // CHECK-NEXT: <key>kind</key><string>control</string>
> // CHECK-NEXT: <key>edges</key>
> // CHECK-NEXT: <array>
> @@ -1796,25 +1865,187 @@
> // CHECK-NEXT: <key>start</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>85</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>col</key><integer>4</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>end</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>6</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>kind</key><string>control</string>
> +// CHECK-NEXT: <key>edges</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>start</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>5</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>6</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> // CHECK-NEXT: </array>
> // CHECK-NEXT: <key>end</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>kind</key><string>event</string>
> +// CHECK-NEXT: <key>location</key>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <key>ranges</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>40</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>depth</key><integer>0</integer>
> +// CHECK-NEXT: <key>extended_message</key>
> +// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
> +// CHECK-NEXT: <key>message</key>
> +// CHECK-NEXT: <string>Method returns an Objective-C object with a +1 retain count</string>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>kind</key><string>control</string>
> +// CHECK-NEXT: <key>edges</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>start</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>col</key><integer>14</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>end</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>88</integer>
> +// CHECK-NEXT: <key>col</key><integer>9</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>88</integer>
> +// CHECK-NEXT: <key>col</key><integer>9</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>kind</key><string>event</string>
> +// CHECK-NEXT: <key>location</key>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>88</integer>
> +// CHECK-NEXT: <key>col</key><integer>9</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <key>depth</key><integer>0</integer>
> +// CHECK-NEXT: <key>extended_message</key>
> +// CHECK-NEXT: <string>Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1</string>
> +// CHECK-NEXT: <key>message</key>
> +// CHECK-NEXT: <string>Object leaked: object allocated and stored into 'foo' is not referenced later in this execution path and has a retain count of +1</string>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>description</key><string>Potential leak of an object stored into 'foo'</string>
> +// CHECK-NEXT: <key>category</key><string>Memory (Core Foundation/Objective-C)</string>
> +// CHECK-NEXT: <key>type</key><string>Leak</string>
> +// CHECK-NEXT: <key>issue_context_kind</key><string>Objective-C method</string>
> +// CHECK-NEXT: <key>issue_context</key><string>test2</string>
> +// CHECK-NEXT: <key>issue_hash</key><integer>4</integer>
> +// CHECK-NEXT: <key>location</key>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>88</integer>
> +// CHECK-NEXT: <key>col</key><integer>9</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>path</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>kind</key><string>control</string>
> +// CHECK-NEXT: <key>edges</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>start</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> +// CHECK-NEXT: <key>col</key><integer>3</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> +// CHECK-NEXT: <key>col</key><integer>5</integer>
> +// CHECK-NEXT: <key>file</key><integer>0</integer>
> +// CHECK-NEXT: </dict>
> +// CHECK-NEXT: </array>
> +// CHECK-NEXT: <key>end</key>
> +// CHECK-NEXT: <array>
> +// CHECK-NEXT: <dict>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>4</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1830,12 +2061,12 @@
> // CHECK-NEXT: <key>start</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>4</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1843,12 +2074,12 @@
> // CHECK-NEXT: <key>end</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>89</integer>
> +// CHECK-NEXT: <key>line</key><integer>100</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>89</integer>
> +// CHECK-NEXT: <key>line</key><integer>100</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1864,12 +2095,12 @@
> // CHECK-NEXT: <key>start</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>89</integer>
> +// CHECK-NEXT: <key>line</key><integer>100</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>89</integer>
> +// CHECK-NEXT: <key>line</key><integer>100</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1877,12 +2108,12 @@
> // CHECK-NEXT: <key>end</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1894,7 +2125,7 @@
> // CHECK-NEXT: <key>kind</key><string>event</string>
> // CHECK-NEXT: <key>location</key>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1902,12 +2133,12 @@
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1927,12 +2158,12 @@
> // CHECK-NEXT: <key>start</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>3</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>84</integer>
> +// CHECK-NEXT: <key>line</key><integer>95</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1940,12 +2171,12 @@
> // CHECK-NEXT: <key>end</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>4</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1961,12 +2192,12 @@
> // CHECK-NEXT: <key>start</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>4</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>85</integer>
> +// CHECK-NEXT: <key>line</key><integer>96</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1974,12 +2205,12 @@
> // CHECK-NEXT: <key>end</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>7</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1991,7 +2222,7 @@
> // CHECK-NEXT: <key>kind</key><string>event</string>
> // CHECK-NEXT: <key>location</key>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -1999,12 +2230,12 @@
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>10</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -2024,12 +2255,12 @@
> // CHECK-NEXT: <key>start</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>86</integer>
> +// CHECK-NEXT: <key>line</key><integer>97</integer>
> // CHECK-NEXT: <key>col</key><integer>7</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -2037,12 +2268,12 @@
> // CHECK-NEXT: <key>end</key>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>87</integer>
> +// CHECK-NEXT: <key>line</key><integer>98</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>87</integer>
> +// CHECK-NEXT: <key>line</key><integer>98</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -2054,7 +2285,7 @@
> // CHECK-NEXT: <key>kind</key><string>event</string>
> // CHECK-NEXT: <key>location</key>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>87</integer>
> +// CHECK-NEXT: <key>line</key><integer>98</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -2062,12 +2293,12 @@
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <array>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>87</integer>
> +// CHECK-NEXT: <key>line</key><integer>98</integer>
> // CHECK-NEXT: <key>col</key><integer>6</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>87</integer>
> +// CHECK-NEXT: <key>line</key><integer>98</integer>
> // CHECK-NEXT: <key>col</key><integer>6</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
> @@ -2088,7 +2319,7 @@
> // CHECK-NEXT: <key>issue_hash</key><integer>4</integer>
> // CHECK-NEXT: <key>location</key>
> // CHECK-NEXT: <dict>
> -// CHECK-NEXT: <key>line</key><integer>87</integer>
> +// CHECK-NEXT: <key>line</key><integer>98</integer>
> // CHECK-NEXT: <key>col</key><integer>5</integer>
> // CHECK-NEXT: <key>file</key><integer>0</integer>
> // CHECK-NEXT: </dict>
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
-------------- next part --------------
A non-text attachment was scrubbed...
Name: p.zip
Type: application/zip
Size: 6748 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20121006/95181218/attachment.zip>
More information about the cfe-commits
mailing list