1648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev// RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator -analyzer-store region -std=c++11 -verify %s
2648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev// expected-no-diagnostics
3648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev
4648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsevtypedef __typeof(sizeof(int)) size_t;
5648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsevvoid *malloc(size_t);
6648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsevvoid free(void *);
7648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev
8648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev//--------------------------------------------------------------------
9648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev// Check that unix.Malloc + unix.MismatchedDeallocator does not enable
10648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev// warnings produced by the alpha.cplusplus.NewDelete checker.
11648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev//--------------------------------------------------------------------
12648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsevvoid testNewDeleteNoWarn() {
13648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  int i;
14648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  delete &i; // no-warning
15648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev
16648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  int *p1 = new int;
17648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  delete ++p1; // no-warning
18648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev
19648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  int *p2 = new int;
20648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  delete p2;
21648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  delete p2; // no-warning
22648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev
23648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  int *p3 = new int; // no-warning
24648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev
25648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  int *p4 = new int;
26648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  delete p4;
27648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev  int j = *p4; // no-warning
28648cb71625a2ab3164b2cacac9e9cb3d22b03bd7Anton Yartsev}
29