Temporarily revert D83903 "[PGO] Enable the extended value profile buckets for mem...
authorFangrui Song <maskray@google.com>
Wed, 22 Jul 2020 20:10:59 +0000 (13:10 -0700)
committerFangrui Song <maskray@google.com>
Wed, 22 Jul 2020 20:12:19 +0000 (13:12 -0700)
`__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

index c2e4e93..0a35195 100644 (file)
@@ -78,7 +78,7 @@ cl::opt<bool> 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 {