Old fork of llvm-mirror, used on older RPCS3 builds
Go to file
Jessica Paquette 126b679a29 [AArch64][GlobalISel] Choose CCAssignFns per-argument for tail call lowering
When checking for tail call eligibility, we should use the correct CCAssignFn
for each argument, rather than just checking if the caller/callee is varargs or
not.

This is important for tail call lowering with varargs. If we don't check it,
then basically any varargs callee with parameters cannot be tail called on
Darwin, for one thing. If the parameters are all guaranteed to be in registers,
this should be entirely safe.

On top of that, not checking for this could potentially make it so that we have
the wrong stack offsets when checking for tail call eligibility.

Also refactor some of the stuff for CCAssignFnForCall and pull it out into a
helper function.

Update call-translator-tail-call.ll to show that we can now correctly tail call
on Darwin. Also add two extra tail call checks. The first verifies that we still
respect the caller's stack size, and the second verifies that we still don't
tail call when a varargs function has a memory argument.

Differential Revision: https://reviews.llvm.org/D67939

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@372897 91177308-0d34-0410-b5e6-96231b3b80d8
2019-09-25 16:45:35 +00:00
benchmarks
bindings Remove the obsolete BlockByRefStruct flag from LLVM IR 2019-09-18 22:38:56 +00:00
cmake Use double quotes for LDFLAGS in -DLLVM_BUILD_INSTRUMENTED_COVERAGE 2019-09-24 23:56:22 +00:00
docs [LangRef] Clarify absence of rounding guarantees for fmuladd. 2019-09-25 16:09:24 +00:00
examples [Orc] Roll back ThreadPool to std::function 2019-09-13 11:59:51 +00:00
include [AArch64][GlobalISel] Choose CCAssignFns per-argument for tail call lowering 2019-09-25 16:45:35 +00:00
lib [AArch64][GlobalISel] Choose CCAssignFns per-argument for tail call lowering 2019-09-25 16:45:35 +00:00
projects
resources
runtimes Adding support for overriding LLVM_ENABLE_RUNTIMES for runtimes builds. 2019-09-24 22:38:18 +00:00
test [AArch64][GlobalISel] Choose CCAssignFns per-argument for tail call lowering 2019-09-25 16:45:35 +00:00
tools [llvm-readobj/llvm-readelf] - .stack_sizes: demangle symbol names in warnings reported. 2019-09-25 13:16:43 +00:00
unittests [PatternMatch] Make m_Br more flexible, add matchers for BB values. 2019-09-25 15:05:08 +00:00
utils [gn build] Fix Python DeprecationWarning 2019-09-25 14:15:34 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes Fix the "git modified" issue on the preserve-comments-crlf.s. 2019-09-10 12:17:49 +00:00
.gitignore
CMakeLists.txt Revert "Reland "[utils] Implement the llvm-locstats tool"" 2019-09-23 11:04:11 +00:00
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.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.