llvm-project/llvm
Daniel Jasper 8f239f83b0 During PHI elimination, split critical edges that move copies out of loops.
This prevents the behavior observed in llvm.org/PR22369. I am not sure
whether I am reading the code correctly, but the early exit based on
isLiveOutPastPHIs() seems to make the wrong assumption that
RegisterCoalescer won't be able to coalesce those copies later.

This change hides the new behavior behind -no-phi-elim-live-out-early-exit
as it currently breaks four tests:
 * Assertion in:
     CodeGen/Hexagon/hwloop-cleanup.ll
 * Worse code in:
     CodeGen/X86/coalescer-commute4.ll
     CodeGen/X86/phys_subreg_coalesce-2.ll
     CodeGen/X86/zlib-longest-match.ll
   The root cause here seems to be that the heuristic that determines
   the visitation order in RegisterCoalescer gets less lucky.

llvm-svn: 231064
2015-03-03 10:23:11 +00:00
..
autoconf Revert r230812. Do not break builds for no reason. 2015-02-28 19:43:20 +00:00
bindings Restore LLVMLinkModules C API until it is properly deprecated. 2015-03-02 18:59:38 +00:00
cmake cmake: Use MSVC atomics with clang-cl 2015-03-02 22:00:23 +00:00
docs [PerformanceTips] Document various items folks have suggested 2015-03-02 19:19:04 +00:00
examples llvm/examples: Add missing include according to r230907. 2015-03-02 01:04:34 +00:00
include Add range iterators to Extract/InsertValueInst indices 2015-03-03 09:31:01 +00:00
lib During PHI elimination, split critical edges that move copies out of loops. 2015-03-03 10:23:11 +00:00
projects
test During PHI elimination, split critical edges that move copies out of loops. 2015-03-03 10:23:11 +00:00
tools Add r230655 back with a fix. 2015-03-02 19:08:03 +00:00
unittests Add explicit type to empty std::set initializer to fix the libc++ build. 2015-03-03 01:39:13 +00:00
utils Switch up whitespace with better whitespace. 2015-03-03 07:59:45 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Add one more vim swap file pattern 2015-01-30 21:59:28 +00:00
CMakeLists.txt Minor follow-ups to r229720 suggested on llvmdev 2015-02-27 18:22:46 +00:00
CODE_OWNERS.TXT Assume code ownership for the PS4 to ensure patches get reviewed, per the Developer Policy. 2015-01-28 18:33:39 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules
README.txt Revert test commit 2015-02-04 18:46:00 +00:00
configure Revert r230812. Do not break builds for no reason. 2015-02-28 19:43:20 +00:00
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.