mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-05 14:34:55 +00:00
llvm-cov: Split entry blocks in GCNOProfiling.cpp.
gcov expects every function to contain an entry block that unconditionally branches into the next block. clang does not implement basic blocks in this manner, so gcov did not output correct branch info if the entry block branched to multiple blocks. This change splits every function's entry block into an empty block and a block with the rest of the instructions. The instrumentation code will take care of the rest. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@195513 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
e6c749a3ec
commit
695de7692c
@ -467,6 +467,9 @@ void GCOVProfiler::emitProfileNotes() {
|
||||
|
||||
Function *F = SP.getFunction();
|
||||
if (!F) continue;
|
||||
BasicBlock &EntryBlock = F->getEntryBlock();
|
||||
EntryBlock.splitBasicBlock(EntryBlock.begin());
|
||||
|
||||
GCOVFunction *Func =
|
||||
new GCOVFunction(SP, &out, i, Options.UseCfgChecksum);
|
||||
Funcs.push_back(Func);
|
||||
|
Loading…
x
Reference in New Issue
Block a user