aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Object/SymbolicFile.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2016-08-17 02:40:23 +0000
committerChandler Carruth <chandlerc@gmail.com>2016-08-17 02:40:23 +0000
commitf702d8ecb66f7efe8556ca0d27195a309916e74d (patch)
tree0e59e41c8ad02b5a261e0075291d932e46b0842e /llvm/lib/Object/SymbolicFile.cpp
parent525ce253fed71917c612d62ae9f161718e023a2d (diff)
downloadllvm-f702d8ecb66f7efe8556ca0d27195a309916e74d.zip
llvm-f702d8ecb66f7efe8556ca0d27195a309916e74d.tar.gz
llvm-f702d8ecb66f7efe8556ca0d27195a309916e74d.tar.bz2
[Inliner] Add a flag to disable manual alloca merging in the Inliner.
This is off for now while testing can take place to make sure that in fact we do sufficient stack coloring to fully obviate the manual alloca array merging. Some context on why we should be using stack coloring rather than merging allocas in this way: LLVM relies very heavily on analyzing pointers as coming from different allocas in order to make aliasing decisions. These are some of the most powerful aliasing signals available in LLVM. So merging allocas is an extremely destructive operation on the LLVM IR -- it takes away highly valuable and hard to reconstruct information. As a consequence, inlined functions which happen to have array allocas that this pattern matches will fail to be properly interleaved unless SROA manages to hoist everything to an SSA register. Instead, the inliner will have added an unnecessary dependence that one inlined function execute after the other because they will have been rewritten to refer to the same memory. All that said, folks will reasonably want some time to experiment here and make sure there are no significant regressions. A flag should give us an easy knob to test. For more context, see the thread here: http://lists.llvm.org/pipermail/llvm-dev/2016-July/103277.html http://lists.llvm.org/pipermail/llvm-dev/2016-August/103285.html Differential Revision: https://reviews.llvm.org/D23052 llvm-svn: 278892
Diffstat (limited to 'llvm/lib/Object/SymbolicFile.cpp')
0 files changed, 0 insertions, 0 deletions