Commit Graph

5 Commits

Author SHA1 Message Date
Evgeniy Stepanov
794ffc40e2 [safestack] Disable stack coloring by default.
Workaround for apparent miscompilation of PR32143.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@303456 91177308-0d34-0410-b5e6-96231b3b80d8
2017-05-19 20:58:48 +00:00
Matthias Braun
88d207542b Cleanup dump() functions.
We had various variants of defining dump() functions in LLVM. Normalize
them (this should just consistently implement the things discussed in
http://lists.llvm.org/pipermail/cfe-dev/2014-January/034323.html

For reference:
- Public headers should just declare the dump() method but not use
  LLVM_DUMP_METHOD or #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
- The definition of a dump method should look like this:
  #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP)
  LLVM_DUMP_METHOD void MyClass::dump() {
    // print stuff to dbgs()...
  }
  #endif

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293359 91177308-0d34-0410-b5e6-96231b3b80d8
2017-01-28 02:02:38 +00:00
Evgeniy Stepanov
df9dcaf1ee [safestack] Fix assertion failure in stack coloring.
This is a fix for PR30318.

Clang may generate IR where an alloca is already live when entering a
BB with lifetime.start. In this case, conservatively extend the
alloca lifetime all the way back to the block entry.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@281784 91177308-0d34-0410-b5e6-96231b3b80d8
2016-09-16 22:04:10 +00:00
Evgeniy Stepanov
6f1298ed27 [safestack] Fix stack guard live range.
Stack guard slot is live throughout the function.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@276712 91177308-0d34-0410-b5e6-96231b3b80d8
2016-07-26 00:05:14 +00:00
Evgeniy Stepanov
6a40504406 StackColoring for SafeStack.
This is a fix for PR27842.

An IR-level implementation of stack coloring tailored to work with
SafeStack. It is a bit weaker than the MI implementation in that it
does not the "lifetime start at first access" logic. This can be
improved in the future.

This patch also replaces the naive implementation of stack frame
layout with a greedy algorithm that can split existing stack slots
and even fit small objects inside the alignment padding of other
objects.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@274162 91177308-0d34-0410-b5e6-96231b3b80d8
2016-06-29 20:37:43 +00:00