1*8fd74ebfSKristof Umann // RUN: %clang_analyze_cc1 -std=c++11 -verify %s \ 2*8fd74ebfSKristof Umann // RUN: -analyzer-checker=core \ 3*8fd74ebfSKristof Umann // RUN: -analyzer-checker=cplusplus.NewDelete \ 4*8fd74ebfSKristof Umann // RUN: -analyzer-checker=unix.MismatchedDeallocator 5*8fd74ebfSKristof Umann // 6*8fd74ebfSKristof Umann // RUN: %clang_analyze_cc1 -std=c++11 -verify %s \ 7*8fd74ebfSKristof Umann // RUN: -analyzer-checker=core \ 8*8fd74ebfSKristof Umann // RUN: -analyzer-checker=cplusplus.NewDelete \ 9*8fd74ebfSKristof Umann // RUN: -analyzer-checker=cplusplus.NewDeleteLeaks \ 10*8fd74ebfSKristof Umann // RUN: -analyzer-checker=unix.MismatchedDeallocator 11*8fd74ebfSKristof Umann 12e3377fbcSAnton Yartsev // expected-no-diagnostics 13e3377fbcSAnton Yartsev 14e3377fbcSAnton Yartsev typedef __typeof(sizeof(int)) size_t; 15e3377fbcSAnton Yartsev void *malloc(size_t); 16e3377fbcSAnton Yartsev void free(void *); 17e3377fbcSAnton Yartsev 18e3377fbcSAnton Yartsev //------------------------------------------------------------------ 19e3377fbcSAnton Yartsev // Check that alpha.cplusplus.NewDelete + unix.MismatchedDeallocator 20e3377fbcSAnton Yartsev // does not enable warnings produced by the unix.Malloc checker. 21e3377fbcSAnton Yartsev //------------------------------------------------------------------ testMallocFreeNoWarn()22e3377fbcSAnton Yartsevvoid testMallocFreeNoWarn() { 23e3377fbcSAnton Yartsev int i; 24e3377fbcSAnton Yartsev free(&i); // no warn 25e3377fbcSAnton Yartsev 26e3377fbcSAnton Yartsev int *p1 = (int *)malloc(sizeof(int)); 27e3377fbcSAnton Yartsev free(++p1); // no warn 28e3377fbcSAnton Yartsev 29e3377fbcSAnton Yartsev int *p2 = (int *)malloc(sizeof(int)); 30e3377fbcSAnton Yartsev free(p2); 31e3377fbcSAnton Yartsev free(p2); // no warn 32e3377fbcSAnton Yartsev 33e3377fbcSAnton Yartsev int *p3 = (int *)malloc(sizeof(int)); // no warn 34e3377fbcSAnton Yartsev 35e3377fbcSAnton Yartsev int *p4 = (int *)malloc(sizeof(int)); 36e3377fbcSAnton Yartsev free(p4); 37e3377fbcSAnton Yartsev int j = *p4; // no warn 38e3377fbcSAnton Yartsev } 39