diff options
author | Nathan Gauër <brioche@google.com> | 2024-10-30 14:57:32 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-30 14:57:32 +0100 |
commit | cba70550ccf55c6ad3daa621bb8caf3c4ca6cbd7 (patch) | |
tree | e9ae30d295609eda1e9cc13fe23248e5ba1b9a7d /llvm/lib/Transforms/Utils/InlineFunction.cpp | |
parent | 8d406d882d49204cf76ed6406610c702db6e3e8e (diff) | |
download | llvm-cba70550ccf55c6ad3daa621bb8caf3c4ca6cbd7.zip llvm-cba70550ccf55c6ad3daa621bb8caf3c4ca6cbd7.tar.gz llvm-cba70550ccf55c6ad3daa621bb8caf3c4ca6cbd7.tar.bz2 |
[SPIR-V] Fix BB ordering & register lifetime (#111026)
The "topological" sorting was behaving incorrectly in some cases:
the exit of a loop could have a lower rank than a node in the loop.
This causes issues when structurizing some patterns, and also codegen
issues as we could generate BBs in the incorrect order in regard to the
SPIR-V spec.
Fixing this ordering alone broke other parts of the structurizer, which
by luck worked. Had to fix those.
Added more test cases, especially to test basic patterns.
I also needed to tweak/disable some tests for 2 reasons:
- SPIR-V now required reg2mem/mem2reg to run. Meaning dead stores
are optimized away. Some tests require tweaks to avoid having the
whole function removed.
- Mem2Reg will generate variable & load/stores. This generates
G_BITCAST in several cases. And there is currently something wrong
we do with G_BITCAST which causes MIR verifier to complain.
Until this is resolved, I disabled -verify-machineinstrs flag on
those tests.
---------
Signed-off-by: Nathan Gauër <brioche@google.com>
Diffstat (limited to 'llvm/lib/Transforms/Utils/InlineFunction.cpp')
0 files changed, 0 insertions, 0 deletions