xref: /llvm-project/compiler-rt/test/memprof/TestCases/realloc.cpp (revision 3d4bba302d2460b9ac6463ef920c301f1f40fb41)
1*3d4bba30STeresa Johnson // RUN: %clangxx_memprof -O0 %s -o %t
2*3d4bba30STeresa Johnson // Default is true (free on realloc to 0 size)
3*3d4bba30STeresa Johnson // RUN: %run %t 2>&1 | FileCheck %s
4*3d4bba30STeresa Johnson // RUN: %env_memprof_opts=allocator_frees_and_returns_null_on_realloc_zero=true %run %t 2>&1 | FileCheck %s
5*3d4bba30STeresa Johnson // RUN: %env_memprof_opts=allocator_frees_and_returns_null_on_realloc_zero=false %run %t 2>&1 | FileCheck %s --check-prefix=NO-FREE
6*3d4bba30STeresa Johnson 
7*3d4bba30STeresa Johnson #include <stdio.h>
8*3d4bba30STeresa Johnson #include <stdlib.h>
9*3d4bba30STeresa Johnson 
main()10*3d4bba30STeresa Johnson int main() {
11*3d4bba30STeresa Johnson   void *p = malloc(42);
12*3d4bba30STeresa Johnson   p = realloc(p, 0);
13*3d4bba30STeresa Johnson   if (p) {
14*3d4bba30STeresa Johnson     // NO-FREE: Allocated something on realloc(p, 0)
15*3d4bba30STeresa Johnson     fprintf(stderr, "Allocated something on realloc(p, 0)\n");
16*3d4bba30STeresa Johnson   } else {
17*3d4bba30STeresa Johnson     // CHECK: realloc(p, 0) returned nullptr
18*3d4bba30STeresa Johnson     fprintf(stderr, "realloc(p, 0) returned nullptr\n");
19*3d4bba30STeresa Johnson   }
20*3d4bba30STeresa Johnson   free(p);
21*3d4bba30STeresa Johnson }
22