diff options
author | Chad Rosier <mcrosier@apple.com> | 2012-08-21 18:14:59 +0000 |
---|---|---|
committer | Chad Rosier <mcrosier@apple.com> | 2012-08-21 18:14:59 +0000 |
commit | 64bfcbbc58ad485db157190496f0f39156b5a516 (patch) | |
tree | 2e40b93e5363a97b6c8f35effb2c7efbacfa87b9 /lib | |
parent | 4c1d2baa7c3303302fec9a15ebc4021bd5d45002 (diff) | |
download | external_llvm-64bfcbbc58ad485db157190496f0f39156b5a516.zip external_llvm-64bfcbbc58ad485db157190496f0f39156b5a516.tar.gz external_llvm-64bfcbbc58ad485db157190496f0f39156b5a516.tar.bz2 |
[ms-inline asm] Expose the ErrorInfo from the MatchInstructionImpl. In general,
this is the index of the operand that failed to match.
Note: This may cause a buildbot failure due to an API mismatch in clang. Should
recover with my next commit to clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@162295 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/X86/AsmParser/X86AsmParser.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/Target/X86/AsmParser/X86AsmParser.cpp b/lib/Target/X86/AsmParser/X86AsmParser.cpp index fbbaa95..c139dbc 100644 --- a/lib/Target/X86/AsmParser/X86AsmParser.cpp +++ b/lib/Target/X86/AsmParser/X86AsmParser.cpp @@ -67,7 +67,8 @@ private: bool MatchInstruction(SMLoc IDLoc, SmallVectorImpl<MCParsedAsmOperand*> &Operands, - SmallVectorImpl<MCInst> &MCInsts); + SmallVectorImpl<MCInst> &MCInsts, + unsigned &OrigErrorInfo); /// isSrcOp - Returns true if operand is either (%rsi) or %ds:%(rsi) /// in 64bit mode or (%esi) or %es:(%esi) in 32bit mode. @@ -1513,7 +1514,8 @@ MatchAndEmitInstruction(SMLoc IDLoc, SmallVectorImpl<MCParsedAsmOperand*> &Operands, MCStreamer &Out) { SmallVector<MCInst, 2> Insts; - bool Error = MatchInstruction(IDLoc, Operands, Insts); + unsigned ErrorInfo; + bool Error = MatchInstruction(IDLoc, Operands, Insts, ErrorInfo); if (!Error) for (unsigned i = 0, e = Insts.size(); i != e; ++i) Out.EmitInstruction(Insts[i]); @@ -1523,7 +1525,8 @@ MatchAndEmitInstruction(SMLoc IDLoc, bool X86AsmParser:: MatchInstruction(SMLoc IDLoc, SmallVectorImpl<MCParsedAsmOperand*> &Operands, - SmallVectorImpl<MCInst> &MCInsts) { + SmallVectorImpl<MCInst> &MCInsts, + unsigned &OrigErrorInfo) { assert(!Operands.empty() && "Unexpect empty operand list!"); X86Operand *Op = static_cast<X86Operand*>(Operands[0]); assert(Op->isToken() && "Leading operand should always be a mnemonic!"); @@ -1558,7 +1561,6 @@ MatchInstruction(SMLoc IDLoc, } bool WasOriginallyInvalidOperand = false; - unsigned OrigErrorInfo; MCInst Inst; // First, try a direct match. |