Go to file
Chandler Carruth f702d8ecb6 [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
2016-08-17 02:40:23 +00:00
clang Add missing close brace to fix Windows bots. Oops :( 2016-08-17 02:22:39 +00:00
clang-tools-extra Remove most instances of REQUIRES: shell from the tools/extra tests 2016-08-16 16:07:46 +00:00
compiler-rt Revert "[compiler-rt] Allow c++ abi to be explictly disabled in cmake configuration" 2016-08-16 20:52:22 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Make min follow the OCL 1.0 specs 2016-07-25 22:36:22 +00:00
libcxx libcxx: Fix path.compare.pass expected result 2016-08-15 21:24:50 +00:00
libcxxabi Default LIBCXXABI_LIBDIR_SUFFIX to LLVM_LIBDIR_SUFFIX 2016-08-16 03:44:55 +00:00
libunwind Allow building both shared and static library 2016-08-08 22:55:48 +00:00
lld [ELF] Set MAXPAGESIZE to 2MiB on x86-64 to match bfd and gold. 2016-08-17 02:10:51 +00:00
lldb Remove GetThreadSuffixSupported from GDBRemoteCommunication **base** class 2016-08-16 09:36:29 +00:00
llgo [llgo] add llgo source path to LLVM_GO_PACKAGES 2016-07-27 03:01:00 +00:00
llvm [Inliner] Add a flag to disable manual alloca merging in the Inliner. 2016-08-17 02:40:23 +00:00
openmp Fixes for hierarchical barrier (possible hang if team size changed). 2016-08-11 13:04:00 +00:00
parallel-libs [StreamExecutor] Rename StreamExecutor to Executor 2016-08-16 18:18:32 +00:00
polly [ScopInfo] Make scalars used by PHIs in non-affine regions available 2016-08-16 11:44:48 +00:00