diff options
author | Vitaly Buka <vitalybuka@google.com> | 2016-08-19 08:33:53 +0000 |
---|---|---|
committer | Vitaly Buka <vitalybuka@google.com> | 2016-08-19 08:33:53 +0000 |
commit | b81960a6c858b4d40d64798cac3e56ca8e6383fa (patch) | |
tree | eb430b86c1020f68a75413b90998c1cfa8ced068 /llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp | |
parent | 6d6310dd4a657c7b95fa350c288883bdfe4d2932 (diff) | |
download | bcm5719-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.cpp | 6 |
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, |