Skip to content

Commit 88d095f

Browse files
author
Martin
committed
Initialize unsigned integer when declared
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.
1 parent d68aa30 commit 88d095f

File tree

1 file changed

+19
-17
lines changed

1 file changed

+19
-17
lines changed

llvm/lib/Target/AMDGPU/AMDGPUInstructionSelector.cpp

Lines changed: 19 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4075,28 +4075,30 @@ InstructionSelector::ComplexRendererFns
40754075
AMDGPUInstructionSelector::selectWMMAModsF16NegAbs(MachineOperand &Root) const {
40764076
Register Src = Root.getReg();
40774077
unsigned Mods = SISrcMods::OP_SEL_1;
4078-
unsigned ModOpcode;
40794078
SmallVector<Register, 8> EltsV2F16;
40804079

4081-
if (GConcatVectors *CV = dyn_cast<GConcatVectors>(MRI->getVRegDef(Src))) {
4082-
for (unsigned i = 0; i < CV->getNumSources(); ++i) {
4083-
MachineInstr *ElV2F16 = MRI->getVRegDef(CV->getSourceReg(i));
4080+
if (GConcatVectors *CV = dyn_cast<GConcatVectors>(MRI->getVRegDef(Src)))
4081+
if (CV->getNumSources() > 0) {
4082+
MachineInstr *ElV2F16 = MRI->getVRegDef(CV->getSourceReg(0));
40844083
// Based on first element decide which mod we match, neg or abs
4085-
if (EltsV2F16.empty())
4086-
ModOpcode = (ElV2F16->getOpcode() == AMDGPU::G_FNEG) ? AMDGPU::G_FNEG
4087-
: AMDGPU::G_FABS;
4088-
if (ElV2F16->getOpcode() != ModOpcode)
4089-
break;
4090-
EltsV2F16.push_back(ElV2F16->getOperand(1).getReg());
4091-
}
4084+
unsigned ModOpcode = (ElV2F16->getOpcode() == AMDGPU::G_FNEG)
4085+
? AMDGPU::G_FNEG
4086+
: AMDGPU::G_FABS;
4087+
4088+
for (unsigned i = 0; i < CV->getNumSources(); ++i) {
4089+
ElV2F16 = MRI->getVRegDef(CV->getSourceReg(i));
4090+
if (ElV2F16->getOpcode() != ModOpcode)
4091+
break;
4092+
EltsV2F16.push_back(ElV2F16->getOperand(1).getReg());
4093+
}
40924094

4093-
// All elements had ModOpcode modifier
4094-
if (CV->getNumSources() == EltsV2F16.size()) {
4095-
MachineIRBuilder B(*Root.getParent());
4096-
selectWMMAModsNegAbs(ModOpcode, Mods, EltsV2F16, Src, Root.getParent(),
4097-
*MRI);
4095+
// All elements had ModOpcode modifier
4096+
if (CV->getNumSources() == EltsV2F16.size()) {
4097+
MachineIRBuilder B(*Root.getParent());
4098+
selectWMMAModsNegAbs(ModOpcode, Mods, EltsV2F16, Src, Root.getParent(),
4099+
*MRI);
4100+
}
40984101
}
4099-
}
41004102

41014103
return {{[=](MachineInstrBuilder &MIB) { MIB.addReg(Src); },
41024104
[=](MachineInstrBuilder &MIB) { MIB.addImm(Mods); }}};

0 commit comments

Comments
 (0)