X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FAsmParser%2FLLParser.h;h=5e92e570e7267c5025d72d50bc7af98f2192c9db;hb=a342d827bd3e42a82881d04e9b130792669bc1b0;hp=a19fc2e924c15b0086df69b6ff52fe9f4ef29bbd;hpb=d0517feb774ca0e40c380c1865ed4e093d4c4260;p=oota-llvm.git diff --git a/lib/AsmParser/LLParser.h b/lib/AsmParser/LLParser.h index a19fc2e924c..5e92e570e72 100644 --- a/lib/AsmParser/LLParser.h +++ b/lib/AsmParser/LLParser.h @@ -108,10 +108,10 @@ namespace llvm { // Type resolution handling data structures. The location is set when we // have processed a use of the type but not a definition yet. StringMap > NamedTypes; - std::vector > NumberedTypes; + std::map > NumberedTypes; - std::vector NumberedMetadata; - std::map> ForwardRefMDNodes; + std::map NumberedMetadata; + std::map> ForwardRefMDNodes; // Global Value reference information. std::map > ForwardRefVals; @@ -265,7 +265,6 @@ namespace llvm { bool ParseNamedMetadata(); bool ParseMDString(MDString *&Result); bool ParseMDNodeID(MDNode *&Result); - bool ParseMDNodeID(MDNode *&Result, unsigned &SlotNo); bool ParseUnnamedAttrGrp(); bool ParseFnAttributeValuePairs(AttrBuilder &B, std::vector &FwdRefAttrGrps, @@ -386,12 +385,28 @@ namespace llvm { bool ParseGlobalValueVector(SmallVectorImpl &Elts); bool parseOptionalComdat(StringRef GlobalName, Comdat *&C); bool ParseMetadataAsValue(Value *&V, PerFunctionState &PFS); - bool ParseValueAsMetadata(Metadata *&MD, PerFunctionState *PFS); + bool ParseValueAsMetadata(Metadata *&MD, const Twine &TypeMsg, + PerFunctionState *PFS); bool ParseMetadata(Metadata *&MD, PerFunctionState *PFS); - bool ParseMDNode(MDNode *&MD, bool IsDistinct = false); + bool ParseMDTuple(MDNode *&MD, bool IsDistinct = false); + bool ParseMDNode(MDNode *&MD); + bool ParseMDNodeTail(MDNode *&MD); bool ParseMDNodeVector(SmallVectorImpl &MDs); bool ParseInstructionMetadata(Instruction *Inst, PerFunctionState *PFS); + template + bool ParseMDField(LocTy Loc, StringRef Name, FieldTy &Result); + template bool ParseMDField(StringRef Name, FieldTy &Result); + template + bool ParseMDFieldsImplBody(ParserTy parseField); + template + bool ParseMDFieldsImpl(ParserTy parseField, LocTy &ClosingLoc); + bool ParseSpecializedMDNode(MDNode *&N, bool IsDistinct = false); + +#define HANDLE_SPECIALIZED_MDNODE_LEAF(CLASS) \ + bool Parse##CLASS(MDNode *&Result, bool IsDistinct); +#include "llvm/IR/Metadata.def" + // Function Parsing. struct ArgInfo { LocTy Loc;