diff options
Diffstat (limited to 'llvm/lib/AsmParser/LLParser.cpp')
| -rw-r--r-- | llvm/lib/AsmParser/LLParser.cpp | 33 |
1 files changed, 31 insertions, 2 deletions
diff --git a/llvm/lib/AsmParser/LLParser.cpp b/llvm/lib/AsmParser/LLParser.cpp index be1db2233d2..59e3c0ec8cf 100644 --- a/llvm/lib/AsmParser/LLParser.cpp +++ b/llvm/lib/AsmParser/LLParser.cpp @@ -3513,12 +3513,41 @@ bool LLParser::ParseMDNamespace(MDNode *&Result, bool IsDistinct) { return false; } +/// ParseMDTemplateTypeParameter: +/// ::= !MDTemplateTypeParameter(scope: !0, name: "Ty", type: !1) bool LLParser::ParseMDTemplateTypeParameter(MDNode *&Result, bool IsDistinct) { - return TokError("unimplemented parser"); +#define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \ + REQUIRED(scope, MDField, ); \ + OPTIONAL(name, MDStringField, ); \ + REQUIRED(type, MDField, ); + PARSE_MD_FIELDS(); +#undef VISIT_MD_FIELDS + + Result = GET_OR_DISTINCT(MDTemplateTypeParameter, + (Context, scope.Val, name.Val, type.Val)); + return false; } + +/// ParseMDTemplateValueParameter: +/// ::= !MDTemplateValueParameter(tag: DW_TAG_template_value_parameter, +/// scope: !0, name: "V", type: !1, +/// value: i32 7) bool LLParser::ParseMDTemplateValueParameter(MDNode *&Result, bool IsDistinct) { - return TokError("unimplemented parser"); +#define VISIT_MD_FIELDS(OPTIONAL, REQUIRED) \ + REQUIRED(tag, DwarfTagField, ); \ + REQUIRED(scope, MDField, ); \ + OPTIONAL(name, MDStringField, ); \ + REQUIRED(type, MDField, ); \ + REQUIRED(value, MDField, ); + PARSE_MD_FIELDS(); +#undef VISIT_MD_FIELDS + + Result = GET_OR_DISTINCT( + MDTemplateValueParameter, + (Context, tag.Val, scope.Val, name.Val, type.Val, value.Val)); + return false; } + bool LLParser::ParseMDGlobalVariable(MDNode *&Result, bool IsDistinct) { return TokError("unimplemented parser"); } |

