[analyzer] Refactoring: Drop the 'GR' prefix.
[clang.git] / test / Analysis / misc-ps-basic-store.m
blob4f8e4f656f08a0d36c42ede66e21b477d1a74615
1 // RUN: %clang_cc1 -analyze -analyzer-experimental-internal-checks -analyzer-check-objc-mem -analyzer-store=basic -verify -fblocks %s
3 //---------------------------------------------------------------------------
4 // Test case 'checkaccess_union' differs for region store and basic store.
5 // The basic store doesn't reason about compound literals, so the code
6 // below won't fire an "uninitialized value" warning.
7 //---------------------------------------------------------------------------
9 // PR 2948 (testcase; crash on VisitLValue for union types)
10 // http://llvm.org/bugs/show_bug.cgi?id=2948
12 void checkaccess_union() {
13   int ret = 0, status;
14   if (((((__extension__ (((union {  // no-warning
15     __typeof (status) __in; int __i;}
16     )
17     {
18       .__in = (status)}
19       ).__i))) & 0xff00) >> 8) == 1)
20         ret = 1;
23 // BasicStore handles this case incorrectly because it doesn't reason about
24 // the value pointed to by 'x' and thus creates different symbolic values
25 // at the declarations of 'a' and 'b' respectively.  See the companion test
26 // in 'misc-ps-region-store.m'.
27 void test_trivial_symbolic_comparison_pointer_parameter(int *x) {
28   int a = *x;
29   int b = *x;
30   if (a != b) {
31     int *p = 0;
32     *p = 0xDEADBEEF;     // expected-warning{{null}}
33   }