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, ...).