case lltok::GlobalID: if (ParseUnnamedGlobal()) return true; break;
case lltok::GlobalVar: if (ParseNamedGlobal()) return true; break;
case lltok::exclaim: if (ParseStandaloneMetadata()) return true; break;
- case lltok::NamedOrCustomMD: if (ParseNamedMetadata()) return true; break;
+ case lltok::MetadataVar: if (ParseNamedMetadata()) return true; break;
// The Global variable production with no name can have many different
// optional leading prefixes, the production is:
/// ParseNamedMetadata:
/// !foo = !{ !1, !2 }
bool LLParser::ParseNamedMetadata() {
- assert(Lex.getKind() == lltok::NamedOrCustomMD);
- Lex.Lex();
+ assert(Lex.getKind() == lltok::MetadataVar);
std::string Name = Lex.getStrVal();
+ Lex.Lex();
if (ParseToken(lltok::equal, "expected '=' here") ||
ParseToken(lltok::exclaim, "Expected '!' here") ||
/// ::= /* empty */
/// ::= !dbg !42 (',' !dbg !57)*
bool LLParser::ParseOptionalCustomMetadata() {
- if (Lex.getKind() != lltok::NamedOrCustomMD)
+ if (Lex.getKind() != lltok::MetadataVar)
return false;
while (1) {
return false;
// The next value must be a custom metadata id.
- if (Lex.getKind() != lltok::NamedOrCustomMD)
+ if (Lex.getKind() != lltok::MetadataVar)
return TokError("expected more custom metadata ids");
}
}
// FIXME: Handle customized metadata info attached with an instruction.
do {
- if (Lex.getKind() == lltok::NamedOrCustomMD) {
+ if (Lex.getKind() == lltok::MetadataVar) {
if (ParseOptionalCustomMetadata()) return true;
} else if (Lex.getKind() == lltok::kw_align) {
if (ParseOptionalAlignment(Alignment)) return true;
return TokError("expected ',' as start of index list");
while (EatIfPresent(lltok::comma)) {
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ // FIXME: TERRIBLE HACK. Loses comma state.
+ if (Lex.getKind() == lltok::MetadataVar)
break;
unsigned Idx;
if (ParseUInt32(Idx)) return true;
ParseIndexList(Indices) ||
ParseToken(lltok::rparen, "expected ')' in extractvalue constantexpr"))
return true;
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ // FIXME: THIS ISN'T RIGHT? WHERE IS THE COMMA?
+ if (Lex.getKind() == lltok::MetadataVar)
if (ParseOptionalCustomMetadata()) return true;
if (!isa<StructType>(Val->getType()) && !isa<ArrayType>(Val->getType()))
ParseIndexList(Indices) ||
ParseToken(lltok::rparen, "expected ')' in insertvalue constantexpr"))
return true;
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
if (ParseOptionalCustomMetadata()) return true;
if (!isa<StructType>(Val0->getType()) && !isa<ArrayType>(Val0->getType()))
return Error(ID.Loc, "extractvalue operand must be array or struct");
if (EatIfPresent(lltok::comma)) {
// Parse optional custom metadata, e.g. !dbg
- if (Lex.getKind() == lltok::NamedOrCustomMD) {
+ if (Lex.getKind() == lltok::MetadataVar) {
if (ParseOptionalCustomMetadata()) return true;
} else {
// The normal case is one return value.
do {
// If optional custom metadata, e.g. !dbg is seen then this is the
// end of MRV.
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
break;
if (ParseTypeAndValue(RV, PFS)) return true;
RVs.push_back(RV);
if (!EatIfPresent(lltok::comma))
break;
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
break;
if (ParseToken(lltok::lsquare, "expected '[' in phi value list") ||
return true;
}
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
if (ParseOptionalCustomMetadata()) return true;
if (!Ty->isFirstClassType())
if (EatIfPresent(lltok::comma)) {
if (Lex.getKind() == lltok::kw_align
- || Lex.getKind() == lltok::NamedOrCustomMD) {
+ || Lex.getKind() == lltok::MetadataVar) {
if (ParseOptionalInfo(Alignment)) return true;
} else {
if (ParseTypeAndValue(Size, SizeLoc, PFS)) return true;
SmallVector<Value*, 16> Indices;
while (EatIfPresent(lltok::comma)) {
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
break;
if (ParseTypeAndValue(Val, EltLoc, PFS)) return true;
if (!isa<IntegerType>(Val->getType()))
return Error(EltLoc, "getelementptr index must be an integer");
Indices.push_back(Val);
}
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
if (ParseOptionalCustomMetadata()) return true;
if (!GetElementPtrInst::getIndexedType(Ptr->getType(),
if (ParseTypeAndValue(Val, Loc, PFS) ||
ParseIndexList(Indices))
return true;
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
if (ParseOptionalCustomMetadata()) return true;
if (!isa<StructType>(Val->getType()) && !isa<ArrayType>(Val->getType()))
ParseTypeAndValue(Val1, Loc1, PFS) ||
ParseIndexList(Indices))
return true;
- if (Lex.getKind() == lltok::NamedOrCustomMD)
+ if (Lex.getKind() == lltok::MetadataVar)
if (ParseOptionalCustomMetadata()) return true;
if (!isa<StructType>(Val0->getType()) && !isa<ArrayType>(Val0->getType()))