From: Stanislav Mekhanoshin Date: Mon, 4 Nov 2019 20:41:31 +0000 (-0800) Subject: [AMDGPU] return Fail instead of SolfFail from addOperand() X-Git-Tag: llvmorg-11-init~4973 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=de56a890725713dffc4ab5bf5fb2f434df27ed4d;p=platform%2Fupstream%2Fllvm.git [AMDGPU] return Fail instead of SolfFail from addOperand() addOperand() method of AMDGPU disassembler returns SoftFail on error. All instances which may lead to that place are an impossible encdoing, not something which is possible to encode, but semantically incorrect as described for SoftFail. Then tablegen generates a check of the following form: if (Decode...(..) == MCDisassembler::Fail) { return MCDisassembler::Fail; } Since we can only return Success and SoftFail that is dead code as detected by the static code analyzer. Solution: return Fail as it should be. See https://bugs.llvm.org/show_bug.cgi?id=43886 Differential Revision: https://reviews.llvm.org/D69819 --- diff --git a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp index ec2e2c4..4ae9815 100644 --- a/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp +++ b/llvm/lib/Target/AMDGPU/Disassembler/AMDGPUDisassembler.cpp @@ -73,7 +73,7 @@ addOperand(MCInst &Inst, const MCOperand& Opnd) { Inst.addOperand(Opnd); return Opnd.isValid() ? MCDisassembler::Success : - MCDisassembler::SoftFail; + MCDisassembler::Fail; } static int insertNamedMCOperand(MCInst &MI, const MCOperand &Op, diff --git a/llvm/test/MC/Disassembler/AMDGPU/decode-err.txt b/llvm/test/MC/Disassembler/AMDGPU/decode-err.txt new file mode 100644 index 0000000..b90ce05 --- /dev/null +++ b/llvm/test/MC/Disassembler/AMDGPU/decode-err.txt @@ -0,0 +1,4 @@ +# RUN: llvm-mc -arch=amdgcn -mcpu=gfx900 -disassemble -show-encoding < %s 2>&1 | FileCheck -check-prefix=GCN %s + +# GCN: warning: invalid instruction encoding +0xdf,0x00,0x00,0x02