summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
diff options
context:
space:
mode:
authorVitaly Buka <vitalybuka@google.com>2016-08-19 08:33:53 +0000
committerVitaly Buka <vitalybuka@google.com>2016-08-19 08:33:53 +0000
commitb81960a6c858b4d40d64798cac3e56ca8e6383fa (patch)
treeeb430b86c1020f68a75413b90998c1cfa8ced068 /llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
parent6d6310dd4a657c7b95fa350c288883bdfe4d2932 (diff)
downloadbcm5719-llvm-b81960a6c858b4d40d64798cac3e56ca8e6383fa.tar.gz
bcm5719-llvm-b81960a6c858b4d40d64798cac3e56ca8e6383fa.zip
[asan] Fix size of shadow incorrectly calculated in r279178
Summary: r279178 generates 8 times more stores than necessary. Reviewers: eugenis Subscribers: llvm-commits Differential Revision: https://reviews.llvm.org/D23708 llvm-svn: 279222
Diffstat (limited to 'llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp')
-rw-r--r--llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp6
1 files changed, 2 insertions, 4 deletions
diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
index 67aef34a54b..4105dd89d85 100644
--- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
+++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp
@@ -2237,10 +2237,8 @@ void FunctionStackPoisoner::poisonStack() {
IRBuilder<> IRBPoison(ThenTerm);
if (StackMallocIdx <= 4) {
int ClassSize = kMinStackMallocSize << StackMallocIdx;
- if ((int)ShadowBytesAfterReturn.size() != ClassSize) {
- ShadowBytesAfterReturn.resize(ClassSize,
- kAsanStackUseAfterReturnMagic);
- }
+ ShadowBytesAfterReturn.resize(ClassSize >> Mapping.Scale,
+ kAsanStackUseAfterReturnMagic);
poisonRedZones(ShadowBytesAfterReturn, IRBPoison, ShadowBase, true);
Value *SavedFlagPtrPtr = IRBPoison.CreateAdd(
FakeStack,
OpenPOWER on IntegriCloud