diff options
author | Jordan Rose <jordan_rose@apple.com> | 2012-09-22 01:25:00 +0000 |
---|---|---|
committer | Jordan Rose <jordan_rose@apple.com> | 2012-09-22 01:25:00 +0000 |
commit | 53221da865144db0ba6bd89ab30bcf81de0fe5d2 (patch) | |
tree | ad72b48f1a6f07c3c5ad95aec04dce12e338bd39 /test/Analysis/inlining/path-notes.c | |
parent | d632d6fc606f0be438c3b6fe5c43f1b3f5db98b1 (diff) |
[analyzer] Track a null value back through FindLastStoreBRVisitor.
Also, tidy up the other tracking visitors so that they mark the right
things as interesting and don't do extra work.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@164448 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Analysis/inlining/path-notes.c')
-rw-r--r-- | test/Analysis/inlining/path-notes.c | 531 |
1 files changed, 481 insertions, 50 deletions
diff --git a/test/Analysis/inlining/path-notes.c b/test/Analysis/inlining/path-notes.c index f098db9d70..bd44f0c895 100644 --- a/test/Analysis/inlining/path-notes.c +++ b/test/Analysis/inlining/path-notes.c @@ -98,6 +98,20 @@ void testStoreZero(int *a) { // expected-note@-1 {{Dereference of null pointer (loaded from variable 'a')}} } +void usePointer(int *p) { + *p = 1; // expected-warning{{Dereference of null pointer}} + // expected-note@-1 {{Dereference of null pointer}} +} + +void testUseOfNullPointer() { + // Test the case where an argument expression is itself a call. + usePointer(getZero()); + // expected-note@-1 {{Calling 'getZero'}} + // expected-note@-2 {{Returning from 'getZero'}} + // expected-note@-3 {{Passing null pointer value via 1st parameter 'p'}} + // expected-note@-4 {{Calling 'usePointer'}} +} + // CHECK: <key>diagnostics</key> // CHECK-NEXT: <array> // CHECK-NEXT: <dict> @@ -130,7 +144,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'zero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'zero'</string> +// CHECK-NEXT: <string>Calling 'zero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -144,7 +158,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testZero'</string> +// CHECK-NEXT: <string>Entered call from 'testZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -207,7 +221,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Null pointer value stored to 'a'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Null pointer value stored to 'a'</string> +// CHECK-NEXT: <string>Null pointer value stored to 'a'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -236,7 +250,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'zero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'zero'</string> +// CHECK-NEXT: <string>Returning from 'zero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -299,7 +313,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> +// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string> @@ -345,7 +359,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'check'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'check'</string> +// CHECK-NEXT: <string>Calling 'check'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -359,7 +373,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testCheck'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testCheck'</string> +// CHECK-NEXT: <string>Entered call from 'testCheck'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -456,7 +470,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Assuming 'p' is null</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Assuming 'p' is null</string> +// CHECK-NEXT: <string>Assuming 'p' is null</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -485,7 +499,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Assuming pointer value is null</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Assuming pointer value is null</string> +// CHECK-NEXT: <string>Assuming pointer value is null</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -548,7 +562,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'check'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'check'</string> +// CHECK-NEXT: <string>Returning from 'check'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -611,7 +625,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> +// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string> @@ -657,7 +671,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Variable 'a' initialized here</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Variable 'a' initialized here</string> +// CHECK-NEXT: <string>Variable 'a' initialized here</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -720,7 +734,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'check'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'check'</string> +// CHECK-NEXT: <string>Calling 'check'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -734,7 +748,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testInitCheck'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testInitCheck'</string> +// CHECK-NEXT: <string>Entered call from 'testInitCheck'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -831,7 +845,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Assuming 'p' is null</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Assuming 'p' is null</string> +// CHECK-NEXT: <string>Assuming 'p' is null</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -894,7 +908,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'check'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'check'</string> +// CHECK-NEXT: <string>Returning from 'check'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -957,7 +971,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> +// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string> @@ -1003,7 +1017,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Value assigned to 'a'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Value assigned to 'a'</string> +// CHECK-NEXT: <string>Value assigned to 'a'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1066,7 +1080,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'check'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'check'</string> +// CHECK-NEXT: <string>Calling 'check'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -1080,7 +1094,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testStoreCheck'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testStoreCheck'</string> +// CHECK-NEXT: <string>Entered call from 'testStoreCheck'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1177,7 +1191,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Assuming 'p' is null</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Assuming 'p' is null</string> +// CHECK-NEXT: <string>Assuming 'p' is null</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1240,7 +1254,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'check'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'check'</string> +// CHECK-NEXT: <string>Returning from 'check'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1303,7 +1317,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> +// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string> @@ -1383,7 +1397,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'getZero'</string> +// CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -1397,7 +1411,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testReturnZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testReturnZero'</string> +// CHECK-NEXT: <string>Entered call from 'testReturnZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1460,7 +1474,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> +// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1523,7 +1537,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> +// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -1552,7 +1566,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'getZero'</string> +// CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1649,7 +1663,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer</string> +// CHECK-NEXT: <string>Dereference of null pointer</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer</string> @@ -1729,7 +1743,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'getZero'</string> +// CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -1743,7 +1757,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testReturnZero2'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testReturnZero2'</string> +// CHECK-NEXT: <string>Entered call from 'testReturnZero2'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1806,7 +1820,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> +// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1869,7 +1883,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> +// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -1898,7 +1912,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'getZero'</string> +// CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -1995,7 +2009,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer</string> +// CHECK-NEXT: <string>Dereference of null pointer</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer</string> @@ -2075,7 +2089,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'getZero'</string> +// CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -2089,7 +2103,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testInitZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testInitZero'</string> +// CHECK-NEXT: <string>Entered call from 'testInitZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2152,7 +2166,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> +// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2215,7 +2229,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> +// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -2244,7 +2258,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'getZero'</string> +// CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2341,7 +2355,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Variable 'a' initialized to a null pointer value</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Variable 'a' initialized to a null pointer value</string> +// CHECK-NEXT: <string>Variable 'a' initialized to a null pointer value</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2404,7 +2418,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> +// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string> @@ -2484,7 +2498,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Calling 'getZero'</string> +// CHECK-NEXT: <string>Calling 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -2498,7 +2512,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Entered call from 'testStoreZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Entered call from 'testStoreZero'</string> +// CHECK-NEXT: <string>Entered call from 'testStoreZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2561,7 +2575,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> +// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2624,7 +2638,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> +// CHECK-NEXT: <string>Returning null pointer (loaded from 'p')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>event</string> @@ -2653,7 +2667,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Returning from 'getZero'</string> +// CHECK-NEXT: <string>Returning from 'getZero'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2750,7 +2764,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Null pointer value stored to 'a'</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Null pointer value stored to 'a'</string> +// CHECK-NEXT: <string>Null pointer value stored to 'a'</string> // CHECK-NEXT: </dict> // CHECK-NEXT: <dict> // CHECK-NEXT: <key>kind</key><string>control</string> @@ -2813,7 +2827,7 @@ void testStoreZero(int *a) { // CHECK-NEXT: <key>extended_message</key> // CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: <key>message</key> -// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> +// CHECK-NEXT: <string>Dereference of null pointer (loaded from variable 'a')</string> // CHECK-NEXT: </dict> // CHECK-NEXT: </array> // CHECK-NEXT: <key>description</key><string>Dereference of null pointer (loaded from variable 'a')</string> @@ -2829,5 +2843,422 @@ void testStoreZero(int *a) { // 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>108</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>108</integer> +// CHECK-NEXT: <key>col</key><integer>12</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>108</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>108</integer> +// CHECK-NEXT: <key>col</key><integer>20</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>108</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>108</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>108</integer> +// CHECK-NEXT: <key>col</key><integer>22</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>Calling 'getZero'</string> +// CHECK-NEXT: <key>message</key> +// CHECK-NEXT: <string>Calling 'getZero'</string> +// 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>61</integer> +// CHECK-NEXT: <key>col</key><integer>1</integer> +// CHECK-NEXT: <key>file</key><integer>0</integer> +// CHECK-NEXT: </dict> +// CHECK-NEXT: <key>depth</key><integer>1</integer> +// CHECK-NEXT: <key>extended_message</key> +// CHECK-NEXT: <string>Entered call from 'testUseOfNullPointer'</string> +// CHECK-NEXT: <key>message</key> +// CHECK-NEXT: <string>Entered call from 'testUseOfNullPointer'</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>61</integer> +// CHECK-NEXT: <key>col</key><integer>1</integer> +// CHECK-NEXT: <key>file</key><integer>0</integer> +// CHECK-NEXT: </dict> +// CHECK-NEXT: <dict> +// CHECK-NEXT: <key>line</key><integer>61</integer> +// CHECK-NEXT: <key>col</key><integer>3</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>62</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>62</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: </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>62</integer> +// CHECK-NEXT: <key>col</key><integer>3</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>62</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>62</integer> +// CHECK-NEXT: <key>col</key><integer>8</integer> +// CHECK-NEXT: <key>file</key><integer>0</integer> +// CHECK-NEXT: </dict> +// CHECK-NEXT: </array> +// CHECK-NEXT: </array> +// CHECK-NEXT: <key>depth</key><integer>1</integer> +// CHECK-NEXT: <key>extended_message</key> +// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</string> +// CHECK-NEXT: <key>message</key> +// CHECK-NEXT: <string>Variable 'p' initialized to a null pointer value</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>62</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>62</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>65</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>65</integer> +// CHECK-NEXT: <key>col</key><integer>8</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>65</integer> +// CHECK-NEXT: <key>col</key><integer>3</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>65</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>65</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: &l |