llvm-project/llvm/lib/Transforms/Instrumentation
Evgeniy Stepanov 447bbdb171 [safestack] Rewrite isAllocaSafe using SCEV.
Use ScalarEvolution to calculate memory access bounds.
Handle function calls based on readnone/nocapture attributes.
Handle memory intrinsics with constant size.

This change improves both recall and precision of IsAllocaSafe.
See the new tests (ex. BitCastWide) for the kind of code that was wrongly
classified as safe.

SCEV efficiency seems to be limited by the fact the SafeStack runs late
(in CodeGenPrepare), and many loops are unrolled or otherwise not in LCSSA.

llvm-svn: 253083
2015-11-13 21:21:42 +00:00
..
AddressSanitizer.cpp [ASan] Enable optional ASan recovery. 2015-11-11 10:36:49 +00:00
BoundsChecking.cpp Instrumentation: Remove ilist iterator implicit conversions, NFC 2015-10-13 17:39:10 +00:00
CMakeLists.txt Protection against stack-based memory corruption errors using SafeStack 2015-06-15 21:07:11 +00:00
DataFlowSanitizer.cpp DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
GCOVProfiling.cpp DI: Reverse direction of subprogram -> function edge. 2015-11-05 22:03:56 +00:00
InstrProfiling.cpp [PGO] Use template file to define runtime structures 2015-11-05 00:47:26 +00:00
Instrumentation.cpp Instrumentation: Remove ilist iterator implicit conversions, NFC 2015-10-13 17:39:10 +00:00
LLVMBuild.txt Update libdeps since TLI was moved from Target to Analysis in r226078. 2015-01-15 05:21:00 +00:00
Makefile
MaximumSpanningTree.h
MemorySanitizer.cpp [sanitizer] [msan] Unify aarch64 mapping 2015-10-29 13:02:30 +00:00
SafeStack.cpp [safestack] Rewrite isAllocaSafe using SCEV. 2015-11-13 21:21:42 +00:00
SanitizerCoverage.cpp Instrumentation: Remove ilist iterator implicit conversions, NFC 2015-10-13 17:39:10 +00:00
ThreadSanitizer.cpp Try to appease VS 2015 warnings from http://reviews.llvm.org/D11890 2015-08-15 19:06:14 +00:00