diff options
| author | Giuseppe Rossini <giuseppe.rossini@amd.com> | 2024-07-02 17:12:33 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-07-02 17:12:33 +0100 |
| commit | 6c3897d90eda4c39789ac9f4efa51db46734a249 (patch) | |
| tree | 60ae5326a5b02b9d45f12a5e630a7ca0755fdce4 /lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp | |
| parent | 123beb7926651217024e5db58b93ab9e8f3c77c7 (diff) | |
| download | llvm-6c3897d90eda4c39789ac9f4efa51db46734a249.zip llvm-6c3897d90eda4c39789ac9f4efa51db46734a249.tar.gz llvm-6c3897d90eda4c39789ac9f4efa51db46734a249.tar.bz2 | |
Fix block merging (#96871)
With this PR I am trying to address:
https://github.com/llvm/llvm-project/issues/63230.
What changed:
- While merging identical blocks, don't add a block argument if it is
"identical" to another block argument. I.e., if the two block arguments
refer to the same `Value`. The operations operands in the block will
point to the argument we already inserted
- After merged the blocks, get rid of "unnecessary" arguments. I.e., if
all the predecessors pass the same block argument, there is no need to
pass it as an argument.
- This last simplification clashed with
`BufferDeallocationSimplification`. The reason, I think, is that the two
simplifications are clashing. I.e., `BufferDeallocationSimplification`
contains an analysis based on the block structure. If we simplify the
block structure (by merging and/or dropping block arguments) the
analysis is invalid . The solution I found is to do a more prudent
simplification when running that pass.
**Note**: many tests are still not passing. But I wanted to submit the
code before changing all the tests (and probably adding a couple), so
that we can agree in principle on the algorithm/design.
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp')
0 files changed, 0 insertions, 0 deletions
