mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-04-02 10:33:53 +00:00
rename ParseOptionalCustomMetadata -> ParseInstructionMetadata,
and make it non-optional. This fixes the bug where we'd accept and ignore a spurious comma after some instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@92300 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a7d7f2c023
commit
b8c4686a46
@ -1063,14 +1063,13 @@ bool LLParser::ParseOptionalCallingConv(CallingConv::ID &CC) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ParseOptionalCustomMetadata
|
||||
/// ::= /* empty */
|
||||
/// ParseInstructionMetadata
|
||||
/// ::= !dbg !42 (',' !dbg !57)*
|
||||
bool LLParser::ParseOptionalCustomMetadata() {
|
||||
if (Lex.getKind() != lltok::MetadataVar)
|
||||
return false;
|
||||
bool LLParser::ParseInstructionMetadata() {
|
||||
do {
|
||||
if (Lex.getKind() != lltok::MetadataVar)
|
||||
return TokError("expected metadata after comma");
|
||||
|
||||
while (1) {
|
||||
std::string Name = Lex.getStrVal();
|
||||
Lex.Lex();
|
||||
|
||||
@ -1083,13 +1082,8 @@ bool LLParser::ParseOptionalCustomMetadata() {
|
||||
MDsOnInst.push_back(std::make_pair(MDK, Node));
|
||||
|
||||
// If this is the end of the list, we're done.
|
||||
if (!EatIfPresent(lltok::comma))
|
||||
return false;
|
||||
|
||||
// The next value must be a custom metadata id.
|
||||
if (Lex.getKind() != lltok::MetadataVar)
|
||||
return TokError("expected more custom metadata ids");
|
||||
}
|
||||
} while (EatIfPresent(lltok::comma));
|
||||
return false;
|
||||
}
|
||||
|
||||
/// ParseOptionalAlignment
|
||||
@ -1113,7 +1107,7 @@ bool LLParser::ParseOptionalInfo(unsigned &Alignment) {
|
||||
// FIXME: Handle customized metadata info attached with an instruction.
|
||||
do {
|
||||
if (Lex.getKind() == lltok::MetadataVar) {
|
||||
if (ParseOptionalCustomMetadata()) return true;
|
||||
if (ParseInstructionMetadata()) return true;
|
||||
} else if (Lex.getKind() == lltok::kw_align) {
|
||||
if (ParseOptionalAlignment(Alignment)) return true;
|
||||
} else
|
||||
@ -2820,16 +2814,13 @@ bool LLParser::ParseBasicBlock(PerFunctionState &PFS) {
|
||||
// With a normal result, we check to see if the instruction is followed by
|
||||
// a comma and metadata.
|
||||
if (EatIfPresent(lltok::comma))
|
||||
if (ParseOptionalCustomMetadata())
|
||||
if (ParseInstructionMetadata())
|
||||
return true;
|
||||
break;
|
||||
case InstExtraComma:
|
||||
// If the instruction parser ate an extra comma at the end of it, it
|
||||
// *must* be followed by metadata.
|
||||
if (Lex.getKind() != lltok::MetadataVar)
|
||||
return TokError("expected metadata after comma");
|
||||
// Parse it.
|
||||
if (ParseOptionalCustomMetadata())
|
||||
if (ParseInstructionMetadata())
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
|
@ -171,7 +171,7 @@ namespace llvm {
|
||||
bool ParseOptionalVisibility(unsigned &Visibility);
|
||||
bool ParseOptionalCallingConv(CallingConv::ID &CC);
|
||||
bool ParseOptionalAlignment(unsigned &Alignment);
|
||||
bool ParseOptionalCustomMetadata();
|
||||
bool ParseInstructionMetadata();
|
||||
bool ParseOptionalInfo(unsigned &Alignment);
|
||||
bool ParseIndexList(SmallVectorImpl<unsigned> &Indices,bool &AteExtraComma);
|
||||
bool ParseIndexList(SmallVectorImpl<unsigned> &Indices) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user