diff options
Diffstat (limited to 'backend/lib/MIR/MIRMetadataTextParser.cpp')
| -rw-r--r-- | backend/lib/MIR/MIRMetadataTextParser.cpp | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/backend/lib/MIR/MIRMetadataTextParser.cpp b/backend/lib/MIR/MIRMetadataTextParser.cpp index 51b039f..7875b06 100644 --- a/backend/lib/MIR/MIRMetadataTextParser.cpp +++ b/backend/lib/MIR/MIRMetadataTextParser.cpp @@ -74,11 +74,11 @@ Expected<MachineDIExpression> MetadataTextParser::parseExpression() { while (!at(MITokenKind::RightParen)) { if (at(MITokenKind::Identifier)) { const auto Opcode = parseDIExpressionOpcodeName(token().stringValue()); - if (!Opcode) { - return makeUnexpected(ErrorCode::ParseError, "unknown DIExpression opcode '" + - std::string(token().stringValue()) + "'"); - } - Elements.push_back(*Opcode); + const auto Encoding = parseDIExpressionAttributeEncodingName(token().stringValue()); + if (!Opcode && !Encoding) + return makeUnexpected(ErrorCode::ParseError, + invalidDIExpressionElementMessage(token().stringValue())); + Elements.push_back(Opcode ? *Opcode : *Encoding); advance(); } else if (at(MITokenKind::IntegerLiteral)) { std::int64_t Signed = 0; |
