1*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=text -analyzer-config graph-trim-interval=5 -verify %s 2*f4a2713aSLionel Sambuc // RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-output=plist-multi-file -analyzer-config graph-trim-interval=5 -analyzer-config path-diagnostics-alternate=false %s -o %t.plist 3*f4a2713aSLionel Sambuc // RUN: FileCheck --input-file=%t.plist %s 4*f4a2713aSLionel Sambuc use(int * ptr,int val)5*f4a2713aSLionel Sambucvoid use(int *ptr, int val) { 6*f4a2713aSLionel Sambuc *ptr = val; // expected-warning {{Dereference of null pointer (loaded from variable 'ptr')}} 7*f4a2713aSLionel Sambuc // expected-note@-1 {{Dereference of null pointer (loaded from variable 'ptr')}} 8*f4a2713aSLionel Sambuc } 9*f4a2713aSLionel Sambuc compute()10*f4a2713aSLionel Sambucint compute() { 11*f4a2713aSLionel Sambuc // Do something that will take enough processing to trigger trimming. 12*f4a2713aSLionel Sambuc // FIXME: This is actually really sensitive. If the interval timing is just 13*f4a2713aSLionel Sambuc // wrong, the node for the actual dereference may also be collected, and all 14*f4a2713aSLionel Sambuc // the path notes will disappear. <rdar://problem/12511814> 15*f4a2713aSLionel Sambuc return 2 + 3 + 4 + 5 + 6; 16*f4a2713aSLionel Sambuc } 17*f4a2713aSLionel Sambuc testSimple()18*f4a2713aSLionel Sambucvoid testSimple() { 19*f4a2713aSLionel Sambuc int *p = 0; 20*f4a2713aSLionel Sambuc // expected-note@-1 {{'p' initialized to a null pointer value}} 21*f4a2713aSLionel Sambuc use(p, compute()); 22*f4a2713aSLionel Sambuc // expected-note@-1 {{Passing null pointer value via 1st parameter 'ptr'}} 23*f4a2713aSLionel Sambuc // expected-note@-2 {{Calling 'use'}} 24*f4a2713aSLionel Sambuc } 25*f4a2713aSLionel Sambuc 26*f4a2713aSLionel Sambuc use2(int * ptr,int val)27*f4a2713aSLionel Sambucvoid use2(int *ptr, int val) { 28*f4a2713aSLionel Sambuc *ptr = val; // expected-warning {{Dereference of null pointer (loaded from variable 'ptr')}} 29*f4a2713aSLionel Sambuc // expected-note@-1 {{Dereference of null pointer (loaded from variable 'ptr')}} 30*f4a2713aSLionel Sambuc } 31*f4a2713aSLionel Sambuc passThrough(int * p)32*f4a2713aSLionel Sambucvoid passThrough(int *p) { 33*f4a2713aSLionel Sambuc use2(p, compute()); 34*f4a2713aSLionel Sambuc // expected-note@-1 {{Passing null pointer value via 1st parameter 'ptr'}} 35*f4a2713aSLionel Sambuc // expected-note@-2 {{Calling 'use2'}} 36*f4a2713aSLionel Sambuc } 37*f4a2713aSLionel Sambuc testChainedCalls()38*f4a2713aSLionel Sambucvoid testChainedCalls() { 39*f4a2713aSLionel Sambuc int *ptr = 0; 40*f4a2713aSLionel Sambuc // expected-note@-1 {{'ptr' initialized to a null pointer value}} 41*f4a2713aSLionel Sambuc passThrough(ptr); 42*f4a2713aSLionel Sambuc // expected-note@-1 {{Passing null pointer value via 1st parameter 'p'}} 43*f4a2713aSLionel Sambuc // expected-note@-2 {{Calling 'passThrough'}} 44*f4a2713aSLionel Sambuc } 45*f4a2713aSLionel Sambuc 46*f4a2713aSLionel Sambuc // CHECK: <key>diagnostics</key> 47*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 48*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 49*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>path</key> 50*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 51*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 52*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 53*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 54*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 55*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>19</integer> 56*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 57*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 58*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 59*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 60*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 61*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 62*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 63*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>19</integer> 64*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 65*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 66*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 67*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 68*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>19</integer> 69*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 70*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 71*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 72*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 73*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 74*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>0</integer> 75*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 76*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> 77*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 78*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>'p' initialized to a null pointer value</string> 79*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 80*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 81*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 82*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 83*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 84*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 85*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 86*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 87*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 88*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>19</integer> 89*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 90*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 91*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 92*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 93*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>19</integer> 94*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>5</integer> 95*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 96*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 97*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 98*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 99*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 100*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 101*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 102*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>10</integer> 103*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 104*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 105*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 106*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 107*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>16</integer> 108*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 109*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 110*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 111*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 112*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 113*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 114*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 115*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 116*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 117*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 118*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 119*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 120*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 121*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 122*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 123*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>10</integer> 124*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 125*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 126*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 127*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 128*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>16</integer> 129*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 130*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 131*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 132*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 133*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 134*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 135*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 136*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>7</integer> 137*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 138*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 139*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 140*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 141*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>7</integer> 142*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 143*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 144*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 145*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 146*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 147*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 148*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 149*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 150*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 151*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 152*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 153*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>7</integer> 154*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 155*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 156*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 157*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 158*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 159*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 160*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 161*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>7</integer> 162*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 163*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 164*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 165*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 166*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>7</integer> 167*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 168*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 169*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 170*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 171*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>0</integer> 172*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 173*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Passing null pointer value via 1st parameter 'ptr'</string> 174*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 175*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Passing null pointer value via 1st parameter 'ptr'</string> 176*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 177*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 178*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 179*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 180*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 181*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 182*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 183*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 184*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 185*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 186*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 187*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 188*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 189*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 190*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 191*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 192*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 193*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 194*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>21</integer> 195*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>19</integer> 196*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 197*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 198*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 199*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 200*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>0</integer> 201*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 202*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Calling 'use'</string> 203*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 204*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Calling 'use'</string> 205*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 206*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 207*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 208*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 209*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 210*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>5</integer> 211*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>1</integer> 212*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 213*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 214*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>1</integer> 215*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 216*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Entered call from 'testSimple'</string> 217*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 218*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Entered call from 'testSimple'</string> 219*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 220*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 221*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 222*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 223*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 224*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 225*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 226*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 227*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 228*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>5</integer> 229*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>1</integer> 230*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 231*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 232*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 233*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>5</integer> 234*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>4</integer> 235*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 236*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 237*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 238*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 239*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 240*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 241*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 242*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 243*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 244*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 245*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 246*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 247*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 248*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 249*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 250*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 251*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 252*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 253*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 254*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 255*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 256*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 257*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 258*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 259*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 260*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 261*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 262*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 263*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 264*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 265*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 266*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 267*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 268*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 269*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 270*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 271*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 272*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 273*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 274*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 275*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 276*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 277*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 278*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 279*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 280*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 281*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 282*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 283*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 284*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 285*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 286*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 287*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 288*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 289*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 290*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 291*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 292*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 293*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 294*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 295*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 296*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 297*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 298*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 299*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 300*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 301*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>4</integer> 302*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 303*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 304*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 305*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 306*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>6</integer> 307*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 308*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 309*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 310*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 311*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>1</integer> 312*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 313*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'ptr')</string> 314*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 315*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'ptr')</string> 316*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 317*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 318*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'ptr')</string> 319*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>category</key><string>Logic error</string> 320*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> 321*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> 322*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>issue_context</key><string>use</string> 323*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>issue_hash</key><string>1</string> 324*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 325*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 326*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>6</integer> 327*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 328*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 329*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 330*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 331*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 332*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>path</key> 333*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 334*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 335*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 336*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 337*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 338*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>39</integer> 339*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 340*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 341*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 342*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 343*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 344*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 345*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 346*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>39</integer> 347*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 348*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 349*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 350*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 351*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>39</integer> 352*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>10</integer> 353*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 354*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 355*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 356*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 357*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>0</integer> 358*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 359*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>'ptr' initialized to a null pointer value</string> 360*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 361*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>'ptr' initialized to a null pointer value</string> 362*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 363*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 364*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 365*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 366*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 367*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 368*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 369*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 370*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 371*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>39</integer> 372*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 373*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 374*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 375*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 376*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>39</integer> 377*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>5</integer> 378*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 379*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 380*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 381*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 382*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 383*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 384*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 385*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 386*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 387*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 388*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 389*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 390*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>13</integer> 391*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 392*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 393*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 394*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 395*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 396*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 397*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 398*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 399*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 400*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 401*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 402*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 403*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 404*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 405*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 406*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 407*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 408*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 409*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 410*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 411*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>13</integer> 412*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 413*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 414*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 415*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 416*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 417*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 418*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 419*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>15</integer> 420*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 421*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 422*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 423*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 424*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>17</integer> 425*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 426*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 427*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 428*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 429*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 430*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 431*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 432*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 433*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 434*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 435*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 436*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>15</integer> 437*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 438*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 439*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 440*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 441*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 442*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 443*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 444*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>15</integer> 445*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 446*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 447*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 448*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 449*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>17</integer> 450*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 451*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 452*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 453*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 454*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>0</integer> 455*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 456*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Passing null pointer value via 1st parameter 'p'</string> 457*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 458*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Passing null pointer value via 1st parameter 'p'</string> 459*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 460*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 461*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 462*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 463*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 464*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 465*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 466*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 467*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 468*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 469*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 470*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 471*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 472*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 473*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 474*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 475*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 476*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 477*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>41</integer> 478*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>18</integer> 479*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 480*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 481*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 482*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 483*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>0</integer> 484*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 485*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Calling 'passThrough'</string> 486*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 487*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Calling 'passThrough'</string> 488*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 489*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 490*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 491*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 492*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 493*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>32</integer> 494*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>1</integer> 495*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 496*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 497*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>1</integer> 498*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 499*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Entered call from 'testChainedCalls'</string> 500*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 501*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Entered call from 'testChainedCalls'</string> 502*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 503*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 504*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 505*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 506*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 507*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 508*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 509*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 510*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 511*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>32</integer> 512*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>1</integer> 513*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 514*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 515*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 516*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>32</integer> 517*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>4</integer> 518*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 519*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 520*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 521*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 522*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 523*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 524*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 525*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 526*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 527*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 528*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 529*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 530*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>6</integer> 531*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 532*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 533*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 534*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 535*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 536*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 537*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 538*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 539*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 540*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 541*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 542*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 543*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 544*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 545*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 546*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 547*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 548*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 549*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 550*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 551*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>6</integer> 552*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 553*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 554*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 555*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 556*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 557*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 558*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 559*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>11</integer> 560*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 561*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 562*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 563*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 564*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>17</integer> 565*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 566*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 567*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 568*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 569*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 570*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 571*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 572*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 573*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 574*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 575*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 576*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 577*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 578*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 579*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 580*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>11</integer> 581*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 582*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 583*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 584*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 585*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>17</integer> 586*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 587*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 588*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 589*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 590*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 591*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 592*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 593*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 594*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 595*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 596*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 597*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 598*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 599*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 600*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 601*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 602*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 603*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 604*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 605*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 606*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 607*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 608*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 609*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 610*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 611*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 612*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 613*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 614*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 615*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 616*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 617*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 618*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 619*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 620*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 621*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 622*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 623*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 624*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 625*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 626*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 627*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 628*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>1</integer> 629*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 630*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Passing null pointer value via 1st parameter 'ptr'</string> 631*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 632*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Passing null pointer value via 1st parameter 'ptr'</string> 633*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 634*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 635*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 636*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 637*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 638*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 639*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 640*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 641*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 642*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 643*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 644*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 645*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 646*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 647*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 648*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 649*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 650*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 651*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>33</integer> 652*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>20</integer> 653*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 654*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 655*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 656*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 657*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>1</integer> 658*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 659*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Calling 'use2'</string> 660*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 661*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Calling 'use2'</string> 662*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 663*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 664*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 665*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 666*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 667*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>27</integer> 668*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>1</integer> 669*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 670*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 671*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>2</integer> 672*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 673*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Entered call from 'passThrough'</string> 674*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 675*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Entered call from 'passThrough'</string> 676*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 677*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 678*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 679*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 680*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 681*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 682*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 683*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 684*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 685*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>27</integer> 686*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>1</integer> 687*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 688*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 689*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 690*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>27</integer> 691*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>4</integer> 692*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 693*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 694*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 695*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 696*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 697*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 698*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 699*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 700*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 701*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 702*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 703*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 704*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 705*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 706*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 707*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 708*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 709*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 710*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 711*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 712*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>control</string> 713*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>edges</key> 714*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 715*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 716*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>start</key> 717*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 718*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 719*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 720*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 721*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 722*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 723*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 724*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 725*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>3</integer> 726*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 727*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 728*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 729*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>end</key> 730*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 731*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 732*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 733*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 734*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 735*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 736*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 737*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 738*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 739*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 740*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 741*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 742*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 743*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 744*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 745*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 746*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>kind</key><string>event</string> 747*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 748*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 749*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 750*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 751*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 752*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 753*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>ranges</key> 754*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 755*f4a2713aSLionel Sambuc // CHECK-NEXT: <array> 756*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 757*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 758*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>4</integer> 759*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 760*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 761*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 762*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 763*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>6</integer> 764*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 765*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 766*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 767*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 768*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>depth</key><integer>2</integer> 769*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>extended_message</key> 770*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'ptr')</string> 771*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>message</key> 772*f4a2713aSLionel Sambuc // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'ptr')</string> 773*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 774*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 775*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'ptr')</string> 776*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>category</key><string>Logic error</string> 777*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>type</key><string>Dereference of null pointer</string> 778*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>issue_context_kind</key><string>function</string> 779*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>issue_context</key><string>use2</string> 780*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>issue_hash</key><string>1</string> 781*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>location</key> 782*f4a2713aSLionel Sambuc // CHECK-NEXT: <dict> 783*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>line</key><integer>28</integer> 784*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>col</key><integer>8</integer> 785*f4a2713aSLionel Sambuc // CHECK-NEXT: <key>file</key><integer>0</integer> 786*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 787*f4a2713aSLionel Sambuc // CHECK-NEXT: </dict> 788*f4a2713aSLionel Sambuc // CHECK-NEXT: </array> 789