1*e3377fbcSAnton Yartsev // RUN: %clang_cc1 -analyze -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator -analyzer-store region -std=c++11 -verify %s 2*e3377fbcSAnton Yartsev // expected-no-diagnostics 3*e3377fbcSAnton Yartsev 4*e3377fbcSAnton Yartsev typedef __typeof(sizeof(int)) size_t; 5*e3377fbcSAnton Yartsev void *malloc(size_t); 6*e3377fbcSAnton Yartsev void free(void *); 7*e3377fbcSAnton Yartsev 8*e3377fbcSAnton Yartsev //-------------------------------------------------------------------- 9*e3377fbcSAnton Yartsev // Check that unix.Malloc + unix.MismatchedDeallocator does not enable 10*e3377fbcSAnton Yartsev // warnings produced by the alpha.cplusplus.NewDelete checker. 11*e3377fbcSAnton Yartsev //-------------------------------------------------------------------- 12*e3377fbcSAnton Yartsev void testNewDeleteNoWarn() { 13*e3377fbcSAnton Yartsev int i; 14*e3377fbcSAnton Yartsev delete &i; // no-warning 15*e3377fbcSAnton Yartsev 16*e3377fbcSAnton Yartsev int *p1 = new int; 17*e3377fbcSAnton Yartsev delete ++p1; // no-warning 18*e3377fbcSAnton Yartsev 19*e3377fbcSAnton Yartsev int *p2 = new int; 20*e3377fbcSAnton Yartsev delete p2; 21*e3377fbcSAnton Yartsev delete p2; // no-warning 22*e3377fbcSAnton Yartsev 23*e3377fbcSAnton Yartsev int *p3 = new int; // no-warning 24*e3377fbcSAnton Yartsev 25*e3377fbcSAnton Yartsev int *p4 = new int; 26*e3377fbcSAnton Yartsev delete p4; 27*e3377fbcSAnton Yartsev int j = *p4; // no-warning 28*e3377fbcSAnton Yartsev } 29