ASan: use getTypeAllocSize instead of getTypeStoreSize.
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Fri, 2 Mar 2012 10:41:08 +0000 (10:41 +0000)
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>
Fri, 2 Mar 2012 10:41:08 +0000 (10:41 +0000)
commitd8313be41031e4d768f5b38199904d4debff88cd
treec26f5cad15872c01aa0c7ddfc51bac08d5c66aec
parentc3f99182be33fd5c42e94539c566c476a59589bc
ASan: use getTypeAllocSize instead of getTypeStoreSize.

This change replaces getTypeStoreSize with getTypeAllocSize in AddressSanitizer
instrumentation for stack allocations.

One case where old behaviour produced undesired results is an optimization in
InstCombine pass (PromoteCastOfAllocation), which can replace  alloca(T) with
alloca(S), where S has the same AllocSize, but a smaller StoreSize. Another
case is memcpy(long double => long double), where ASan will poison bytes 10-15
of a stack-allocated long double (StoreSize  10, AllocSize 16,
sizeof(long double) = 16).

See http://llvm.org/bugs/show_bug.cgi?id=12047 for more context.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@151887 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Instrumentation/AddressSanitizer.cpp