brintos

brintos / llvm-project-archived public Read only

0
0
Text · 723 B · 11c8d83 Raw
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