reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // RUN: %clang_analyze_cc1 -analyzer-checker=core -analyzer-store region -verify %s // expected-no-diagnostics // Intra-procedural C++ tests. // Test relaxing function call arguments invalidation to be aware of const // arguments. radar://10595327 struct InvalidateArgs { void ttt(const int &nptr); virtual void vttt(const int *nptr); }; struct ChildOfInvalidateArgs: public InvalidateArgs { virtual void vttt(const int *nptr); }; void declarationFun(int x) { InvalidateArgs t; x = 3; int y = x + 1; int *p = 0; t.ttt(y); if (x == y) y = *p; // no-warning } void virtualFun(int x) { ChildOfInvalidateArgs t; InvalidateArgs *pt = &t; x = 3; int y = x + 1; int *p = 0; pt->vttt(&y); if (x == y) y = *p; // no-warning } |