https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103999
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Blocks| |53947 Keywords| |missed-optimization Ever confirmed|0 |1 Last reconfirmed| |2022-01-13 Status|UNCONFIRMED |NEW --- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- t.c:4:23: note: reduction path: ans_15 _7 _9 _4 ans_18 t.c:4:23: note: reduction: unknown pattern We do handle integer sign conversions by "ignoring" them but with float truncations/extensions we have to be more careful. We start with ((double)(float)((double)(float)(array[0] + 1.) + array[1] + 1.) + array[2] + 1.) ... and would need to associate that in some way. Ideally we'd arrange for doing the reduction as 'double' and only truncate the final value getting us "only" extra precision. But that would require major surgery in reduction handling. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947 [Bug 53947] [meta-bug] vectorizer missed-optimizations