40 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,unix.Malloc,unix.MismatchedDeallocator -std=c++11 -verify %s2// expected-no-diagnostics3 4typedef __typeof(sizeof(int)) size_t;5void *malloc(size_t);6void free(void *);7 8//--------------------------------------------------------------------9// Check that unix.Malloc + unix.MismatchedDeallocator does not enable10// warnings produced by the alpha.cplusplus.NewDelete checker.11//--------------------------------------------------------------------12void testNewDeleteNoWarn() {13 int i;14 delete &i; // no-warning15 16 int *p1 = new int;17 delete ++p1; // no-warning18 19 int *p2 = new int;20 delete p2;21 delete p2; // no-warning22 23 int *p3 = new int; // no-warning24 25 int *p4 = new int;26 delete p4;27 int j = *p4; // no-warning28}29 30void testUseZeroAllocNoWarn() {31 int *p1 = (int *)operator new(0);32 *p1 = 1; // no-warning33 34 int *p2 = (int *)operator new[](0);35 p2[0] = 1; // no-warning36 37 int *p3 = new int[0];38 p3[0] = 1; // no-warning39}40