summaryrefslogtreecommitdiffstats
path: root/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2011-09-01 18:02:14 +0000
committerJames Molloy <james.molloy@arm.com>2011-09-01 18:02:14 +0000
commitdb4ce60328e1a05fcc0d40549009cb0ba2860298 (patch)
tree76e41f37b80d67f701d3b287942a86be3b557a75 /llvm/lib/MC/MCDisassembler/EDDisassembler.cpp
parentf7a3d4ad156f8d445ab6ccea066cd1d62c6c5502 (diff)
downloadbcm5719-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.cpp18
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 &registerInfo) {
OpenPOWER on IntegriCloud