[compiler-rt] r271017 - [profile] Add a test to ensure runtime allocator is not invoked

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Fri May 27 09:49:30 PDT 2016


Author: davidxl
Date: Fri May 27 11:49:29 2016
New Revision: 271017

URL: http://llvm.org/viewvc/llvm-project?rev=271017&view=rev
Log:
[profile] Add a test to ensure runtime allocator is not invoked

Added:
    compiler-rt/trunk/test/profile/Inputs/instrprof-alloc.c
    compiler-rt/trunk/test/profile/Linux/instrprof-alloc.test

Added: compiler-rt/trunk/test/profile/Inputs/instrprof-alloc.c
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Inputs/instrprof-alloc.c?rev=271017&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/Inputs/instrprof-alloc.c (added)
+++ compiler-rt/trunk/test/profile/Inputs/instrprof-alloc.c Fri May 27 11:49:29 2016
@@ -0,0 +1,41 @@
+/* This test case tests that when static allocation for value
+ * profiler is on, no malloc/calloc calls will be invoked by
+ * profile runtime library. */
+#include <stdlib.h>
+__attribute__((noinline)) void foo() {}
+__attribute__((noinline)) void foo2() {}
+void (*FP)();
+int MainEntered = 0;
+int CallocCalled = 0;
+int MallocCalled = 0;
+
+extern void *__real_calloc(size_t s, size_t n);
+extern void *__real_malloc(size_t s);
+
+void *__wrap_calloc(size_t s, size_t n) {
+  if (MainEntered)
+    CallocCalled = 1;
+  return __real_calloc(s, n);
+}
+void *__wrap_malloc(size_t s) {
+  if (MainEntered)
+    MallocCalled = 1;
+  return __real_malloc(s);
+}
+
+void getFP(int i) {
+  if (i % 2)
+    FP = foo;
+  else
+    FP = foo2;
+}
+
+int main() {
+  int i;
+  MainEntered = 1;
+  for (i = 0; i < 100; i++) {
+    getFP(i);
+    FP();
+  }
+  return CallocCalled + MallocCalled;
+}

Added: compiler-rt/trunk/test/profile/Linux/instrprof-alloc.test
URL: http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/test/profile/Linux/instrprof-alloc.test?rev=271017&view=auto
==============================================================================
--- compiler-rt/trunk/test/profile/Linux/instrprof-alloc.test (added)
+++ compiler-rt/trunk/test/profile/Linux/instrprof-alloc.test Fri May 27 11:49:29 2016
@@ -0,0 +1,6 @@
+// RUN: %clang_profgen -Xclang -fprofile-instrument=llvm  -fuse-ld=gold -Wl,-wrap,malloc -Wl,-wrap,calloc -o %t -O3 %S/../Inputs/instrprof-alloc.c
+// RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t
+
+// RUN: %clang_profgen  -Xclang -fprofile-instrument=llvm -mllvm -vp-static-alloc=false -fuse-ld=gold -Wl,-wrap,malloc -Wl,-wrap,calloc -o %t.dyn -O3 %S/../Inputs/instrprof-alloc.c
+// RUN: env LLVM_PROFILE_FILE=%t.profraw not %run %t.dyn
+




More information about the llvm-commits mailing list