diff --git a/lib/MC/MCDisassembler/Disassembler.cpp b/lib/MC/MCDisassembler/Disassembler.cpp index 6ff1a2bafa7..87d8ca8679f 100644 --- a/lib/MC/MCDisassembler/Disassembler.cpp +++ b/lib/MC/MCDisassembler/Disassembler.cpp @@ -1,4 +1,4 @@ -//===-- lib/MC/Disassembler.cpp - Disassembler Public C Interface -*- C -*-===// +//===-- lib/MC/Disassembler.cpp - Disassembler Public C Interface ---------===// // // The LLVM Compiler Infrastructure // @@ -135,25 +135,21 @@ size_t LLVMDisasmInstruction(LLVMDisasmContextRef DCR, uint8_t *Bytes, MCInst Inst; const MCDisassembler *DisAsm = DC->getDisAsm(); MCInstPrinter *IP = DC->getIP(); - MCDisassembler::DecodeStatus S; - S = DisAsm->getInstruction(Inst, Size, MemoryObject, PC, /*REMOVE*/ nulls()); - switch (S) { - case MCDisassembler::Fail: - case MCDisassembler::SoftFail: + if (DisAsm->getInstruction(Inst, Size, MemoryObject, PC, + /*REMOVE*/ nulls()) != MCDisassembler::Success) { // FIXME: Do something different for soft failure modes? return 0; - case MCDisassembler::Success: { - SmallVector InsnStr; - raw_svector_ostream OS(InsnStr); - IP->printInst(&Inst, OS); - OS.flush(); - - assert(OutStringSize != 0 && "Output buffer cannot be zero size"); - size_t OutputSize = std::min(OutStringSize-1, InsnStr.size()); - std::memcpy(OutString, InsnStr.data(), OutputSize); - OutString[OutputSize] = '\0'; // Terminate string. - - return Size; - } } + + SmallVector InsnStr; + raw_svector_ostream OS(InsnStr); + IP->printInst(&Inst, OS); + OS.flush(); + + assert(OutStringSize != 0 && "Output buffer cannot be zero size"); + size_t OutputSize = std::min(OutStringSize-1, InsnStr.size()); + std::memcpy(OutString, InsnStr.data(), OutputSize); + OutString[OutputSize] = '\0'; // Terminate string. + + return Size; } diff --git a/lib/MC/MCDisassembler/EDDisassembler.cpp b/lib/MC/MCDisassembler/EDDisassembler.cpp index 227e229f09d..14d735dbc76 100644 --- a/lib/MC/MCDisassembler/EDDisassembler.cpp +++ b/lib/MC/MCDisassembler/EDDisassembler.cpp @@ -239,29 +239,20 @@ EDInst *EDDisassembler::createInst(EDByteReaderCallback byteReader, MCInst* inst = new MCInst; uint64_t byteSize; - MCDisassembler::DecodeStatus S; - S = Disassembler->getInstruction(*inst, - byteSize, - memoryObject, - address, - ErrorStream); - switch (S) { - case MCDisassembler::Fail: - case MCDisassembler::SoftFail: + if (Disassembler->getInstruction(*inst, byteSize, memoryObject, address, + ErrorStream) != MCDisassembler::Success) { // FIXME: Do something different on soft failure mode? delete inst; return NULL; - case MCDisassembler::Success: { - const llvm::EDInstInfo *thisInstInfo = NULL; + } + const llvm::EDInstInfo *thisInstInfo = NULL; - if (InstInfos) { - thisInstInfo = &InstInfos[inst->getOpcode()]; - } + if (InstInfos) { + thisInstInfo = &InstInfos[inst->getOpcode()]; + } - EDInst* sdInst = new EDInst(inst, byteSize, *this, thisInstInfo); - return sdInst; - } - } + EDInst* sdInst = new EDInst(inst, byteSize, *this, thisInstInfo); + return sdInst; } void EDDisassembler::initMaps(const MCRegisterInfo ®isterInfo) {