llvm-project/llvm
Philip Reames 587fa99cfd Default to generating statepoints with deopt and gc-transition bundles if needed
Continues from D80598.

The key point of the change is to default to using operand bundles instead of the inline length prefix argument lists for statepoint nodes. An important subtlety to note is that the presence of a bundle has semantic meaning, even if it is empty. As such, we need to make a somewhat deeper change to the interface than is first obvious.

Existing code treats statepoint deopt arguments and the deopt bundle operands differently during inlining. The former is ignored (resulting in caller state being dropped), the later is merged.

We can't preserve the old behaviour for calls with deopt fed to RS4GC and then inlining, but we can avoid the no-deopt case changing. At least in internal testing, that seem to be the important one. (I'd argue the "stop merging after RS4GC" behaviour for the former was always "unexpected", but that the behaviour for non-deopt calls actually make sense.)

Differential Revision: https://reviews.llvm.org/D80674
2020-05-28 10:14:23 -07:00
..
benchmarks
bindings Fix go bindings after FixedVectorType -> VectorType change. 2020-05-15 16:37:57 -07:00
cmake [build] Add LLVM_LOCAL_RPATH which can set an rpath on just unit test binaries 2020-05-26 06:23:57 -04:00
docs FileCheck [10/12]: Add support for signed numeric values 2020-05-28 10:44:21 +01:00
examples StoreInst should store Align, not MaybeAlign 2020-05-15 12:26:58 -07:00
include Default to generating statepoints with deopt and gc-transition bundles if needed 2020-05-28 10:14:23 -07:00
lib Default to generating statepoints with deopt and gc-transition bundles if needed 2020-05-28 10:14:23 -07:00
projects
resources
runtimes
test Default to generating statepoints with deopt and gc-transition bundles if needed 2020-05-28 10:14:23 -07:00
tools [llvm-exegesis] Make a few counter methods virtual to allow targets to provide target-specific support. 2020-05-28 12:38:25 -04:00
unittests FileCheck [10/12]: Add support for signed numeric values 2020-05-28 10:44:21 +01:00
utils [gn build] Port 7cfdff7b4a 2020-05-28 16:49:43 +00:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Automatically configure MLIR when flang is enabled 2020-05-27 07:31:49 +00:00
CODE_OWNERS.TXT Add self as code owner for SCEV and IndVars 2020-05-26 17:35:54 -07:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

The LLVM Compiler Infrastructure
================================

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.