[llvm] r226539 - AsmParser: PARSE_MD_FIELD() => ParseMDField(), NFC
Duncan P. N. Exon Smith
dexonsmith at apple.com
Mon Jan 19 18:42:29 PST 2015
Author: dexonsmith
Date: Mon Jan 19 20:42:29 2015
New Revision: 226539
URL: http://llvm.org/viewvc/llvm-project?rev=226539&view=rev
Log:
AsmParser: PARSE_MD_FIELD() => ParseMDField(), NFC
Extract most of `PARSE_MD_FIELD()` into a function.
Modified:
llvm/trunk/lib/AsmParser/LLParser.cpp
llvm/trunk/lib/AsmParser/LLParser.h
Modified: llvm/trunk/lib/AsmParser/LLParser.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.cpp?rev=226539&r1=226538&r2=226539&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.cpp (original)
+++ llvm/trunk/lib/AsmParser/LLParser.cpp Mon Jan 19 20:42:29 2015
@@ -2972,6 +2972,16 @@ bool LLParser::ParseMDFieldsImpl(ParserT
return ParseToken(lltok::rparen, "expected ')' here");
}
+template <class FieldTy>
+bool LLParser::ParseMDField(StringRef Name, FieldTy &Result) {
+ if (Result.Seen)
+ return TokError("field '" + Name + "' cannot be specified more than once");
+
+ LocTy Loc = Lex.getLoc();
+ Lex.Lex();
+ return ParseMDField(Loc, Name, Result);
+}
+
bool LLParser::ParseSpecializedMDNode(MDNode *&N, bool IsDistinct) {
assert(Lex.getKind() == lltok::MetadataVar && "Expected metadata type name");
#define DISPATCH_TO_PARSER(CLASS) \
@@ -2990,19 +3000,8 @@ bool LLParser::ParseSpecializedMDNode(MD
if (!NAME.Seen) \
return Error(ClosingLoc, "missing required field '" #NAME "'");
#define PARSE_MD_FIELD(NAME, TYPE, DEFAULT) \
- do { \
- if (Lex.getStrVal() == #NAME) { \
- if (NAME.Seen) \
- return TokError("field '" #NAME \
- "' cannot be specified more than once"); \
- \
- LocTy Loc = Lex.getLoc(); \
- Lex.Lex(); \
- if (ParseMDField(Loc, #NAME, NAME)) \
- return true; \
- return false; \
- } \
- } while (0)
+ if (Lex.getStrVal() == #NAME) \
+ return ParseMDField(#NAME, NAME);
#define PARSE_MD_FIELDS() \
VISIT_MD_FIELDS(DECLARE_FIELD, DECLARE_FIELD) \
do { \
Modified: llvm/trunk/lib/AsmParser/LLParser.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/AsmParser/LLParser.h?rev=226539&r1=226538&r2=226539&view=diff
==============================================================================
--- llvm/trunk/lib/AsmParser/LLParser.h (original)
+++ llvm/trunk/lib/AsmParser/LLParser.h Mon Jan 19 20:42:29 2015
@@ -421,6 +421,7 @@ namespace llvm {
bool ParseMDField(LocTy Loc, StringRef Name,
MDUnsignedField<uint32_t> &Result);
bool ParseMDField(LocTy Loc, StringRef Name, MDField &Result);
+ template <class FieldTy> bool ParseMDField(StringRef Name, FieldTy &Result);
template <class ParserTy>
bool ParseMDFieldsImplBody(ParserTy parseField);
template <class ParserTy>
More information about the llvm-commits
mailing list