1 // Check terse format profile with a single malloc call and set of loads and 2 // stores. Ensures we get the same profile regardless of whether the memory is 3 // deallocated before exit. 4 5 // RUN: %clangxx_memprof -O0 %s -o %t 6 // RUN: %env_memprof_opts=print_text=true:log_path=stderr:print_terse=1 %run %t 2>&1 | FileCheck %s 7 8 // RUN: %clangxx_memprof -DFREE -O0 %s -o %t 9 // RUN: %env_memprof_opts=print_text=true:log_path=stderr:print_terse=1 %run %t 2>&1 | FileCheck %s 10 11 // CHECK: MIB:[[STACKID:[0-9]+]]/1/40.00/40/40/20.00/20/20/[[AVELIFETIME:[0-9]+]].00/[[AVELIFETIME]]/[[AVELIFETIME]]/{{[01]}}/0/0/0 12 // CHECK: Stack for id [[STACKID]]: 13 // CHECK-NEXT: #0 {{.*}} in operator new 14 // CHECK-NEXT: #1 {{.*}} in main {{.*}}:[[@LINE+6]] 15 16 #include <stdio.h> 17 #include <stdlib.h> 18 19 int main() { 20 int *p = new int[10]; 21 for (int i = 0; i < 10; i++) 22 p[i] = i; 23 int j = 0; 24 for (int i = 0; i < 10; i++) 25 j += p[i]; 26 #ifdef FREE 27 delete[] p; 28 #endif 29 30 return 0; 31 } 32