llvm-project/llvm
Andy Wingo 82f92e35c6 [WebAssembly][CodeGen] IR support for WebAssembly local variables
This patch adds TargetStackID::WasmLocal.  This stack holds locations of
values that are only addressable by name -- not via a pointer to memory.
For the WebAssembly target, these objects are lowered to WebAssembly
local variables, which are managed by the WebAssembly run-time and are
not addressable by linear memory.

For the WebAssembly target IR indicates that an AllocaInst should be put
on TargetStackID::WasmLocal by putting it in the non-integral address
space WASM_ADDRESS_SPACE_WASM_VAR, with value 1.  SROA will mostly lift
these allocations to SSA locals, but any alloca that reaches instruction
selection (usually in non-optimized builds) will be assigned the new
TargetStackID there.  Loads and stores to those values are transformed
to new WebAssemblyISD::LOCAL_GET / WebAssemblyISD::LOCAL_SET nodes,
which then lower to the type-specific LOCAL_GET_I32 etc instructions via
tablegen patterns.

Differential Revision: https://reviews.llvm.org/D101140
2021-06-01 11:31:39 +02:00
..
benchmarks
bindings [SanitizeCoverage] Add support for NoSanitizeCoverage function attribute 2021-05-25 12:57:14 +02:00
cmake Pass -gcodeview-ghash when using clang-cl and lld-link 2021-05-27 20:49:17 -07:00
docs [LangRef] update according to unwinding support in inline asm 2021-05-31 09:01:46 +01:00
examples [ORC] Update SpeculativeJIT example for dispatchTask changes in 5344c88dcb. 2021-05-10 09:30:46 -07:00
include [WebAssembly][CodeGen] IR support for WebAssembly local variables 2021-06-01 11:31:39 +02:00
lib [WebAssembly][CodeGen] IR support for WebAssembly local variables 2021-06-01 11:31:39 +02:00
projects
resources
runtimes
test [WebAssembly][CodeGen] IR support for WebAssembly local variables 2021-06-01 11:31:39 +02:00
tools [MCA][NFCI] Minor changes to InstrBuilder and Instruction. 2021-05-31 17:05:13 +01:00
unittests [VP] Make getMaskParamPos/getVectorLengthParamPos return unsigned. Lowercase function names. 2021-05-28 11:28:47 -07:00
utils [libcxx] [test] Fix the _supportsVerify check on Windows by fixing quoting 2021-06-01 09:51:41 +03:00
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt [CMake] Don't LTO optimize targets that aren't part of any distribution 2021-05-19 15:02:11 -07:00
CODE_OWNERS.TXT
CREDITS.TXT
LICENSE.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.