1REQUIRES: x86_64-linux 2 3To update the inputs used below run Inputs/update_memprof_inputs.sh /path/to/updated/clang 4RUN: llvm-profdata show --memory %p/Inputs/basic-histogram.memprofraw --profiled-binary %p/Inputs/basic-histogram.memprofexe -o - | FileCheck %s 5 6We expect 5 MIBs, each with different AccessHistogramValues. 7 8CHECK: MemprofProfile: 9CHECK-NEXT: Summary: 10CHECK-NEXT: Version: 4 11CHECK-NEXT: NumSegments: {{[0-9]+}} 12CHECK-NEXT: NumMibInfo: 5 13CHECK-NEXT: NumAllocFunctions: 3 14CHECK-NEXT: NumStackOffsets: 5 15CHECK-NEXT: Segments: 16CHECK-NEXT: - 17CHECK-NEXT: BuildId: {{[[:xdigit:]]+}} 18CHECK-NEXT: Start: 0x{{[[:xdigit:]]+}} 19CHECK-NEXT: End: 0x{{[[:xdigit:]]+}} 20CHECK-NEXT: Offset: 0x{{[[:xdigit:]]+}} 21CHECK-NEXT: - 22 23CHECK: Records: 24CHECK-NEXT: - 25CHECK-NEXT: FunctionGUID: {{[0-9]+}} 26CHECK-NEXT: AllocSites: 27CHECK-NEXT: - 28CHECK-NEXT: Callstack: 29CHECK-NEXT: - 30CHECK-NEXT: Function: {{[0-9]+}} 31CHECK-NEXT: SymbolName: main 32CHECK-NEXT: LineOffset: 2 33CHECK-NEXT: Column: 10 34CHECK-NEXT: Inline: 0 35CHECK-NEXT: MemInfoBlock: 36CHECK-NEXT: AllocCount: 1 37CHECK-NEXT: TotalAccessCount: 8 38CHECK-NEXT: MinAccessCount: 8 39CHECK-NEXT: MaxAccessCount: 8 40CHECK-NEXT: TotalSize: 64 41CHECK-NEXT: MinSize: 64 42CHECK-NEXT: MaxSize: 64 43CHECK-NEXT: AllocTimestamp: {{[0-9]+}} 44CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} 45CHECK-NEXT: TotalLifetime: 0 46CHECK-NEXT: MinLifetime: 0 47CHECK-NEXT: MaxLifetime: 0 48CHECK-NEXT: AllocCpuId: {{[0-9]+}} 49CHECK-NEXT: DeallocCpuId: {{[0-9]+}} 50CHECK-NEXT: NumMigratedCpu: 0 51CHECK-NEXT: NumLifetimeOverlaps: 0 52CHECK-NEXT: NumSameAllocCpu: 0 53CHECK-NEXT: NumSameDeallocCpu: 0 54CHECK-NEXT: DataTypeId: {{[0-9]+}} 55CHECK-NEXT: TotalAccessDensity: 12 56CHECK-NEXT: MinAccessDensity: 12 57CHECK-NEXT: MaxAccessDensity: 12 58CHECK-NEXT: TotalLifetimeAccessDensity: 12000 59CHECK-NEXT: MinLifetimeAccessDensity: 12000 60CHECK-NEXT: MaxLifetimeAccessDensity: 12000 61CHECK-NEXT: AccessHistogramSize: 8 62CHECK-NEXT: AccessHistogram: {{[0-9]+}} 63CHECK-NEXT: AccessHistogramValues: 1 1 1 1 1 1 1 1 64CHECK-NEXT: - 65CHECK-NEXT: Callstack: 66CHECK-NEXT: - 67CHECK-NEXT: Function: {{[0-9]+}} 68CHECK-NEXT: SymbolName: main 69CHECK-NEXT: LineOffset: 14 70CHECK-NEXT: Column: 10 71CHECK-NEXT: Inline: 0 72CHECK-NEXT: MemInfoBlock: 73CHECK-NEXT: AllocCount: 1 74CHECK-NEXT: TotalAccessCount: 36 75CHECK-NEXT: MinAccessCount: 36 76CHECK-NEXT: MaxAccessCount: 36 77CHECK-NEXT: TotalSize: 64 78CHECK-NEXT: MinSize: 64 79CHECK-NEXT: MaxSize: 64 80CHECK-NEXT: AllocTimestamp: {{[0-9]+}} 81CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} 82CHECK-NEXT: TotalLifetime: 0 83CHECK-NEXT: MinLifetime: 0 84CHECK-NEXT: MaxLifetime: 0 85CHECK-NEXT: AllocCpuId: {{[0-9]+}} 86CHECK-NEXT: DeallocCpuId: {{[0-9]+}} 87CHECK-NEXT: NumMigratedCpu: 0 88CHECK-NEXT: NumLifetimeOverlaps: 0 89CHECK-NEXT: NumSameAllocCpu: 0 90CHECK-NEXT: NumSameDeallocCpu: 0 91CHECK-NEXT: DataTypeId: {{[0-9]+}} 92CHECK-NEXT: TotalAccessDensity: 56 93CHECK-NEXT: MinAccessDensity: 56 94CHECK-NEXT: MaxAccessDensity: 56 95CHECK-NEXT: TotalLifetimeAccessDensity: 56000 96CHECK-NEXT: MinLifetimeAccessDensity: 56000 97CHECK-NEXT: MaxLifetimeAccessDensity: 56000 98CHECK-NEXT: AccessHistogramSize: 8 99CHECK-NEXT: AccessHistogram: {{[0-9]+}} 100CHECK-NEXT: AccessHistogramValues: 8 7 6 5 4 3 2 1 101CHECK-NEXT: - 102CHECK-NEXT: Callstack: 103CHECK-NEXT: - 104CHECK-NEXT: Function: {{[0-9]+}} 105CHECK-NEXT: SymbolName: main 106CHECK-NEXT: LineOffset: 54 107CHECK-NEXT: Column: 10 108CHECK-NEXT: Inline: 0 109CHECK-NEXT: MemInfoBlock: 110CHECK-NEXT: AllocCount: 1 111CHECK-NEXT: TotalAccessCount: 1 112CHECK-NEXT: MinAccessCount: 1 113CHECK-NEXT: MaxAccessCount: 1 114CHECK-NEXT: TotalSize: 64 115CHECK-NEXT: MinSize: 64 116CHECK-NEXT: MaxSize: 64 117CHECK-NEXT: AllocTimestamp: {{[0-9]+}} 118CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} 119CHECK-NEXT: TotalLifetime: 0 120CHECK-NEXT: MinLifetime: 0 121CHECK-NEXT: MaxLifetime: 0 122CHECK-NEXT: AllocCpuId: {{[0-9]+}} 123CHECK-NEXT: DeallocCpuId: {{[0-9]+}} 124CHECK-NEXT: NumMigratedCpu: 0 125CHECK-NEXT: NumLifetimeOverlaps: 0 126CHECK-NEXT: NumSameAllocCpu: 0 127CHECK-NEXT: NumSameDeallocCpu: 0 128CHECK-NEXT: DataTypeId: {{[0-9]+}} 129CHECK-NEXT: TotalAccessDensity: 1 130CHECK-NEXT: MinAccessDensity: 1 131CHECK-NEXT: MaxAccessDensity: 1 132CHECK-NEXT: TotalLifetimeAccessDensity: 1000 133CHECK-NEXT: MinLifetimeAccessDensity: 1000 134CHECK-NEXT: MaxLifetimeAccessDensity: 1000 135CHECK-NEXT: AccessHistogramSize: 8 136CHECK-NEXT: AccessHistogram: {{[0-9]+}} 137CHECK-NEXT: AccessHistogramValues: 1 0 0 0 0 0 0 0 138CHECK-NEXT: CallSites: 139CHECK-NEXT: - 140CHECK-NEXT: - 141CHECK-NEXT: Function: {{[0-9]+}} 142CHECK-NEXT: SymbolName: main 143CHECK-NEXT: LineOffset: 59 144CHECK-NEXT: Column: 5 145CHECK-NEXT: Inline: 0 146CHECK-NEXT: - 147CHECK-NEXT: - 148CHECK-NEXT: Function: {{[0-9]+}} 149CHECK-NEXT: SymbolName: main 150CHECK-NEXT: LineOffset: 64 151CHECK-NEXT: Column: 5 152CHECK-NEXT: Inline: 0 153CHECK-NEXT: - 154CHECK-NEXT: FunctionGUID: {{[0-9]+}} 155CHECK-NEXT: AllocSites: 156CHECK-NEXT: - 157CHECK-NEXT: Callstack: 158CHECK-NEXT: - 159CHECK-NEXT: Function: {{[0-9]+}} 160CHECK-NEXT: SymbolName: _Z3foov 161CHECK-NEXT: LineOffset: 2 162CHECK-NEXT: Column: 10 163CHECK-NEXT: Inline: 0 164CHECK-NEXT: - 165CHECK-NEXT: Function: {{[0-9]+}} 166CHECK-NEXT: SymbolName: main 167CHECK-NEXT: LineOffset: 59 168CHECK-NEXT: Column: 5 169CHECK-NEXT: Inline: 0 170CHECK-NEXT: MemInfoBlock: 171CHECK-NEXT: AllocCount: 21 172CHECK-NEXT: TotalAccessCount: 168 173CHECK-NEXT: MinAccessCount: 8 174CHECK-NEXT: MaxAccessCount: 8 175CHECK-NEXT: TotalSize: 1344 176CHECK-NEXT: MinSize: 64 177CHECK-NEXT: MaxSize: 64 178CHECK-NEXT: AllocTimestamp: {{[0-9]+}} 179CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} 180CHECK-NEXT: TotalLifetime: 0 181CHECK-NEXT: MinLifetime: 0 182CHECK-NEXT: MaxLifetime: 0 183CHECK-NEXT: AllocCpuId: {{[0-9]+}} 184CHECK-NEXT: DeallocCpuId: {{[0-9]+}} 185CHECK-NEXT: NumMigratedCpu: 0 186CHECK-NEXT: NumLifetimeOverlaps: 0 187CHECK-NEXT: NumSameAllocCpu: 20 188CHECK-NEXT: NumSameDeallocCpu: 20 189CHECK-NEXT: DataTypeId: {{[0-9]+}} 190CHECK-NEXT: TotalAccessDensity: 252 191CHECK-NEXT: MinAccessDensity: 12 192CHECK-NEXT: MaxAccessDensity: 12 193CHECK-NEXT: TotalLifetimeAccessDensity: 252000 194CHECK-NEXT: MinLifetimeAccessDensity: 12000 195CHECK-NEXT: MaxLifetimeAccessDensity: 12000 196CHECK-NEXT: AccessHistogramSize: 8 197CHECK-NEXT: AccessHistogram: {{[0-9]+}} 198CHECK-NEXT: AccessHistogramValues: 21 21 21 21 21 21 21 21 199CHECK-NEXT: - 200CHECK-NEXT: FunctionGUID: {{[0-9]+}} 201CHECK-NEXT: AllocSites: 202CHECK-NEXT: - 203CHECK-NEXT: Callstack: 204CHECK-NEXT: - 205CHECK-NEXT: Function: {{[0-9]+}} 206CHECK-NEXT: SymbolName: _Z3barv 207CHECK-NEXT: LineOffset: 2 208CHECK-NEXT: Column: 10 209CHECK-NEXT: Inline: 0 210CHECK-NEXT: - 211CHECK-NEXT: Function: {{[0-9]+}} 212CHECK-NEXT: SymbolName: main 213CHECK-NEXT: LineOffset: 64 214CHECK-NEXT: Column: 5 215CHECK-NEXT: Inline: 0 216CHECK-NEXT: MemInfoBlock: 217CHECK-NEXT: AllocCount: 21 218CHECK-NEXT: TotalAccessCount: 756 219CHECK-NEXT: MinAccessCount: 36 220CHECK-NEXT: MaxAccessCount: 36 221CHECK-NEXT: TotalSize: 1344 222CHECK-NEXT: MinSize: 64 223CHECK-NEXT: MaxSize: 64 224CHECK-NEXT: AllocTimestamp: {{[0-9]+}} 225CHECK-NEXT: DeallocTimestamp: {{[0-9]+}} 226CHECK-NEXT: TotalLifetime: 0 227CHECK-NEXT: MinLifetime: 0 228CHECK-NEXT: MaxLifetime: 0 229CHECK-NEXT: AllocCpuId: {{[0-9]+}} 230CHECK-NEXT: DeallocCpuId: {{[0-9]+}} 231CHECK-NEXT: NumMigratedCpu: 0 232CHECK-NEXT: NumLifetimeOverlaps: 0 233CHECK-NEXT: NumSameAllocCpu: 20 234CHECK-NEXT: NumSameDeallocCpu: 20 235CHECK-NEXT: DataTypeId: {{[0-9]+}} 236CHECK-NEXT: TotalAccessDensity: 1176 237CHECK-NEXT: MinAccessDensity: 56 238CHECK-NEXT: MaxAccessDensity: 56 239CHECK-NEXT: TotalLifetimeAccessDensity: 1176000 240CHECK-NEXT: MinLifetimeAccessDensity: 56000 241CHECK-NEXT: MaxLifetimeAccessDensity: 56000 242CHECK-NEXT: AccessHistogramSize: 8 243CHECK-NEXT: AccessHistogram: {{[0-9]+}} 244CHECK-NEXT: AccessHistogramValues: 168 147 126 105 84 63 42 21