diff options
author | Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> | 2019-12-13 19:43:15 +0000 |
---|---|---|
committer | Alex Richardson <Alexander.Richardson@cl.cam.ac.uk> | 2019-12-13 21:40:03 +0000 |
commit | 11448eeb72e1392f9f4ad072866c2c6dc82d14bc (patch) | |
tree | a958c577d1cff796198e7348f122d2c4709a3f97 /lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h | |
parent | fc83f53a86d802fc2d56aac4eb3dc53998751042 (diff) | |
download | bcm5719-llvm-11448eeb72e1392f9f4ad072866c2c6dc82d14bc.tar.gz bcm5719-llvm-11448eeb72e1392f9f4ad072866c2c6dc82d14bc.zip |
[NFC] Use SelectionDAG::getMemBasePlusOffset() instead of getNode(ISD::ADD)
Summary:
To find potential opportunities to use getMemBasePlusOffset() I looked at
all ISD::ADD uses found with the regex getNode\(ISD::ADD,.+,.+Ptr
in lib/CodeGen/SelectionDAG. If this patch is accepted I will convert
the files in the individual backends too.
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/D71207
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/lldb-python.h')
0 files changed, 0 insertions, 0 deletions