#include "LLLexer.h"
#include "llvm/Module.h"
#include "llvm/Type.h"
+#include "llvm/Support/ValueHandle.h"
#include <map>
namespace llvm {
std::map<unsigned, std::pair<PATypeHolder, LocTy> > ForwardRefTypeIDs;
std::vector<PATypeHolder> NumberedTypes;
/// MetadataCache - This map keeps track of parsed metadata constants.
- std::map<unsigned, MetadataBase *> MetadataCache;
- std::map<unsigned, std::pair<MetadataBase *, LocTy> > ForwardRefMDNodes;
+ std::map<unsigned, TrackingVH<MDNode> > MetadataCache;
+ std::map<unsigned, std::pair<TrackingVH<MDNode>, LocTy> > ForwardRefMDNodes;
SmallVector<std::pair<unsigned, MDNode *>, 2> MDsOnInst;
struct UpRefRecord {
/// Loc - This is the location of the upref.
bool ParseAlias(const std::string &Name, LocTy Loc, unsigned Visibility);
bool ParseStandaloneMetadata();
bool ParseNamedMetadata();
- bool ParseMDString(MetadataBase *&S);
- bool ParseMDNode(MetadataBase *&N);
+ bool ParseMDString(MDString *&Result);
+ bool ParseMDNode(MDNode *&Result);
// Type Parsing.
bool ParseType(PATypeHolder &Result, bool AllowVoid = false);
LocTy Loc;
return ParseTypeAndBasicBlock(BB, Loc, PFS);
}
-
+
+ bool ParseInlineMetadata(Value *&V, PerFunctionState &PFS);
+
struct ParamInfo {
LocTy Loc;
Value *V;