62 lines · cpp
1// Test end-to-end optimization pipeline with PGHO, that it does not interfere2// with other allocation instrumentation features.3//4// RUN: split-file %s %t5// RUN: llvm-profdata merge %t/memprof.yaml -o %t/use.profdata6// RUN: %clang_cc1 -O2 -debug-info-kind=limited -fmemory-profile-use=%t/use.profdata -mllvm -optimize-hot-cold-new \7// RUN: %t/src.cpp -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,DEFAULT8// RUN: %clang_cc1 -O2 -fsanitize=alloc-token -debug-info-kind=limited -fmemory-profile-use=%t/use.profdata -mllvm -optimize-hot-cold-new \9// RUN: %t/src.cpp -triple x86_64-linux-gnu -emit-llvm -o - | FileCheck %s --check-prefixes=CHECK,ALLOCTOKEN10 11//--- memprof.yaml12---13HeapProfileRecords:14 - GUID: 0x7f8d88fcc70a347b15 AllocSites:16 - Callstack:17 - { Function: 0x7f8d88fcc70a347b, LineOffset: 1, Column: 10, IsInlineFrame: false }18 - { Function: 0xdb956436e78dd5fa, LineOffset: 1, Column: 13, IsInlineFrame: false }19 MemInfoBlock:20 AllocCount: 121 TotalAccessCount: 022 MinAccessCount: 023 MaxAccessCount: 024 TotalSize: 1025 MinSize: 1026 MaxSize: 1027 AllocTimestamp: 10028 DeallocTimestamp: 10029 TotalLifetime: 10000030 MinLifetime: 10000031 MaxLifetime: 10000032 AllocCpuId: 033 DeallocCpuId: 034 NumMigratedCpu: 035 NumLifetimeOverlaps: 036 NumSameAllocCpu: 037 NumSameDeallocCpu: 038 DataTypeId: 039 TotalAccessDensity: 040 MinAccessDensity: 041 MaxAccessDensity: 042 TotalLifetimeAccessDensity: 043 MinLifetimeAccessDensity: 044 MaxLifetimeAccessDensity: 045 AccessHistogramSize: 046 AccessHistogram: 047...48 49//--- src.cpp50// CHECK-LABEL: define{{.*}} ptr @_Z3foov()51// DEFAULT: call {{.*}} ptr @_Znam12__hot_cold_t(i64 10, i8 -128)52// ALLOCTOKEN: call {{.*}} ptr @__alloc_token__Znam12__hot_cold_t(i64 10, i8 -128, i64 1538840549748785101){{.*}} !alloc_token53char *foo() {54 return new char[10];55}56 57int main() {58 char *a = foo();59 delete[] a;60 return 0;61}62