[llvm] [SPIR-V] Fix BB ordering & register lifetime (PR #111026)
Nathan Gauër via llvm-commits
llvm-commits at lists.llvm.org
Tue Oct 29 08:48:14 PDT 2024
================
@@ -447,55 +439,51 @@ class SPIRVStructurizer : public FunctionPass {
// clang-format on
std::vector<Edge>
createAliasBlocksForComplexEdges(std::vector<Edge> Edges) {
- std::unordered_map<BasicBlock *, BasicBlock *> Seen;
+ std::unordered_set<BasicBlock *> Seen;
std::vector<Edge> Output;
Output.reserve(Edges.size());
for (auto &[Src, Dst] : Edges) {
- auto [iterator, inserted] = Seen.insert({Src, Dst});
- if (inserted) {
- Output.emplace_back(Src, Dst);
- continue;
+ auto [iterator, inserted] = Seen.insert(Src);
+ if (!inserted) {
+ // Src already a source node. Cannot have 2 edges from A to B.
+ // Creating alias source block.
+ BasicBlock *NewSrc =
+ BasicBlock::Create(F.getContext(), "new.src", &F);
----------------
Keenuts wrote:
The name is automatically suffixed with a number if another block is already named "new.src".
I wanted to be able to know where a block came from when reading LLVM-IR, but also something simple.
Something I can also do is to prefix the name with the block it relates to. Simple, and helps even more.
https://github.com/llvm/llvm-project/pull/111026
More information about the llvm-commits
mailing list