34 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s2// expected-no-diagnostics3 4// Intra-procedural C++ tests.5 6// Test relaxing function call arguments invalidation to be aware of const7// arguments.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-warning23}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-warning33}34