diff --git a/compiler-rt/test/profile/Posix/instrprof-gcov-execlp.test b/compiler-rt/test/profile/Posix/instrprof-gcov-execlp.test --- a/compiler-rt/test/profile/Posix/instrprof-gcov-execlp.test +++ b/compiler-rt/test/profile/Posix/instrprof-gcov-execlp.test @@ -1,3 +1,5 @@ +UNSUPPORTED: true + RUN: mkdir -p %t.d RUN: cd %t.d diff --git a/compiler-rt/test/profile/Posix/instrprof-gcov-execvp.test b/compiler-rt/test/profile/Posix/instrprof-gcov-execvp.test --- a/compiler-rt/test/profile/Posix/instrprof-gcov-execvp.test +++ b/compiler-rt/test/profile/Posix/instrprof-gcov-execvp.test @@ -1,3 +1,5 @@ +UNSUPPORTED: true + RUN: mkdir -p %t.d RUN: cd %t.d diff --git a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp --- a/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp +++ b/llvm/lib/Transforms/Instrumentation/GCOVProfiling.cpp @@ -117,8 +117,6 @@ insertCounterWriteout(ArrayRef>); Function *insertFlush(ArrayRef>); - void AddFlushBeforeForkAndExec(); - enum class GCovFileType { GCNO, GCDA }; std::string mangleName(const DICompileUnit *CU, GCovFileType FileType); @@ -566,8 +564,6 @@ this->GetTLI = std::move(GetTLI); Ctx = &M.getContext(); - AddFlushBeforeForkAndExec(); - FilterRe = createRegexesFromString(Options.Filter); ExcludeRe = createRegexesFromString(Options.Exclude); @@ -630,39 +626,6 @@ return false; } -void GCOVProfiler::AddFlushBeforeForkAndExec() { - SmallVector ForkAndExecs; - for (auto &F : M->functions()) { - auto *TLI = &GetTLI(F); - for (auto &I : instructions(F)) { - if (CallInst *CI = dyn_cast(&I)) { - if (Function *Callee = CI->getCalledFunction()) { - LibFunc LF; - if (TLI->getLibFunc(*Callee, LF) && - (LF == LibFunc_fork || LF == LibFunc_execl || - LF == LibFunc_execle || LF == LibFunc_execlp || - LF == LibFunc_execv || LF == LibFunc_execvp || - LF == LibFunc_execve || LF == LibFunc_execvpe || - LF == LibFunc_execvP)) { - ForkAndExecs.push_back(&I); - } - } - } - } - } - - // We need to split the block after the fork/exec call - // because else the counters for the lines after will be - // the same as before the call. - for (auto I : ForkAndExecs) { - IRBuilder<> Builder(I); - FunctionType *FTy = FunctionType::get(Builder.getVoidTy(), {}, false); - FunctionCallee GCOVFlush = M->getOrInsertFunction("__gcov_flush", FTy); - Builder.CreateCall(GCOVFlush); - I->getParent()->splitBasicBlock(I); - } -} - void GCOVProfiler::emitProfileNotes() { NamedMDNode *CU_Nodes = M->getNamedMetadata("llvm.dbg.cu"); if (!CU_Nodes) return;