[llvm] Refactoring llvm-ir2vec.cpp for better separation of concerns in the Tooling classes (PR #170078)

S. VenkataKeerthy via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 1 22:55:25 PST 2025


================
@@ -216,56 +222,139 @@ class IR2VecTool {
         unsigned Opcode = Vocabulary::getIndex(I.getOpcode());
         unsigned TypeID = Vocabulary::getIndex(I.getType()->getTypeID());
 
-        // Add "Next" relationship with previous instruction
         if (HasPrevOpcode) {
-          OS << PrevOpcode << '\t' << Opcode << '\t' << NextRelation << '\n';
+          Result.Triplets.push_back({PrevOpcode, Opcode, NextRelation});
           LLVM_DEBUG(dbgs()
-                     << Vocabulary::getVocabKeyForOpcode(PrevOpcode + 1) << '\t'
-                     << Vocabulary::getVocabKeyForOpcode(Opcode + 1) << '\t'
-                     << "Next\n");
+                    << Vocabulary::getVocabKeyForOpcode(PrevOpcode + 1) << '\t'
+                    << Vocabulary::getVocabKeyForOpcode(Opcode + 1) << '\t'
+                    << "Next\n");
         }
 
-        // Add "Type" relationship
-        OS << Opcode << '\t' << TypeID << '\t' << TypeRelation << '\n';
+        Result.Triplets.push_back({Opcode, TypeID, TypeRelation});
         LLVM_DEBUG(
             dbgs() << Vocabulary::getVocabKeyForOpcode(Opcode + 1) << '\t'
-                   << Vocabulary::getVocabKeyForTypeID(I.getType()->getTypeID())
-                   << '\t' << "Type\n");
+                  << Vocabulary::getVocabKeyForTypeID(I.getType()->getTypeID())
+                  << '\t' << "Type\n");
 
-        // Add "Arg" relationships
         unsigned ArgIndex = 0;
         for (const Use &U : I.operands()) {
           unsigned OperandID = Vocabulary::getIndex(*U.get());
           unsigned RelationID = ArgRelation + ArgIndex;
-          OS << Opcode << '\t' << OperandID << '\t' << RelationID << '\n';
+          Result.Triplets.push_back({Opcode, OperandID, RelationID});
 
           LLVM_DEBUG({
             StringRef OperandStr = Vocabulary::getVocabKeyForOperandKind(
                 Vocabulary::getOperandKind(U.get()));
             dbgs() << Vocabulary::getVocabKeyForOpcode(Opcode + 1) << '\t'
-                   << OperandStr << '\t' << "Arg" << ArgIndex << '\n';
+                  << OperandStr << '\t' << "Arg" << ArgIndex << '\n';
           });
 
           ++ArgIndex;
         }
-        // Only update MaxRelation if there were operands
+
         if (ArgIndex > 0) {
           MaxRelation = std::max(MaxRelation, ArgRelation + ArgIndex - 1);
         }
+
----------------
svkeerthy wrote:

Spurious \n.

https://github.com/llvm/llvm-project/pull/170078


More information about the llvm-commits mailing list