http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57996

            Bug ID: 57996
           Summary: Fold more standard complex functions
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Keywords: missed-optimization
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: glisse at gcc dot gnu.org

Hello,

we don't seem to try any optimization on the cpow function (and many other
complex functions). In particular, if the arguments are complex_expr<x,0.>, we
don't take advantage of it.

Note that the C++ library has overloads for mixed pow calls and some code to
detect when operands are real, but that isn't the best place for it, ideally it
would just convert all to complex, call __builtin_cpow and let the middle-end
handle it. Related to PR libstdc++/56106.

Some of the optimizations should be limited to the unsafe-math case, but not
all (and the exact list may depend on whether your libc provides a correctly
rounded cpow or not).

cpow requires some special code, but the test for real arguments could be
shared by several unary functions (csin, ccos, cexp, ...).

Reply via email to