[PATCH] D57376: X86Parser: Fix potential reference to deleted object
Brandon Jones via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 29 03:25:30 PST 2019
BrandonTJones created this revision.
BrandonTJones added reviewers: andreadb, grosbach.
Herald added subscribers: llvm-commits, hiraditya.
Within the MatchFPUWaitAlias function, Operands[0] is potentially overwritten leading to &Op referencing a deleted object. To fix this, assign the reference after the function.
Repository:
rL LLVM
https://reviews.llvm.org/D57376
Files:
llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
Index: llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
===================================================================
--- llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
+++ llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp
@@ -2939,13 +2939,13 @@
uint64_t &ErrorInfo,
bool MatchingInlineAsm) {
assert(!Operands.empty() && "Unexpect empty operand list!");
- X86Operand &Op = static_cast<X86Operand &>(*Operands[0]);
assert(Op.isToken() && "Leading operand should always be a mnemonic!");
SMRange EmptyRange = None;
// First, handle aliases that expand to multiple instructions.
- MatchFPUWaitAlias(IDLoc, Op, Operands, Out, MatchingInlineAsm);
-
+ MatchFPUWaitAlias(IDLoc, static_cast<X86Operand &>(*Operands[0]);
+ , Operands, Out, MatchingInlineAsm);
+ X86Operand &Op = static_cast<X86Operand &>(*Operands[0]);
bool WasOriginallyInvalidOperand = false;
unsigned Prefixes = getPrefixes(Operands);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D57376.184055.patch
Type: text/x-patch
Size: 1037 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190129/620284f2/attachment.bin>
More information about the llvm-commits
mailing list