From 5724c8ba29baef986a4a9ee77df98f638ee9e641 Mon Sep 17 00:00:00 2001 From: Fangrui Song Date: Wed, 22 Jul 2020 13:10:59 -0700 Subject: [PATCH] Temporarily revert D83903 "[PGO] Enable the extended value profile buckets for mem op sizes." `__llvm_profile_instrument_memop` transitively calls calloc, thus calloc should not be instrumented. I saw a `calloc -> __llvm_profile_instrument_memop -> calloc -> __llvm_profile_instrument_memop -> ...` infinite loop leading to stack overflow when the malloc implementation (e.g. tcmalloc) is built and instrumented along with the application. We should figure out the library calls which may be instrumented and disable their instrumentation before rolling out this change. Reviewed By: yamauchi Differential Revision: https://reviews.llvm.org/D84358 --- llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp index c2e4e932e77b..0a3519502994 100644 --- a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp @@ -78,7 +78,7 @@ cl::opt UseOldMemOpValueProf( "use-old-memop-value-prof", cl::desc("Use the old memop value profiling buckets. This is " "transitional and to be removed after switching. "), - cl::init(false)); + cl::init(true)); namespace {