llvm-project/llvm
Reid Kleckner 0828699488 [FastISel] Disable local value sinking by default
This is causing compilation timeouts on code with long sequences of
local values and calls (i.e. foo(1); foo(2); foo(3); ...).  It turns out
that code coverage instrumentation is a great way to create sequences
like this, which how our users ran into the issue in practice.

Intel has a tool that detects these kinds of non-linear compile time
issues, and Andy Kaylor reported it as PR37010.

The current sinking code scans the whole basic block once per local
value sink, which happens before emitting each call. In theory, local
values should only be introduced to be used by instructions between the
current flush point and the last flush point, so we should only need to
scan those instructions.

llvm-svn: 329822
2018-04-11 16:03:07 +00:00
..
bindings [llgo] Move SetSubprogram 2018-04-07 16:26:59 +00:00
cmake [Build][NFC] Split off libpfm detection to a separate module. 2018-04-11 07:39:00 +00:00
docs [llvm-mca] Renamed BackendStatistics to RetireControlUnitStatistics. 2018-04-11 12:12:53 +00:00
examples [ORC] Create a new SymbolStringPool by default in ExecutionSession constructor. 2018-04-02 20:57:56 +00:00
include [X86] Remove 128/256-bit masked pmaddubsw and pmaddwd intrinsics. Replace 512-bit masked intrinsic with unmasked intrinsic and a select. 2018-04-11 04:55:04 +00:00
lib [FastISel] Disable local value sinking by default 2018-04-11 16:03:07 +00:00
projects
resources
runtimes [CMake][runtimes] Process common options in runtimes build 2018-04-11 05:18:03 +00:00
test [FastISel] Disable local value sinking by default 2018-04-11 16:03:07 +00:00
tools Revert "[llvm-mca][CMake] Remove unused libraries from set LLVM_LINK_COMPONENTS" 2018-04-11 14:35:23 +00:00
unittests [llvm-exegesis] Add a flag to disable libpfm even if present. 2018-04-11 07:32:43 +00:00
utils [MC][TableGen] Fix r329675. 2018-04-10 08:43:46 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [llvm-exegesis] Add a flag to disable libpfm even if present. 2018-04-11 07:32:43 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
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 are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.