diff options
author | James Molloy <james.molloy@arm.com> | 2011-09-01 22:01:14 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2011-09-01 22:01:14 +0000 |
commit | 5ada2a7e27ff7247d2ef7c3338408733a264f976 (patch) | |
tree | 60cd3f3040ac32ed3eebaf296fb527d5c50d4cb9 /llvm/lib/MC/MCDisassembler/Disassembler.cpp | |
parent | 43ea78b48de5d61756a4d13d6d672796b6ef44a5 (diff) | |
download | bcm5719-llvm-5ada2a7e27ff7247d2ef7c3338408733a264f976.tar.gz bcm5719-llvm-5ada2a7e27ff7247d2ef7c3338408733a264f976.zip |
Fix apparent build error caused by r138948 on certain versions of GCC with -Werror. Sorry for the inconvenience.
llvm-svn: 138973
Diffstat (limited to 'llvm/lib/MC/MCDisassembler/Disassembler.cpp')
-rw-r--r-- | llvm/lib/MC/MCDisassembler/Disassembler.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/llvm/lib/MC/MCDisassembler/Disassembler.cpp b/llvm/lib/MC/MCDisassembler/Disassembler.cpp index 87d8ca8679f..603df94f99c 100644 --- a/llvm/lib/MC/MCDisassembler/Disassembler.cpp +++ b/llvm/lib/MC/MCDisassembler/Disassembler.cpp @@ -135,21 +135,28 @@ size_t LLVMDisasmInstruction(LLVMDisasmContextRef DCR, uint8_t *Bytes, MCInst Inst; const MCDisassembler *DisAsm = DC->getDisAsm(); MCInstPrinter *IP = DC->getIP(); - if (DisAsm->getInstruction(Inst, Size, MemoryObject, PC, - /*REMOVE*/ nulls()) != MCDisassembler::Success) { + MCDisassembler::DecodeStatus S; + S = DisAsm->getInstruction(Inst, Size, MemoryObject, PC, + /*REMOVE*/ nulls()); + switch (S) { + case MCDisassembler::Fail: + case MCDisassembler::SoftFail: // FIXME: Do something different for soft failure modes? return 0; - } - SmallVector<char, 64> InsnStr; - raw_svector_ostream OS(InsnStr); - IP->printInst(&Inst, OS); - OS.flush(); + 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. + 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; + return Size; + } + } + return 0; } |