1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/include/llvm/Transforms
Craig Topper 166a06aa30 [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
..
AggressiveInstCombine Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
InstCombine Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Instrumentation [NFC] Fix PGO link error in shared libs build 2019-03-04 22:54:44 +00:00
IPO [PGO] Context sensitive PGO (part 3) 2019-03-04 20:21:27 +00:00
Scalar [ConstantHoisting] Call cleanup() in ConstantHoistingPass::runImpl to avoid dangling elements in ConstIntInfoVec for new PM 2019-03-01 05:27:01 +00:00
Utils [SanitizerCoverage] Avoid splitting critical edges when destination is a basic block containing unreachable 2019-03-12 18:20:25 +00:00
Vectorize [llvm] Fix typo: 's/analsyis/analysis/' [NFC] 2019-03-02 00:14:10 +00:00
Coroutines.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Instrumentation.h Remove esan. 2019-03-11 20:23:40 +00:00
IPO.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ObjCARC.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Scalar.h Default lowering for experimental.widenable.condition 2019-01-31 09:10:17 +00:00
Utils.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
Vectorize.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00