[llvm-commits] [llvm] r138948 - in /llvm/trunk: lib/MC/MCDisassembler/Disassembler.cpp lib/MC/MCDisassembler/EDDisassembler.cpp lib/Target/ARM/Disassembler/ARMDisassembler.cpp utils/TableGen/DisassemblerEmitter.cpp
David A. Greene
greened at obbligato.org
Thu Sep 1 13:36:27 PDT 2011
James Molloy <james.molloy at arm.com> writes:
> Modified: llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp?rev=138948&r1=138947&r2=138948&view=diff
> ==============================================================================
> --- llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp (original)
> +++ llvm/trunk/lib/MC/MCDisassembler/Disassembler.cpp Thu Sep 1 13:02:14 2011
> @@ -135,18 +135,25 @@
> MCInst Inst;
> const MCDisassembler *DisAsm = DC->getDisAsm();
> MCInstPrinter *IP = DC->getIP();
> - if (!DisAsm->getInstruction(Inst, Size, MemoryObject, PC, /*REMOVE*/ nulls()))
> + 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;
> + case MCDisassembler::Success: {
> + SmallVector<char, 64> InsnStr;
> + raw_svector_ostream OS(InsnStr);
> + IP->printInst(&Inst, OS);
> + OS.flush();
>
> - 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;
> + }
> + }
> }
I'm getting a build error with -Werror:
[sta-dbg] : [llvm] cc1plus: warnings being treated as errors
[sta-dbg] : [llvm] /ptmp/dag/llvm/staging/llvm/lib/MC/MCDisassembler/Disassembler.cpp: In function 'size_t LLVMDisasmInstruction(void*, uint8_t*, uint64_t, uint64_t, char*, size_t)':
[sta-dbg] : [llvm] /ptmp/dag/llvm/staging/llvm/lib/MC/MCDisassembler/Disassembler.cpp:159: error: control reaches end of non-void function
[sta-dbg] : [llvm] make[3]: *** [/ptmp/dag/build/llvm/staging/debug/lib/MC/MCDisassembler/Debug+Asserts/Disassembler.o] Error 1
Can you fix this? Thanks.
-Dave
More information about the llvm-commits
mailing list