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

Reply via email to