1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-22 18:54:02 +01:00
Go to file
Alex Richardson cd979516f8 [NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t
Summary:
This change is preparatory work to use this helper functions in more places.
Currently the function only allows positive offsets, but there are cases
where we want to subtract an offset from an existing pointer.

The motivation for this change is our out-of-tree CHERI backend
(https://github.com/CTSRD-CHERI/llvm-project). We use a separate register
type to store pointers (128-bit capabilities, which are effectively
unforgeable and monotonic fat pointers). These capabilities permit a
reduced set of operations and therefore use a separate ValueType (iFATPTR).
to represent pointers implemented as capabilities.
Therefore, we need to avoid using ISD::ADD for our patterns that operate
on pointers and need to use a function that chooses ISD::ADD or a new
ISD::PTRADD opcode depending on the value type.

We originally added a new DAG.getPointerAdd() function, but after this
patch series we can modify the implementation of getMemBasePlusOffset()
instead. Avoiding direct uses of ISD::ADD for pointer types will
significantly reduce the amount of assertion/instruction selection
failures for us in future upstream merges.

Reviewers: spatel

Reviewed By: spatel

Subscribers: merge_guards_bot, hiraditya, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D71204
2019-12-13 21:40:03 +00:00
benchmarks
bindings [llvm][bindings][go] Fix typo 2019-12-03 09:30:32 +01:00
cmake Don't call export_symbols.py with duplicate libs 2019-12-11 17:23:31 -05:00
docs [llvm-dwarfdump][Statistics] Don't count coverage less than 1% as 0% 2019-12-13 17:34:58 +03:00
examples [ORC] Remove the automagic Main JITDylib fram ExecutionSession. 2019-12-05 01:36:49 -08:00
include [NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t 2019-12-13 21:40:03 +00:00
lib [NFC] Change SelectionDAG::getMemBasePlusOffset() to use int64_t 2019-12-13 21:40:03 +00:00
projects
resources
runtimes
test [RISCV] Move DebugLoc Copy into CompressInstEmitter 2019-12-13 20:01:04 +00:00
tools [llvm-dwarfdump][Statistics] Don't count coverage less than 1% as 0% 2019-12-13 17:34:58 +03:00
unittests Revert "[VectorUtils] Introduce the Vector Function Database (VFDatabase)." 2019-12-13 19:42:04 +00:00
utils [RISCV] Move DebugLoc Copy into CompressInstEmitter 2019-12-13 20:01:04 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Revert "[Examples] Add IRTransformations directory to examples." 2019-12-01 22:20:20 +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.