llvm-project/llvm
Alex Richardson d1ff003fbb [SelectionDAGBuilder] Stop setting alignment to one for hidden sret values
We allocated a suitably aligned frame index so we know that all the values
have ABI alignment.
For MIPS this avoids using pair of lwl + lwr instructions instead of a
single lw. I found this when compiling CHERI pure capability code where
we can't use the lwl/lwr unaligned loads/stores and and were to falling
back to a byte load + shift + or sequence.

This should save a few instructions for MIPS and possibly other backends
that don't have fast unaligned loads/stores.
It also improves code generation for CodeGen/X86/pr34653.ll and
CodeGen/WebAssembly/offset.ll since they can now use aligned loads.

Reviewed By: efriedma
Differential Revision: https://reviews.llvm.org/D78999
2020-05-04 14:44:39 +01:00
..
benchmarks
bindings Update go bindings for 2dea3f1298 2020-04-22 19:02:59 +02:00
cmake [CMake] Provide a proper default location for llvm-lit for out-of-tree users on Windows host. 2020-05-01 11:48:30 -07:00
docs [llvm-dwarfdump][Stats] Clean up 2020-05-04 09:35:40 +02:00
examples [examples] Fix an incomplete comment. 2020-05-01 11:06:41 -07:00
include [AArch64] Add NVIDIA Carmel support 2020-05-04 13:52:30 +01:00
lib [SelectionDAGBuilder] Stop setting alignment to one for hidden sret values 2020-05-04 14:44:39 +01:00
projects
resources
runtimes
test [SelectionDAGBuilder] Stop setting alignment to one for hidden sret values 2020-05-04 14:44:39 +01:00
tools [llvm-dwarfdump][Stats] Clean up 2020-05-04 09:35:40 +02:00
unittests [AArch64] Add NVIDIA Carmel support 2020-05-04 13:52:30 +01:00
utils [llvm-dwarfdump][Stats] Clean up 2020-05-04 09:35:40 +02:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Revert "Temporarily revert "build: use `find_package(Python3)` if available"" 2020-04-29 01:38:08 +00:00
CODE_OWNERS.TXT
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.