diff options
author | Alex Lorenz <arphaman@gmail.com> | 2015-07-28 17:09:52 +0000 |
---|---|---|
committer | Alex Lorenz <arphaman@gmail.com> | 2015-07-28 17:09:52 +0000 |
commit | 41df7d3d10ed4a6a1ef26248ca2a5732fab7c77a (patch) | |
tree | 933cd100b22baf129144872481fdef17123d7377 /llvm/lib/CodeGen/MIRParser | |
parent | 82a1cfdca26afd5c9278b4640250e27369f9dd80 (diff) | |
download | bcm5719-llvm-41df7d3d10ed4a6a1ef26248ca2a5732fab7c77a.tar.gz bcm5719-llvm-41df7d3d10ed4a6a1ef26248ca2a5732fab7c77a.zip |
MIR Parser: Extract the method 'parseGlobalValue'. NFC.
This commit extracts the code that parses a global value from the method
'parseGlobalAddressOperand' into a new method 'parseGlobalValue', so that this
code can be reused by the method which will parse the block address machine
operands.
llvm-svn: 243450
Diffstat (limited to 'llvm/lib/CodeGen/MIRParser')
-rw-r--r-- | llvm/lib/CodeGen/MIRParser/MIParser.cpp | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/llvm/lib/CodeGen/MIRParser/MIParser.cpp b/llvm/lib/CodeGen/MIRParser/MIParser.cpp index 1bdaedb5d3a..6fb4fdddbc7 100644 --- a/llvm/lib/CodeGen/MIRParser/MIParser.cpp +++ b/llvm/lib/CodeGen/MIRParser/MIParser.cpp @@ -113,6 +113,7 @@ public: bool parseMBBOperand(MachineOperand &Dest); bool parseStackObjectOperand(MachineOperand &Dest); bool parseFixedStackObjectOperand(MachineOperand &Dest); + bool parseGlobalValue(GlobalValue *&GV); bool parseGlobalAddressOperand(MachineOperand &Dest); bool parseConstantPoolIndexOperand(MachineOperand &Dest); bool parseJumpTableIndexOperand(MachineOperand &Dest); @@ -576,18 +577,17 @@ bool MIParser::parseFixedStackObjectOperand(MachineOperand &Dest) { return false; } -bool MIParser::parseGlobalAddressOperand(MachineOperand &Dest) { +bool MIParser::parseGlobalValue(GlobalValue *&GV) { switch (Token.kind()) { 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 '@") + - Token.rawStringValue() + "'"); + GV = M->getNamedValue(Name); + if (!GV) + return error(Twine("use of undefined global value '@") + + Token.rawStringValue() + "'"); + break; } case MIToken::GlobalValue: { unsigned GVIdx; @@ -596,13 +596,20 @@ bool MIParser::parseGlobalAddressOperand(MachineOperand &Dest) { if (GVIdx >= IRSlots.GlobalValues.size()) return error(Twine("use of undefined global value '@") + Twine(GVIdx) + "'"); - Dest = MachineOperand::CreateGA(IRSlots.GlobalValues[GVIdx], - /*Offset=*/0); + GV = IRSlots.GlobalValues[GVIdx]; break; } default: llvm_unreachable("The current token should be a global value"); } + return false; +} + +bool MIParser::parseGlobalAddressOperand(MachineOperand &Dest) { + GlobalValue *GV = nullptr; + if (parseGlobalValue(GV)) + return true; + Dest = MachineOperand::CreateGA(GV, /*Offset=*/0); // TODO: Parse offset and target flags. lex(); return false; |