diff options
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/MC/MCDisassembler/Disassembler.cpp | 34 | ||||
| -rw-r--r-- | llvm/lib/MC/MCDisassembler/EDDisassembler.cpp | 27 | 
2 files changed, 24 insertions, 37 deletions
diff --git a/llvm/lib/MC/MCDisassembler/Disassembler.cpp b/llvm/lib/MC/MCDisassembler/Disassembler.cpp index 6ff1a2bafa7..87d8ca8679f 100644 --- a/llvm/lib/MC/MCDisassembler/Disassembler.cpp +++ b/llvm/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<char, 64> 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<char, 64> 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/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp b/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp index 227e229f09d..14d735dbc76 100644 --- a/llvm/lib/MC/MCDisassembler/EDDisassembler.cpp +++ b/llvm/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; - -    if (InstInfos) { -      thisInstInfo = &InstInfos[inst->getOpcode()]; -    } -     -    EDInst* sdInst = new EDInst(inst, byteSize, *this, thisInstInfo); -    return sdInst;    } +  const llvm::EDInstInfo *thisInstInfo = NULL; + +  if (InstInfos) { +    thisInstInfo = &InstInfos[inst->getOpcode()];    } +     +  EDInst* sdInst = new EDInst(inst, byteSize, *this, thisInstInfo); +  return sdInst;  }  void EDDisassembler::initMaps(const MCRegisterInfo ®isterInfo) {  | 

