llvm-project/llvm/test/Instrumentation/SanitizerCoverage
Craig Topper 03e93f514a [SanitizerCoverage] Avoid splitting critical edges when destination is a basic block containing unreachable
This patch adds a new option to SplitAllCriticalEdges and uses it to avoid splitting critical edges when the destination basic block ends with unreachable. Otherwise if we split the critical edge, sanitizer coverage will instrument the new block that gets inserted for the split. But since this block itself shouldn't be reachable this is pointless. These basic blocks will stick around and generate assembly, but they don't end in sane control flow and might get placed at the end of the function. This makes it look like one function has code that flows into the next function.

This showed up while compiling the linux kernel with clang. The kernel has a tool called objtool that detected the code that appeared to flow from one function to the next. https://github.com/ClangBuiltLinux/linux/issues/351#issuecomment-461698884

Differential Revision: https://reviews.llvm.org/D57982

llvm-svn: 355947
2019-03-12 18:20:25 +00:00
..
abort-in-entry-block.ll
backedge-pruning.ll [sanitizer-coverage] prune trace-cmp instrumentation for CMP isntructions that feed into the backedge branch. Instrumenting these CMP instructions is almost always useless (and harmful) for fuzzing 2019-01-31 23:43:00 +00:00
chains.ll
cmp-tracing-api-x86_32.ll Fix invalid target triples in tests. (NFC) 2019-03-04 23:37:41 +00:00
cmp-tracing-api-x86_64.ll
cmp-tracing.ll
coff-comdat.ll [sancov] Put .SCOV* sections into the right comdat groups on COFF 2018-11-08 00:57:33 +00:00
coff-pc-table-inline-8bit-counters.ll [libFuzzer] Port to Windows 2018-08-30 15:54:44 +00:00
coff-used-ctor.ll [SanitizerCoverage][NFC] Use appendToUsed instead of include 2019-01-14 21:02:02 +00:00
const-cmp-tracing.ll
coverage-dbg.ll
coverage.ll
coverage2-dbg.ll
div-tracing.ll [SanitizerCoverage] Create comdat for global arrays. 2018-09-13 21:45:55 +00:00
gep-tracing.ll [SanitizerCoverage] Create comdat for global arrays. 2018-09-13 21:45:55 +00:00
inline-8bit-counters.ll [SanitizerCoverage] Create comdat for global arrays. 2018-09-13 21:45:55 +00:00
interposable-symbol-nocomdat.ll [SanitizerCoverage] Don't create comdat for interposable functions. 2019-01-15 21:21:01 +00:00
no-func.ll
pc-table.ll [SanitizerCoverage] Create comdat for global arrays. 2018-09-13 21:45:55 +00:00
postdominator_check.ll
seh.ll [EH] Rename llvm.x86.seh.recoverfp intrinsic to llvm.eh.recoverfp 2019-01-16 00:37:13 +00:00
stack-depth-variable-declared-by-user.ll [SanitizerCoverage] Clang crashes if user declares `__sancov_lowest_stack` variable 2019-02-04 22:06:30 +00:00
stack-depth.ll
switch-tracing.ll
trace-pc-guard-comdat.ll
trace-pc-guard-nocomdat.ll
tracing-comdat.ll
tracing.ll [sancov] Instrument reachable blocks that end in unreachable 2019-02-28 22:54:30 +00:00
unreachable-critedge.ll [SanitizerCoverage] Avoid splitting critical edges when destination is a basic block containing unreachable 2019-03-12 18:20:25 +00:00
wineh.ll