diff options
Diffstat (limited to 'llvm/lib/AsmParser/LLParser.h')
| -rw-r--r-- | llvm/lib/AsmParser/LLParser.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/llvm/lib/AsmParser/LLParser.h b/llvm/lib/AsmParser/LLParser.h index 235e2642ef2..6e410d05cd2 100644 --- a/llvm/lib/AsmParser/LLParser.h +++ b/llvm/lib/AsmParser/LLParser.h @@ -88,10 +88,11 @@ namespace llvm { void assign(FieldTy Val) { Seen = true; - this->Val = Val; + this->Val = std::move(Val); } - explicit MDFieldImpl(FieldTy Default) : Val(Default), Seen(false) {} + explicit MDFieldImpl(FieldTy Default) + : Val(std::move(Default)), Seen(false) {} }; template <class NumTy> struct MDUnsignedField : public MDFieldImpl<NumTy> { typedef typename MDUnsignedField::ImplTy ImplTy; @@ -104,6 +105,12 @@ namespace llvm { struct MDField : public MDFieldImpl<Metadata *> { MDField() : ImplTy(nullptr) {} }; + struct MDStringField : public MDFieldImpl<std::string> { + MDStringField() : ImplTy(std::string()) {} + }; + struct MDFieldList : public MDFieldImpl<SmallVector<Metadata *, 4>> { + MDFieldList() : ImplTy(SmallVector<Metadata *, 4>()) {} + }; class LLParser { public: @@ -421,6 +428,8 @@ namespace llvm { bool ParseMDField(LocTy Loc, StringRef Name, MDUnsignedField<uint32_t> &Result); bool ParseMDField(LocTy Loc, StringRef Name, MDField &Result); + bool ParseMDField(LocTy Loc, StringRef Name, MDStringField &Result); + bool ParseMDField(LocTy Loc, StringRef Name, MDFieldList &Result); template <class FieldTy> bool ParseMDField(StringRef Name, FieldTy &Result); template <class ParserTy> bool ParseMDFieldsImplBody(ParserTy parseField); @@ -428,6 +437,7 @@ namespace llvm { bool ParseMDFieldsImpl(ParserTy parseField, LocTy &ClosingLoc); bool ParseSpecializedMDNode(MDNode *&N, bool IsDistinct = false); bool ParseMDLocation(MDNode *&Result, bool IsDistinct); + bool ParseGenericDebugNode(MDNode *&Result, bool IsDistinct); // Function Parsing. struct ArgInfo { |

