diff options
author | James Molloy <james.molloy@arm.com> | 2011-09-01 18:02:14 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2011-09-01 18:02:14 +0000 |
commit | db4ce60328e1a05fcc0d40549009cb0ba2860298 (patch) | |
tree | 76e41f37b80d67f701d3b287942a86be3b557a75 /llvm/lib/MC/MCDisassembler/EDDisassembler.cpp | |
parent | f7a3d4ad156f8d445ab6ccea066cd1d62c6c5502 (diff) | |
download | bcm5719-llvm-db4ce60328e1a05fcc0d40549009cb0ba2860298.tar.gz bcm5719-llvm-db4ce60328e1a05fcc0d40549009cb0ba2860298.zip |
Fix up r137380 based on post-commit review by Jim Grosbach.
llvm-svn: 138948
Diffstat (limited to 'llvm/lib/MC/MCDisassembler/EDDisassembler.cpp')
-rw-r--r-- | llvm/lib/MC/MCDisassembler/EDDisassembler.cpp | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp b/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp index c3a10fa80b5..227e229f09d 100644 --- a/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp +++ b/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp @@ -239,14 +239,19 @@ EDInst *EDDisassembler::createInst(EDByteReaderCallback byteReader, MCInst* inst = new MCInst; uint64_t byteSize; - if (!Disassembler->getInstruction(*inst, - byteSize, - memoryObject, - address, - ErrorStream)) { + MCDisassembler::DecodeStatus S; + S = Disassembler->getInstruction(*inst, + byteSize, + memoryObject, + address, + ErrorStream); + switch (S) { + case MCDisassembler::Fail: + case MCDisassembler::SoftFail: + // FIXME: Do something different on soft failure mode? delete inst; return NULL; - } else { + case MCDisassembler::Success: { const llvm::EDInstInfo *thisInstInfo = NULL; if (InstInfos) { @@ -256,6 +261,7 @@ EDInst *EDDisassembler::createInst(EDByteReaderCallback byteReader, EDInst* sdInst = new EDInst(inst, byteSize, *this, thisInstInfo); return sdInst; } + } } void EDDisassembler::initMaps(const MCRegisterInfo ®isterInfo) { |