[MC] Reset the MCInst in the matcher function before adding opcode/operands.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Tue, 16 Dec 2014 18:05:28 +0000 (18:05 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Tue, 16 Dec 2014 18:05:28 +0000 (18:05 +0000)
commit3ddc32292d35c73a39ef9c54a95bdf04717438f9
tree099d4a5fb8f5f1911eda92f4d101e69da382782f
parente4aafdf6a1848b52911f3fffbb9722ab1131477f
[MC] Reset the MCInst in the matcher function before adding opcode/operands.

On X86, the Intel asm parser tries to match all memory operand sizes when
none is explicitly specified.  For LEA, which doesn't really have a memory
operand (just a pointer one), this results in multiple successful matches,
one for each memory size.  There's no error because it's same opcode, so
really, it's just one match.  However, the tablegen'd matcher function
adds opcode/operands to the passed MCInst, and this results in multiple
duplicated operands.

This commit clears the MCInst in the tablegen'd matcher function.
We sometimes clear it when the match failed, so there's no expectation of
keeping the previous content anyway.

Differential Revision: http://reviews.llvm.org/D6670

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224347 91177308-0d34-0410-b5e6-96231b3b80d8
test/MC/X86/intel-syntax-unsized-memory.s
utils/TableGen/AsmMatcherEmitter.cpp