summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/MIRParser/MIParser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/CodeGen/MIRParser/MIParser.cpp')
-rw-r--r--llvm/lib/CodeGen/MIRParser/MIParser.cpp25
1 files changed, 22 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
index 3b820c3cdee..b458a8b8882 100644
--- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp
+++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp
@@ -31,6 +31,22 @@ using namespace llvm;
namespace {
+struct StringValueUtility {
+ StringRef String;
+ std::string UnescapedString;
+
+ StringValueUtility(const MIToken &Token) {
+ if (Token.isStringValueQuoted()) {
+ Token.unescapeQuotedStringValue(UnescapedString);
+ String = UnescapedString;
+ return;
+ }
+ String = Token.stringValue();
+ }
+
+ operator StringRef() const { return String; }
+};
+
/// A wrapper struct around the 'MachineOperand' struct that includes a source
/// range.
struct MachineOperandWithLocation {
@@ -485,14 +501,16 @@ bool MIParser::parseFixedStackObjectOperand(MachineOperand &Dest) {
bool MIParser::parseGlobalAddressOperand(MachineOperand &Dest) {
switch (Token.kind()) {
- case MIToken::NamedGlobalValue: {
- auto Name = Token.stringValue();
+ case MIToken::NamedGlobalValue:
+ case MIToken::QuotedNamedGlobalValue: {
+ StringValueUtility Name(Token);
const Module *M = MF.getFunction()->getParent();
if (const auto *GV = M->getNamedValue(Name)) {
Dest = MachineOperand::CreateGA(GV, /*Offset=*/0);
break;
}
- return error(Twine("use of undefined global value '@") + Name + "'");
+ return error(Twine("use of undefined global value '@") +
+ Token.rawStringValue() + "'");
}
case MIToken::GlobalValue: {
unsigned GVIdx;
@@ -548,6 +566,7 @@ bool MIParser::parseMachineOperand(MachineOperand &Dest) {
return parseFixedStackObjectOperand(Dest);
case MIToken::GlobalValue:
case MIToken::NamedGlobalValue:
+ case MIToken::QuotedNamedGlobalValue:
return parseGlobalAddressOperand(Dest);
case MIToken::JumpTableIndex:
return parseJumpTableIndexOperand(Dest);
OpenPOWER on IntegriCloud