[llvm] 935e5e1 - SparcDisassembler: Ensure Size is initialized
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Sun May 4 17:49:32 PDT 2025
Author: Fangrui Song
Date: 2025-05-04T17:49:27-07:00
New Revision: 935e5e127ca330d2cb162520bee8274380a621b2
URL: https://github.com/llvm/llvm-project/commit/935e5e127ca330d2cb162520bee8274380a621b2
DIFF: https://github.com/llvm/llvm-project/commit/935e5e127ca330d2cb162520bee8274380a621b2.diff
LOG: SparcDisassembler: Ensure Size is initialized
To fix uninitialized value with an invalid encoding.
Added:
llvm/test/MC/Disassembler/Sparc/invalid.s
Modified:
llvm/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp b/llvm/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp
index 828d638723587..220e4d4e6e56e 100644
--- a/llvm/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp
+++ b/llvm/lib/Target/Sparc/Disassembler/SparcDisassembler.cpp
@@ -276,6 +276,7 @@ static DecodeStatus readInstruction32(ArrayRef<uint8_t> Bytes, uint64_t Address,
return MCDisassembler::Fail;
}
+ Size = 4;
Insn = IsLittleEndian
? (Bytes[0] << 0) | (Bytes[1] << 8) | (Bytes[2] << 16) |
(Bytes[3] << 24)
@@ -306,20 +307,13 @@ DecodeStatus SparcDisassembler::getInstruction(MCInst &Instr, uint64_t &Size,
{
Result = decodeInstruction(DecoderTableSparcV832, Instr, Insn, Address, this, STI);
}
- if (Result != MCDisassembler::Fail) {
- Size = 4;
+ if (Result != MCDisassembler::Fail)
return Result;
- }
Result =
decodeInstruction(DecoderTableSparc32, Instr, Insn, Address, this, STI);
- if (Result != MCDisassembler::Fail) {
- Size = 4;
- return Result;
- }
-
- return MCDisassembler::Fail;
+ return Result;
}
static bool tryAddingSymbolicOperand(int64_t Value, bool isBranch,
diff --git a/llvm/test/MC/Disassembler/Sparc/invalid.s b/llvm/test/MC/Disassembler/Sparc/invalid.s
new file mode 100644
index 0000000000000..5ff317e6a8222
--- /dev/null
+++ b/llvm/test/MC/Disassembler/Sparc/invalid.s
@@ -0,0 +1,7 @@
+# RUN: llvm-mc --disassemble %s -triple=sparcv9 2>&1 | FileCheck %s
+
+0xff 0xdc 0xba 0x98
+# CHECK: [[@LINE-1]]:1: warning: invalid instruction encoding
+
+0xff 0xdc 0xba 0x98
+# CHECK: [[@LINE-1]]:1: warning: invalid instruction encoding
More information about the llvm-commits
mailing list