[PATCH] D132515: [memprof] Correct max size and access count computations

Teresa Johnson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 23 16:54:34 PDT 2022


This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGd10c1b88f0a0: [memprof] Correct max size and access count computations (authored by tejohnson).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D132515/new/

https://reviews.llvm.org/D132515

Files:
  compiler-rt/include/profile/MemProfData.inc
  compiler-rt/test/memprof/TestCases/test_merge_mib.cpp
  llvm/include/llvm/ProfileData/MemProfData.inc


Index: llvm/include/llvm/ProfileData/MemProfData.inc
===================================================================
--- llvm/include/llvm/ProfileData/MemProfData.inc
+++ llvm/include/llvm/ProfileData/MemProfData.inc
@@ -137,11 +137,11 @@
 
   TotalAccessCount += newMIB.TotalAccessCount;
   MinAccessCount = newMIB.MinAccessCount < MinAccessCount ? newMIB.MinAccessCount : MinAccessCount;
-  MaxAccessCount = newMIB.MaxAccessCount < MaxAccessCount ? newMIB.MaxAccessCount : MaxAccessCount;
+  MaxAccessCount = newMIB.MaxAccessCount > MaxAccessCount ? newMIB.MaxAccessCount : MaxAccessCount;
 
   TotalSize += newMIB.TotalSize;
   MinSize = newMIB.MinSize < MinSize ? newMIB.MinSize : MinSize;
-  MaxSize = newMIB.MaxSize < MaxSize ? newMIB.MaxSize : MaxSize;
+  MaxSize = newMIB.MaxSize > MaxSize ? newMIB.MaxSize : MaxSize;
 
   TotalLifetime += newMIB.TotalLifetime;
   MinLifetime = newMIB.MinLifetime < MinLifetime ? newMIB.MinLifetime : MinLifetime;
Index: compiler-rt/test/memprof/TestCases/test_merge_mib.cpp
===================================================================
--- /dev/null
+++ compiler-rt/test/memprof/TestCases/test_merge_mib.cpp
@@ -0,0 +1,35 @@
+// Check that merging of MIB info (min/max size and access counts specifically)
+// is done correctly.
+
+// RUN: %clangxx_memprof -O0 %s -o %t
+// RUN: %env_memprof_opts=print_text=true:log_path=stderr %run %t 2>&1 | FileCheck %s
+
+// This is actually:
+//  Memory allocation stack id = STACKID
+//   alloc_count 2, size (ave/min/max) 60.00 / 40 / 80
+// but we need to look for them in the same CHECK to get the correct STACKID.
+// CHECK:  Memory allocation stack id = [[STACKID:[0-9]+]]{{[[:space:]].*}}alloc_count 2, size (ave/min/max) 60.00 / 40 / 80
+// CHECK-NEXT:  access_count (ave/min/max): 30.00 / 20 / 40
+// Unfortunately there is not a reliable way to check the ave/min/max lifetime.
+// CHECK-NEXT:  lifetime (ave/min/max):
+// CHECK-NEXT:  num migrated: {{[0-1]}}, num lifetime overlaps: 0, num same alloc cpu: 1, num same dealloc_cpu: 1
+// CHECK: Stack for id [[STACKID]]:
+// CHECK-NEXT: #0 {{.*}} in operator new
+// CHECK-NEXT: #1 {{.*}} in main {{.*}}:[[@LINE+7]]
+
+#include <stdio.h>
+#include <stdlib.h>
+
+int main() {
+  for (int j = 1; j < 3; j++) {
+    int *p = new int[10 * j];
+    for (int i = 0; i < 10 * j; i++)
+      p[i] = i;
+    int a = 0;
+    for (int i = 0; i < 10 * j; i++)
+      a += p[i];
+    delete[] p;
+  }
+
+  return 0;
+}
Index: compiler-rt/include/profile/MemProfData.inc
===================================================================
--- compiler-rt/include/profile/MemProfData.inc
+++ compiler-rt/include/profile/MemProfData.inc
@@ -137,11 +137,11 @@
 
   TotalAccessCount += newMIB.TotalAccessCount;
   MinAccessCount = newMIB.MinAccessCount < MinAccessCount ? newMIB.MinAccessCount : MinAccessCount;
-  MaxAccessCount = newMIB.MaxAccessCount < MaxAccessCount ? newMIB.MaxAccessCount : MaxAccessCount;
+  MaxAccessCount = newMIB.MaxAccessCount > MaxAccessCount ? newMIB.MaxAccessCount : MaxAccessCount;
 
   TotalSize += newMIB.TotalSize;
   MinSize = newMIB.MinSize < MinSize ? newMIB.MinSize : MinSize;
-  MaxSize = newMIB.MaxSize < MaxSize ? newMIB.MaxSize : MaxSize;
+  MaxSize = newMIB.MaxSize > MaxSize ? newMIB.MaxSize : MaxSize;
 
   TotalLifetime += newMIB.TotalLifetime;
   MinLifetime = newMIB.MinLifetime < MinLifetime ? newMIB.MinLifetime : MinLifetime;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D132515.455016.patch
Type: text/x-patch
Size: 3411 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220823/071e8dbb/attachment.bin>


More information about the llvm-commits mailing list