[asan] rewrite asan's stack frame layout
authorKostya Serebryany <kcc@google.com>
Fri, 6 Dec 2013 09:00:17 +0000 (09:00 +0000)
committerKostya Serebryany <kcc@google.com>
Fri, 6 Dec 2013 09:00:17 +0000 (09:00 +0000)
commitdaa1bf3b74054857660912acf738fb75deab8c27
tree0de5bd10c5d5bbbfcd71d64d3d887e37983ee011
parent21c34931e8385c805d0a810b28ff1f3b9db08b77
[asan] rewrite asan's stack frame layout

Summary:
Rewrite asan's stack frame layout.
First, most of the stack layout logic is moved into a separte file
to make it more testable and (potentially) useful for other projects.
Second, make the frames more compact by using adaptive redzones
(smaller for small objects, larger for large objects).
Third, try to minimized gaps due to large alignments (this is hypothetical since
today we don't see many stack vars aligned by more than 32).

The frames indeed become more compact, but I'll still need to run more benchmarks
before committing, but I am sking for review now to get early feedback.

This change will be accompanied by a trivial change in compiler-rt tests
to match the new frame sizes.

Reviewers: samsonov, dvyukov

Reviewed By: samsonov

CC: llvm-commits
Differential Revision: http://llvm-reviews.chandlerc.com/D2324

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196568 91177308-0d34-0410-b5e6-96231b3b80d8
include/llvm/Transforms/Utils/ASanStackFrameLayout.h [new file with mode: 0644]
lib/Transforms/Instrumentation/AddressSanitizer.cpp
lib/Transforms/Utils/ASanStackFrameLayout.cpp [new file with mode: 0644]
lib/Transforms/Utils/CMakeLists.txt
test/Instrumentation/AddressSanitizer/basic.ll
test/Instrumentation/AddressSanitizer/stack_layout.ll [new file with mode: 0644]
unittests/Transforms/Utils/ASanStackFrameLayoutTest.cpp [new file with mode: 0644]
unittests/Transforms/Utils/CMakeLists.txt