diff options
author | Chris Lattner <sabre@nondot.org> | 2010-02-13 19:16:53 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-02-13 19:16:53 +0000 |
commit | 1cea10a66339a412ce02db3d2c4d57a4681571c0 (patch) | |
tree | b39cdcd2ad4e52461235181dd0d71b6fde3db919 | |
parent | c09687bb7ea35e0dc9d709460c83a58e6076e4d2 (diff) |
teach the encoder to handle pseudo instructions like FP_REG_KILL,
encoding them into nothing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@96110 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/X86/X86MCCodeEmitter.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/lib/Target/X86/X86MCCodeEmitter.cpp b/lib/Target/X86/X86MCCodeEmitter.cpp index 4ac51fc981..d0ec0de691 100644 --- a/lib/Target/X86/X86MCCodeEmitter.cpp +++ b/lib/Target/X86/X86MCCodeEmitter.cpp @@ -303,9 +303,9 @@ void X86MCCodeEmitter::EmitMemModRMByte(const MCInst &MI, unsigned Op, /// size, and 3) use of X86-64 extended registers. static unsigned DetermineREXPrefix(const MCInst &MI, unsigned TSFlags, const TargetInstrDesc &Desc) { - // Pseudo instructions shouldn't get here. - assert((TSFlags & X86II::FormMask) != X86II::Pseudo && - "Can't encode pseudo instrs"); + // Pseudo instructions never have a rex byte. + if ((TSFlags & X86II::FormMask) == X86II::Pseudo) + return 0; unsigned REX = 0; if (TSFlags & X86II::REX_W) @@ -506,6 +506,7 @@ EncodeInstruction(const MCInst &MI, raw_ostream &OS, assert(0 && "FIXME: Remove this form when the JIT moves to MCCodeEmitter!"); default: errs() << "FORM: " << (TSFlags & X86II::FormMask) << "\n"; assert(0 && "Unknown FormMask value in X86MCCodeEmitter!"); + case X86II::Pseudo: return; // Pseudo instructions encode to nothing. case X86II::RawFrm: EmitByte(BaseOpcode, CurByte, OS); break; |