https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81127

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2017-06-19
                 CC|                            |rguenth at gcc dot gnu.org
          Component|c                           |tree-optimization
             Blocks|                            |53947
            Summary|Complex division misses     |Complex division misses BB
                   |vectorisation opportunity   |vectorisation opportunity
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

Note we lower complex division with -ffast-math early.  Note ICC seems to use
the trick of widening the FP ops float->double double->long double to apply the
simple lowering even with standard conforming complex evaluation method.

Note that more target control of the lowering process, eventually lowering to
vector GIMPLE would run into the loop vectorizer not handling vector code in
case this happens inside a loop.

Note that the libgcc implementation could benefit from the above widening trick
and vectorization as well (just use generic vectors?).

Note for complex float the ABI and the middle-end arg passing code results in
the awkward stack pushes (generating CONCAT and initializing that from
piecewise
DImode via assign_parm_remove_parallels, gen_reg_rtx creating the
CONCAT and emit_group_store initializing that by pushing it to the stack
explicitely).

There might be several related bugs already.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947
[Bug 53947] [meta-bug] vectorizer missed-optimizations

Reply via email to