1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/lib/Transforms/Instrumentation
Xun Li ab9fd44679 [CHR] Don't run ControlHeightReduction if any BB has address taken
This patch is to address https://bugs.llvm.org/show_bug.cgi?id=50610.
In computed goto pattern, there are usually a list of basic blocks that are all targets of indirectbr instruction, and each basic block also has address taken and stored in a variable.
CHR pass could potentially clone these basic blocks, which would generate a cloned version of the indirectbr and clonved version of all basic blocks in the list.
However these basic blocks will not have their addresses taken and stored anywhere. So latter SimplifyCFG pass will simply remove all tehse cloned basic blocks, resulting in incorrect code.
To fix this, when searching for scopes, we skip scopes that contains BBs with addresses taken.
Added a few test cases.

Reviewed By: aeubanks, wenlei, hoy

Differential Revision: https://reviews.llvm.org/D103867
2021-06-12 10:29:53 -07:00
..
AddressSanitizer.cpp [sanitizer] Remove numeric values from -asan-use-after-return flag. (NFC) 2021-06-11 15:14:51 -07:00
BoundsChecking.cpp
CFGMST.h
CGProfile.cpp
CMakeLists.txt
ControlHeightReduction.cpp [CHR] Don't run ControlHeightReduction if any BB has address taken 2021-06-12 10:29:53 -07:00
DataFlowSanitizer.cpp [dfsan] Add full fast8 support 2021-06-07 17:20:54 -07:00
GCOVProfiling.cpp [gcov] Set nounwind and respect module flags metadata "frame-pointer" & "uwtable" for synthesized functions 2021-04-26 13:30:21 -07:00
HWAddressSanitizer.cpp [HWASan] Add basic stack tagging support for LAM. 2021-06-11 08:21:17 -07:00
IndirectCallPromotion.cpp Fix some -Wunused-but-set-variable in -DLLVM_ENABLE_ASSERTIONS=off build 2021-06-04 23:34:43 -07:00
InstrOrderFile.cpp
InstrProfiling.cpp [InstrProfiling] If no value profiling, make data variable private and (for Windows) use one comdat 2021-06-04 13:27:56 -07:00
Instrumentation.cpp
MaximumSpanningTree.h
MemorySanitizer.cpp [MSan] Set zeroext on call arguments to msan functions with zeroext parameter attribute 2021-05-18 14:07:39 -07:00
MemProfiler.cpp
PGOInstrumentation.cpp Internalize some cl::opt global variables or move them under namespace llvm 2021-05-07 11:15:43 -07:00
PGOMemOPSizeOpt.cpp [NewPM] Don't mark AA analyses as preserved 2021-05-18 13:49:03 -07:00
PoisonChecking.cpp
SanitizerCoverage.cpp Revert "[TargetLowering] Only inspect attributes in the arguments for ArgListEntry" 2021-06-07 16:07:44 -07:00
ThreadSanitizer.cpp
ValueProfileCollector.cpp
ValueProfileCollector.h
ValueProfilePlugins.inc