[llvm] bef928f - [llvm] Initialize and move UseUpRegs outside of `union` MemOp struct.
Alexander Belyaev via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 24 08:53:48 PDT 2022
Author: Alexander Belyaev
Date: 2022-03-24T16:53:38+01:00
New Revision: bef928f8b2513208003a686d1af66a6924445567
URL: https://github.com/llvm/llvm-project/commit/bef928f8b2513208003a686d1af66a6924445567
DIFF: https://github.com/llvm/llvm-project/commit/bef928f8b2513208003a686d1af66a6924445567.diff
LOG: [llvm] Initialize and move UseUpRegs outside of `union` MemOp struct.
Asan complained about uninitialized bool
`invalid-bool-load`
llvm/lib/Target/X86/AsmParser/X86Operand.h:389:12: runtime error: load
of value 171, which is not a valid value for type 'bool'
Differential Revision: https://reviews.llvm.org/D122405
Added:
Modified:
llvm/lib/Target/X86/AsmParser/X86Operand.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/X86/AsmParser/X86Operand.h b/llvm/lib/Target/X86/AsmParser/X86Operand.h
index e728ef453b629..00f22190e7d0a 100644
--- a/llvm/lib/Target/X86/AsmParser/X86Operand.h
+++ b/llvm/lib/Target/X86/AsmParser/X86Operand.h
@@ -37,6 +37,10 @@ struct X86Operand final : public MCParsedAsmOperand {
void *OpDecl;
bool AddressOf;
+ /// This used for inline asm which may specify base reg and index reg for
+ /// MemOp. e.g. ARR[eax + ecx*4], so no extra reg can be used for MemOp.
+ bool UseUpRegs = false;
+
struct TokOp {
const char *Data;
unsigned Length;
@@ -68,10 +72,6 @@ struct X86Operand final : public MCParsedAsmOperand {
/// If the memory operand is unsized and there are multiple instruction
/// matches, prefer the one with this size.
unsigned FrontendSize;
-
- /// This used for inline asm which may specify base reg and index reg for
- /// MemOp. e.g. ARR[eax + ecx*4], so no extra reg can be used for MemOp.
- bool UseUpRegs;
};
union {
@@ -384,9 +384,7 @@ struct X86Operand final : public MCParsedAsmOperand {
return isAbsMem() && Mem.ModeSize == 16;
}
- bool isMemUseUpRegs() const override {
- return Mem.UseUpRegs;
- }
+ bool isMemUseUpRegs() const override { return UseUpRegs; }
bool isSrcIdx() const {
return !getMemIndexReg() && getMemScale() == 1 &&
@@ -685,7 +683,7 @@ struct X86Operand final : public MCParsedAsmOperand {
Res->Mem.Size = Size;
Res->Mem.ModeSize = ModeSize;
Res->Mem.FrontendSize = FrontendSize;
- Res->Mem.UseUpRegs = UseUpRegs;
+ Res->UseUpRegs = UseUpRegs;
Res->SymName = SymName;
Res->OpDecl = OpDecl;
Res->AddressOf = false;
@@ -718,7 +716,7 @@ struct X86Operand final : public MCParsedAsmOperand {
Res->Mem.Size = Size;
Res->Mem.ModeSize = ModeSize;
Res->Mem.FrontendSize = FrontendSize;
- Res->Mem.UseUpRegs = UseUpRegs;
+ Res->UseUpRegs = UseUpRegs;
Res->SymName = SymName;
Res->OpDecl = OpDecl;
Res->AddressOf = false;
More information about the llvm-commits
mailing list