diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2016-07-30 11:31:24 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2016-07-30 11:31:24 +0000 |
| commit | 205159c6283b69042d5cb01449827f4991f26083 (patch) | |
| tree | 83b43c98fae9c186b0f59f9507c98e7d56d022a1 /llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp | |
| parent | 22ff865a83046370b24678da2d3342dedd39cffb (diff) | |
| download | bcm5719-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.cpp | 8 |
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); |

