misc-ps-region-store.cpp revision 077a40df258beb46cb746af61da115e9718a6aff
1d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenek// RUN: %clang_cc1 -triple i386-apple-darwin9 -analyze -analyzer-experimental-internal-checks -checker-cfref -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s 2d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenek// RUN: %clang_cc1 -triple x86_64-apple-darwin9 -analyze -analyzer-experimental-internal-checks -checker-cfref -analyzer-store=region -verify -fblocks -analyzer-opt-analyze-nested-blocks %s 3d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenek 453287518f69b8f06f82a6cdbd13e4e3a13b58186Ted Kremenek// Test basic handling of references. 5d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenekchar &test1_aux(); 6d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenekchar *test1() { 7d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenek return &test1_aux(); 8d87682ed3c3e5d748d13a5c4f1cbb267aa756b31Ted Kremenek} 953287518f69b8f06f82a6cdbd13e4e3a13b58186Ted Kremenek 10910e4080986045cc2036f8d1f55398acc7fbb257Zhongxing Xu// Test test1_aux() evaluates to char &. 1153287518f69b8f06f82a6cdbd13e4e3a13b58186Ted Kremenekchar test1_as_rvalue() { 1253287518f69b8f06f82a6cdbd13e4e3a13b58186Ted Kremenek return test1_aux(); 1353287518f69b8f06f82a6cdbd13e4e3a13b58186Ted Kremenek} 1453287518f69b8f06f82a6cdbd13e4e3a13b58186Ted Kremenek 15949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek// Test passing a value as a reference. The 'const' in test2_aux() adds 16949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek// an ImplicitCastExpr, which is evaluated as an lvalue. 17949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenekint test2_aux(const int &n); 18949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenekint test2(int n) { 19949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek return test2_aux(n); 20949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek} 21949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek 22949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenekint test2_b_aux(const short &n); 23949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenekint test2_b(int n) { 24949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek return test2_b_aux(n); 25949bdb43bf370b23a79a37b017e0a0566c0d66e0Ted Kremenek} 26077a40df258beb46cb746af61da115e9718a6affTed Kremenek 27077a40df258beb46cb746af61da115e9718a6affTed Kremenek// Test getting the lvalue of a derived and converting it to a base. This 28077a40df258beb46cb746af61da115e9718a6affTed Kremenek// previously crashed. 29077a40df258beb46cb746af61da115e9718a6affTed Kremenekclass Test3_Base {}; 30077a40df258beb46cb746af61da115e9718a6affTed Kremenekclass Test3_Derived : public Test3_Base {}; 31077a40df258beb46cb746af61da115e9718a6affTed Kremenek 32077a40df258beb46cb746af61da115e9718a6affTed Kremenekint test3_aux(Test3_Base &x); 33077a40df258beb46cb746af61da115e9718a6affTed Kremenekint test3(Test3_Derived x) { 34077a40df258beb46cb746af61da115e9718a6affTed Kremenek return test3_aux(x); 35077a40df258beb46cb746af61da115e9718a6affTed Kremenek} 36077a40df258beb46cb746af61da115e9718a6affTed Kremenek 37