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 c2e4e932e77b395150c41bc3cca5a885b64393b4..0a3519502994be12b40c0905f2aee64e8a47dc88 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 {