[PATCH] PR11706, optimize std::pow(T, int)

Gabriel Dos Reis gdr@integrable-solutions.net
Wed Jan 12 16:50:00 GMT 2005


Richard Guenther <rguenth@tat.physik.uni-tuebingen.de> writes:

| On 12 Jan 2005, Gabriel Dos Reis wrote:
| 
| > Richard Guenther <rguenth@tat.physik.uni-tuebingen.de> writes:
| >
| > [...]
| >
| > | code-size anyway (insert usual rant about us not unrolling constant
| > | rolling loops unconditionally).
| >
| > That is the proper issue to be dealt with.
| 
| No, it is one issue that has to be dealt with anyway, but still
| gives unexpectedly different (or I should say, unexpectedly _worse_)
| code for std::pow(x, 27) and std::pow(x, 27.0).

As usual, you spot a problem and you provide the wrong fix, insisting
that it is simple.

The bug is not that we're not using __builtin_constant_p.  The bug
here is that we have (i.e. in libstdc++) to compute the power for
integer values and built-in types.  The fix, is to have the compiler 
provide built-in for those. See past discussions with Roger Sayly
about __builtin_powfi (double-check the suffix).

-- Gaby



More information about the Libstdc++ mailing list