[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