summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Sanders <daniel.sanders@imgtec.com>2016-05-09 13:10:57 +0000
committerDaniel Sanders <daniel.sanders@imgtec.com>2016-05-09 13:10:57 +0000
commitd044e49b375cadf4dc66b14393138a49d59f30e1 (patch)
tree6d44a3a711f2428b8d98c68bad3ecd33e93b68a9
parent2edca417c1f62633301e29433a72f9d3537bf9ce (diff)
downloadbcm5719-llvm-d044e49b375cadf4dc66b14393138a49d59f30e1.tar.gz
bcm5719-llvm-d044e49b375cadf4dc66b14393138a49d59f30e1.zip
[mips] Fix use after free and an unnecessary copy introduced in r268896.
llvm-svn: 268913
-rw-r--r--llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
index 1b61535c75a..bff46886dc7 100644
--- a/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
+++ b/llvm/lib/Target/Mips/AsmParser/MipsAsmParser.cpp
@@ -1322,8 +1322,9 @@ public:
return Op;
}
- static std::unique_ptr<MipsOperand>
- CreateRegPair(MipsOperand MOP, SMLoc S, SMLoc E, MipsAsmParser &Parser) {
+ static std::unique_ptr<MipsOperand> CreateRegPair(const MipsOperand &MOP,
+ SMLoc S, SMLoc E,
+ MipsAsmParser &Parser) {
auto Op = make_unique<MipsOperand>(k_RegPair, Parser);
Op->RegIdx.Index = MOP.RegIdx.Index;
Op->StartLoc = S;
@@ -4691,7 +4692,7 @@ MipsAsmParser::parseRegisterPair(OperandVector &Operands) {
return MatchOperand_ParseFail;
SMLoc E = Parser.getTok().getLoc();
- MipsOperand &Op = static_cast<MipsOperand &>(*Operands.back());
+ MipsOperand Op = static_cast<MipsOperand &>(*Operands.back());
Operands.pop_back();
Operands.push_back(MipsOperand::CreateRegPair(Op, S, E, *this));
OpenPOWER on IntegriCloud