From: Fangrui Song Date: Wed, 22 Jul 2020 20:10:59 +0000 (-0700) Subject: Temporarily revert D83903 "[PGO] Enable the extended value profile buckets for mem... X-Git-Tag: llvmorg-13-init~17088 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5724c8ba29baef986a4a9ee77df98f638ee9e641;p=platform%2Fupstream%2Fllvm.git 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 --- diff --git a/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp b/llvm/lib/Transforms/Instrumentation/InstrProfiling.cpp index c2e4e93..0a35195 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 {