diff options
| author | Nikita Popov <npopov@redhat.com> | 2025-10-10 10:58:58 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-10 10:58:58 +0200 |
| commit | 6c2781e187b7a1e9a90f76009352c9f63fef4642 (patch) | |
| tree | b4b557e10ec67ababc1d9ecbe96bf3d4913e8d84 /lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h | |
| parent | c32753a77a724244bfac60405390a14c93fd92fa (diff) | |
| download | llvm-6c2781e187b7a1e9a90f76009352c9f63fef4642.zip llvm-6c2781e187b7a1e9a90f76009352c9f63fef4642.tar.gz llvm-6c2781e187b7a1e9a90f76009352c9f63fef4642.tar.bz2 | |
[GVN] Share equality propagation for assume and condition (#161639)
GVN currently has two different implementation of equality propagation.
One of them is used for branch conditions (dominating an edge), which
performs replacements across multiple blocks. This is also used for
assumes to handle uses outside the current block.
However, uses inside the block are handled using a completely separate
implementation, which involves populating a replacement map and then
checking it for individual instructions during normal GVN. While this
approach generally makes sense, it is kind of pointless if we already do
a use walk to handle the cross-block case anyway.
This PR generalizes propagateEquality() to accept either a
BasicBlockEdge or an Instruction* and replace dominated users. This
removes the need for special handling of uses in the same block for
assumes, as they're covered by instruction dominance, and ensures that
both implementations do not go out of sync.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonReadline.h')
0 files changed, 0 insertions, 0 deletions
