summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2016-07-30 11:31:24 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2016-07-30 11:31:24 +0000
commit205159c6283b69042d5cb01449827f4991f26083 (patch)
tree83b43c98fae9c186b0f59f9507c98e7d56d022a1 /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
parent22ff865a83046370b24678da2d3342dedd39cffb (diff)
downloadbcm5719-llvm-205159c6283b69042d5cb01449827f4991f26083.tar.gz
bcm5719-llvm-205159c6283b69042d5cb01449827f4991f26083.zip
[X86] Fix lifetime of SMRange temporaries.
Found by asan -fsanitize-address-use-after-scope. llvm-svn: 277266
Diffstat (limited to 'llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp')
-rw-r--r--llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp8
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
index bf9f240629a..d90fa164436 100644
--- a/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ b/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -2685,8 +2685,8 @@ bool X86AsmParser::MatchAndEmitATTInstruction(SMLoc IDLoc, unsigned &Opcode,
// mnemonic was invalid.
if (std::count(std::begin(Match), std::end(Match), Match_MnemonicFail) == 4) {
if (!WasOriginallyInvalidOperand) {
- ArrayRef<SMRange> Ranges =
- MatchingInlineAsm ? EmptyRanges : Op.getLocRange();
+ SMRange OpRange = Op.getLocRange();
+ ArrayRef<SMRange> Ranges = MatchingInlineAsm ? EmptyRanges : OpRange;
return Error(IDLoc, "invalid instruction mnemonic '" + Base + "'",
Ranges, MatchingInlineAsm);
}
@@ -2839,8 +2839,8 @@ bool X86AsmParser::MatchAndEmitIntelInstruction(SMLoc IDLoc, unsigned &Opcode,
} else if (NumSuccessfulMatches > 1) {
assert(UnsizedMemOp &&
"multiple matches only possible with unsized memory operands");
- ArrayRef<SMRange> Ranges =
- MatchingInlineAsm ? EmptyRanges : UnsizedMemOp->getLocRange();
+ SMRange OpRange = UnsizedMemOp->getLocRange();
+ ArrayRef<SMRange> Ranges = MatchingInlineAsm ? EmptyRanges : OpRange;
return Error(UnsizedMemOp->getStartLoc(),
"ambiguous operand size for instruction '" + Mnemonic + "\'",
Ranges, MatchingInlineAsm);
OpenPOWER on IntegriCloud