Fix GCC maybe-uninitialized warning in InnerProduct

libeigen/eigen!2386

Closes #3015
This commit is contained in:
Florian Maurin
2026-04-04 02:41:09 +00:00
committed by Rasmus Munk Larsen
parent a3074053a6
commit b57d860f3e

View File

@@ -142,13 +142,13 @@ struct inner_product_impl<Evaluator, true> {
const UnsignedIndex numPackets = size / PacketSize; const UnsignedIndex numPackets = size / PacketSize;
const UnsignedIndex numRemPackets = (packetEnd - quadEnd) / PacketSize; const UnsignedIndex numRemPackets = (packetEnd - quadEnd) / PacketSize;
Packet presult0, presult1, presult2, presult3; Packet presult0 = eval.template packet<Packet>(0 * PacketSize);
if (numPackets >= 2) {
presult0 = eval.template packet<Packet>(0 * PacketSize); Packet presult1 = eval.template packet<Packet>(1 * PacketSize);
if (numPackets >= 2) presult1 = eval.template packet<Packet>(1 * PacketSize); if (numPackets >= 3) {
if (numPackets >= 3) presult2 = eval.template packet<Packet>(2 * PacketSize); Packet presult2 = eval.template packet<Packet>(2 * PacketSize);
if (numPackets >= 4) { if (numPackets >= 4) {
presult3 = eval.template packet<Packet>(3 * PacketSize); Packet presult3 = eval.template packet<Packet>(3 * PacketSize);
for (UnsignedIndex k = 4 * PacketSize; k < quadEnd; k += 4 * PacketSize) { for (UnsignedIndex k = 4 * PacketSize; k < quadEnd; k += 4 * PacketSize) {
presult0 = eval.packet(presult0, k + 0 * PacketSize); presult0 = eval.packet(presult0, k + 0 * PacketSize);
@@ -157,15 +157,20 @@ struct inner_product_impl<Evaluator, true> {
presult3 = eval.packet(presult3, k + 3 * PacketSize); presult3 = eval.packet(presult3, k + 3 * PacketSize);
} }
if (numRemPackets >= 1) presult0 = eval.packet(presult0, quadEnd + 0 * PacketSize); if (numRemPackets >= 1) {
if (numRemPackets >= 2) presult1 = eval.packet(presult1, quadEnd + 1 * PacketSize); presult0 = eval.packet(presult0, quadEnd + 0 * PacketSize);
if (numRemPackets >= 2) {
presult1 = eval.packet(presult1, quadEnd + 1 * PacketSize);
if (numRemPackets == 3) presult2 = eval.packet(presult2, quadEnd + 2 * PacketSize); if (numRemPackets == 3) presult2 = eval.packet(presult2, quadEnd + 2 * PacketSize);
}
}
presult2 = padd(presult2, presult3); presult2 = padd(presult2, presult3);
} }
presult1 = padd(presult1, presult2);
if (numPackets >= 3) presult1 = padd(presult1, presult2); }
if (numPackets >= 2) presult0 = padd(presult0, presult1); presult0 = padd(presult0, presult1);
}
Scalar result = predux(presult0); Scalar result = predux(presult0);
for (UnsignedIndex k = packetEnd; k < size; k++) { for (UnsignedIndex k = packetEnd; k < size; k++) {