Skip to content
  • Chandler Carruth's avatar
    [Inliner] Add a flag to disable manual alloca merging in the Inliner. · f702d8ec
    Chandler Carruth authored
    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
    f702d8ec
Loading