blob: a1709428402c4672aa196a6dea4ae6fb8d6d6cbc [file] [log] [blame]
Anna Zaks2cbe7912011-12-20 22:35:30 +00001// RUN: %clang_cc1 -analyze -analyzer-checker=core -analyzer-store region -verify %s
Andy Gibbs8e8fb3b2012-10-19 12:44:48 +00002// expected-no-diagnostics
Anna Zaks2cbe7912011-12-20 22:35:30 +00003
4// Intra-procedural C++ tests.
5
6// Test relaxing function call arguments invalidation to be aware of const
7// arguments. radar://10595327
8struct InvalidateArgs {
9 void ttt(const int &nptr);
10 virtual void vttt(const int *nptr);
11};
12struct ChildOfInvalidateArgs: public InvalidateArgs {
13 virtual void vttt(const int *nptr);
14};
15void declarationFun(int x) {
16 InvalidateArgs t;
17 x = 3;
18 int y = x + 1;
19 int *p = 0;
20 t.ttt(y);
21 if (x == y)
22 y = *p; // no-warning
23}
24void virtualFun(int x) {
25 ChildOfInvalidateArgs t;
26 InvalidateArgs *pt = &t;
27 x = 3;
28 int y = x + 1;
29 int *p = 0;
30 pt->vttt(&y);
31 if (x == y)
32 y = *p; // no-warning
33}