@@ -79,7 +79,7 @@ Node *Emitter::emit(const llvm::Value *value) {
7979 Node *emittedNode = nullptr ;
8080
8181 if (const auto *instruction = llvm::dyn_cast<llvm::Instruction>(value)) {
82- emittedNode = builder. newInstructionNode ( );
82+ emittedNode = instructionNode (value );
8383 fillIn (instruction, emittedNode);
8484 dispatchInstruction (instruction, emittedNode);
8585 for (unsigned i = 0 ; i < instruction->getNumOperands (); i++) {
@@ -88,17 +88,17 @@ Node *Emitter::emit(const llvm::Value *value) {
8888 } else {
8989 switch (value->getValueID ()) {
9090 case llvm::Value::FunctionVal: {
91- emittedNode = builder. newFunctionNode ( );
91+ emittedNode = functionNode (value );
9292 fillIn (llvm::cast<llvm::Function>(value), emittedNode);
9393 } break ;
9494 case llvm::Value::BasicBlockVal: {
95- emittedNode = builder. newBasicBlockNode ( );
95+ emittedNode = basicBlockNode (value );
9696 fillIn (llvm::cast<llvm::BasicBlock>(value), emittedNode);
9797 } break ;
9898
9999#define GRAPHML_HANDLE_VALUE (Name ) \
100100 case Value::Name##Val: { \
101- emittedNode = builder. newValueNode (); \
101+ emittedNode = valueNode (value); \
102102 emittedNode->setValueKind (ValueKind::Name); \
103103 fillIn (llvm::cast<Name>(value), emittedNode); \
104104 } break ;
@@ -124,13 +124,36 @@ Node *Emitter::emit(const llvm::Value *value) {
124124 if (value->hasName () && emittedNode) {
125125 emittedNode->setName (value->getName ());
126126 }
127- emittedValues[value] = emittedNode;
128127 Node *typeNode = typeEmitter.emitType (value->getType ());
129128 builder.connectType (typeNode, emittedNode);
130129
131130 return emittedNode;
132131}
133132
133+ Node *Emitter::functionNode (const llvm::Value *value) {
134+ Node *node = builder.newFunctionNode ();
135+ emittedValues[value] = node;
136+ return node;
137+ }
138+
139+ Node *Emitter::basicBlockNode (const llvm::Value *value) {
140+ Node *node = builder.newBasicBlockNode ();
141+ emittedValues[value] = node;
142+ return node;
143+ }
144+
145+ Node *Emitter::instructionNode (const llvm::Value *value) {
146+ Node *node = builder.newInstructionNode ();
147+ emittedValues[value] = node;
148+ return node;
149+ }
150+
151+ Node *Emitter::valueNode (const llvm::Value *value) {
152+ Node *node = builder.newValueNode ();
153+ emittedValues[value] = node;
154+ return node;
155+ }
156+
134157// / Extension Points
135158
136159void Emitter::fillIn (const llvm::Module *module , llvm2graphml::Node *node) {
0 commit comments