[llvm] 4bf06c1 - Initialize unsigned integer when declared (#81894)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Feb 25 04:56:16 PST 2024
Author: Martin Wehking
Date: 2024-02-25T18:26:12+05:30
New Revision: 4bf06c16fcddcfcea332069bdde5cbf1401513cf
URL: https://github.com/llvm/llvm-project/commit/4bf06c16fcddcfcea332069bdde5cbf1401513cf
DIFF: https://github.com/llvm/llvm-project/commit/4bf06c16fcddcfcea332069bdde5cbf1401513cf.diff
LOG: Initialize unsigned integer when declared (#81894)
Initialize ModOpcode directly before the loop execution to silence
static analyzer warnings about the usage of an uninitialized variable.
This leads to a redundant assignment of ElV2F16 inside the first loop
execution, but also avoids superfluous emptiness checks of EltsV2F16
after the first execution of the loop.
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
index 024adcda0fa061..4896ae8bad9ef3 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUISelDAGToDAG.cpp
@@ -3261,15 +3261,16 @@ bool AMDGPUDAGToDAGISel::SelectWMMAModsF32NegAbs(SDValue In, SDValue &Src,
SDValue &SrcMods) const {
Src = In;
unsigned Mods = SISrcMods::OP_SEL_1;
- unsigned ModOpcode;
SmallVector<SDValue, 8> EltsF32;
if (auto *BV = dyn_cast<BuildVectorSDNode>(stripBitcast(In))) {
+ assert(BV->getNumOperands() > 0);
+ // Based on first element decide which mod we match, neg or abs
+ SDValue ElF32 = stripBitcast(BV->getOperand(0));
+ unsigned ModOpcode =
+ (ElF32.getOpcode() == ISD::FNEG) ? ISD::FNEG : ISD::FABS;
for (unsigned i = 0; i < BV->getNumOperands(); ++i) {
SDValue ElF32 = stripBitcast(BV->getOperand(i));
- // Based on first element decide which mod we match, neg or abs
- if (EltsF32.empty())
- ModOpcode = (ElF32.getOpcode() == ISD::FNEG) ? ISD::FNEG : ISD::FABS;
if (ElF32.getOpcode() != ModOpcode)
break;
EltsF32.push_back(ElF32.getOperand(0));
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
index aed9bffc551f47..aacc3590a5dbf9 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp
@@ -4019,16 +4019,17 @@ InstructionSelector::ComplexRendererFns
AMDGPUInstructionSelector::selectWMMAModsF32NegAbs(MachineOperand &Root) const {
Register Src = Root.getReg();
unsigned Mods = SISrcMods::OP_SEL_1;
- unsigned ModOpcode;
SmallVector<Register, 8> EltsF32;
if (GBuildVector *BV = dyn_cast<GBuildVector>(MRI->getVRegDef(Src))) {
+ assert(BV->getNumSources() > 0);
+ // Based on first element decide which mod we match, neg or abs
+ MachineInstr *ElF32 = MRI->getVRegDef(BV->getSourceReg(0));
+ unsigned ModOpcode = (ElF32->getOpcode() == AMDGPU::G_FNEG)
+ ? AMDGPU::G_FNEG
+ : AMDGPU::G_FABS;
for (unsigned i = 0; i < BV->getNumSources(); ++i) {
- MachineInstr *ElF32 = MRI->getVRegDef(BV->getSourceReg(i));
- // Based on first element decide which mod we match, neg or abs
- if (EltsF32.empty())
- ModOpcode = (ElF32->getOpcode() == AMDGPU::G_FNEG) ? AMDGPU::G_FNEG
- : AMDGPU::G_FABS;
+ ElF32 = MRI->getVRegDef(BV->getSourceReg(i));
if (ElF32->getOpcode() != ModOpcode)
break;
EltsF32.push_back(ElF32->getOperand(1).getReg());
@@ -4075,16 +4076,18 @@ InstructionSelector::ComplexRendererFns
AMDGPUInstructionSelector::selectWMMAModsF16NegAbs(MachineOperand &Root) const {
Register Src = Root.getReg();
unsigned Mods = SISrcMods::OP_SEL_1;
- unsigned ModOpcode;
SmallVector<Register, 8> EltsV2F16;
if (GConcatVectors *CV = dyn_cast<GConcatVectors>(MRI->getVRegDef(Src))) {
+ assert(CV->getNumSources() > 0);
+ MachineInstr *ElV2F16 = MRI->getVRegDef(CV->getSourceReg(0));
+ // Based on first element decide which mod we match, neg or abs
+ unsigned ModOpcode = (ElV2F16->getOpcode() == AMDGPU::G_FNEG)
+ ? AMDGPU::G_FNEG
+ : AMDGPU::G_FABS;
+
for (unsigned i = 0; i < CV->getNumSources(); ++i) {
- MachineInstr *ElV2F16 = MRI->getVRegDef(CV->getSourceReg(i));
- // Based on first element decide which mod we match, neg or abs
- if (EltsV2F16.empty())
- ModOpcode = (ElV2F16->getOpcode() == AMDGPU::G_FNEG) ? AMDGPU::G_FNEG
- : AMDGPU::G_FABS;
+ ElV2F16 = MRI->getVRegDef(CV->getSourceReg(i));
if (ElV2F16->getOpcode() != ModOpcode)
break;
EltsV2F16.push_back(ElV2F16->getOperand(1).getReg());
More information about the llvm-commits
mailing list