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