Index: lib/Transforms/Instrumentation/AddressSanitizer.cpp =================================================================== --- lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -2237,10 +2237,8 @@ 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, Index: test/Instrumentation/AddressSanitizer/stack-poisoning.ll =================================================================== --- test/Instrumentation/AddressSanitizer/stack-poisoning.ll +++ test/Instrumentation/AddressSanitizer/stack-poisoning.ll @@ -44,6 +44,7 @@ ; CHECK-UAR: store i64 -723401728380766731 ; CHECK-UAR: store i64 -723401728380766731 ; CHECK-UAR: store i64 -723401728380766731 + ; CHECK-UAR-NOT: store i64 ; CHECK-UAR: store i8 0 ; CHECK-UAR-NOT: store ; CHECK-UAR: label