@@ -24,6 +24,7 @@ MDNode* CreateNode(const std::vector<val> &vec, Module* module, StringRef name);
24
24
template <typename val, size_t s>
25
25
MDNode* CreateNode (const std::array<val, s> &arr, Module* module, StringRef name);
26
26
MDNode* CreateNode (Value* val, Module* module, StringRef name);
27
+ MDNode* CreateNode (StructType* Ty, Module* module, StringRef name);
27
28
template <typename Key, typename Value>
28
29
MDNode* CreateNode (const std::map < Key, Value> &FuncMD, Module* module, StringRef name);
29
30
MDNode* CreateNode (const std::string &s, Module* module, StringRef name);
@@ -44,6 +45,7 @@ template<typename T, size_t s>
44
45
void readNode (std::array<T, s> &arr, MDNode* node);
45
46
void readNode (Function* &funcPtr, MDNode* node);
46
47
void readNode (GlobalVariable* &globalVar, MDNode* node);
48
+ void readNode (StructType* &Ty, MDNode* node);
47
49
48
50
template <typename Key, typename Value>
49
51
void readNode (std::map<Key, Value> &funcMD, MDNode* node);
@@ -184,6 +186,17 @@ MDNode* CreateNode(Value* val, Module* module, StringRef name)
184
186
return node;
185
187
}
186
188
189
+ MDNode* CreateNode (StructType* Ty, Module* module, StringRef name)
190
+ {
191
+ Metadata* v[] =
192
+ {
193
+ MDString::get (module->getContext (), name),
194
+ ValueAsMetadata::get (UndefValue::get (Ty))
195
+ };
196
+ MDNode* node = MDNode::get (module->getContext (), v);
197
+ return node;
198
+ }
199
+
187
200
template <typename Key, typename Value>
188
201
MDNode* CreateNode (const std::map < Key, Value> &FuncMD, Module* module, StringRef name)
189
202
{
@@ -298,6 +311,13 @@ void readNode(GlobalVariable* &globalVar, MDNode* node)
298
311
globalVar = cast<GlobalVariable>(v);
299
312
}
300
313
314
+ void readNode (StructType*& Ty, MDNode* node)
315
+ {
316
+ ValueAsMetadata* pVal = cast<ValueAsMetadata>(node->getOperand (1 ));
317
+ Value* v = pVal->getValue ();
318
+ Ty = cast<StructType>(v->getType ());
319
+ }
320
+
301
321
template <typename Key, typename Value>
302
322
void readNode (std::map<Key, Value> &keyMD, MDNode* node)
303
323
{
0 commit comments