1c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// Printing memory profiling only works in the configuration where we can 2c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// detect leaks. 3c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// REQUIRES: leak-detection 4c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// 5c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// RUN: %clangxx_asan %s -o %t 6c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// RUN: %run %t 2>&1 | FileCheck %s 7c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar#include <sanitizer/common_interface_defs.h> 8c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar 9c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar#include <stdio.h> 10c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar 11c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainarchar *sink[1000]; 12c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar 13c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainarint main() { 14c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar int idx = 0; 15c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar for (int i = 0; i < 17; i++) 16c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar sink[idx++] = new char[131000]; 17c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar for (int i = 0; i < 28; i++) 18c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar sink[idx++] = new char[24000]; 19c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar 20c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar __sanitizer_print_memory_profile(100); 21c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar __sanitizer_print_memory_profile(50); 22c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar} 23c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar 24c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// CHECK: Live Heap Allocations: {{.*}}; showing top 100% 25c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// CHECK: 2227000 byte(s) ({{.*}}%) in 17 allocation(s) 26c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// CHECK: 672000 byte(s) ({{.*}}%) in 28 allocation(s) 27c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// CHECK: Live Heap Allocations: {{.*}}; showing top 50% 28c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// CHECK: 2227000 byte(s) ({{.*}}%) in 17 allocation(s) 29c58a43648cd6121c51a2e795a28e2ef90d7813e6Pirama Arumuga Nainar// CHECK-NOT: 1008 byte 30