// RUN: %clang_analyze_cc1 -analyzer-checker=core -verify %s
// expected-no-diagnostics
// Intra-procedural C++ tests.
// Test relaxing function call arguments invalidation to be aware of const
// arguments. radar://10595327
structInvalidateArgs{voidttt(constint&nptr);virtualvoidvttt(constint*nptr);};structChildOfInvalidateArgs:publicInvalidateArgs{virtualvoidvttt(constint*nptr);};voiddeclarationFun(intx){
InvalidateArgs t;
x =3;int y = x +1;int*p =0;
t.ttt(y);if(x == y)
y =*p;// no-warning
}voidvirtualFun(intx){
ChildOfInvalidateArgs t;
InvalidateArgs *pt =&t;
x =3;int y = x +1;int*p =0;
pt->vttt(&y);if(x == y)
y =*p;// no-warning
}