aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Transforms/Utils/InlineFunction.cpp
diff options
context:
space:
mode:
authorNathan Gauër <brioche@google.com>2024-10-30 14:57:32 +0100
committerGitHub <noreply@github.com>2024-10-30 14:57:32 +0100
commitcba70550ccf55c6ad3daa621bb8caf3c4ca6cbd7 (patch)
treee9ae30d295609eda1e9cc13fe23248e5ba1b9a7d /llvm/lib/Transforms/Utils/InlineFunction.cpp
parent8d406d882d49204cf76ed6406610c702db6e3e8e (diff)
downloadllvm-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