https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99825
Tamar Christina <tnfchris at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Assignee|unassigned at gcc dot gnu.org |tnfchris at gcc dot gnu.org --- Comment #3 from Tamar Christina <tnfchris at gcc dot gnu.org> --- (In reply to Jakub Jelinek from comment #2) > 887 perm.create (SLP_TREE_LANES (rep)); > 888 > 889 for (unsigned x = 0; x < SLP_TREE_LANES (rep); x+=2) > 890 { > 891 perm.quick_push (std::make_pair (0, x)); > 892 perm.quick_push (std::make_pair (1, x+1)); > 893 } > > that was added in r11-6693-ge09173d84dabd186ad2463f47350c1bcabfeab8f > can't really work, it allocates just SLP_TREE_LANES (resp) elements, > but can quick_push one more elements - when SLP_TREE_LANES is odd (in this > testcase 3). So, either some caller needs to ensure SLP_TREE_LANES is even > or this function isn't called, or it needs to be changed to handle even odd > numbers. It can't work on odd lanes since the operation needs to update both a real and imaginary component. So this should have been rejected much earlier. Testing a patch.