[ms-inline asm] Fix a crasher when we fail on a direct match.
authorChad Rosier <mcrosier@apple.com>
Fri, 10 May 2013 18:24:17 +0000 (18:24 +0000)
committerChad Rosier <mcrosier@apple.com>
Fri, 10 May 2013 18:24:17 +0000 (18:24 +0000)
commitffc49cbea41c08132587a3e622bb65191fa576a2
treecf479f40217f1d261715eef987c2a100f004f055
parent6e53180db120b30f600ac31611a9dd47ef7f4921
[ms-inline asm] Fix a crasher when we fail on a direct match.

The issue was that the MatchingInlineAsm and VariantID args to the
MatchInstructionImpl function weren't being set properly.  Specifically, when
parsing intel syntax, the parser thought it was parsing inline assembly in the
at&t dialect; that will never be the case.

The crash was caused when the emitter tried to emit the instruction, but the
operands weren't set.  When parsing inline assembly we only set the opcode, not
the operands, which is used to lookup the instruction descriptor.
rdar://13854391 and PR15945

Also, this commit reverts r176036.  Now that we're correctly parsing the intel
syntax the pushad/popad don't match properly.  I've reimplemented that fix using
a MnemonicAlias.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@181620 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/AsmParser/X86AsmParser.cpp
lib/Target/X86/X86InstrInfo.td
test/MC/X86/x86_errors.s