[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