------- Comment #16 from dominiq at lps dot ens dot fr 2007-03-21 15:36 ------- > The recommended way is to post a message to gcc@gcc.gnu.org or > [EMAIL PROTECTED]
I'll follow your advice, but before I'ld like some feedback about what follows. I have applied the following patch --- gcc-4.3-20070316/gcc/tree-ssa-math-opts.c Thu Mar 8 20:02:51 2007 +++ gcc-4.3-20070317/gcc/tree-ssa-math-opts.c Tue Mar 20 17:21:16 2007 @@ -704,9 +704,7 @@ gate_cse_sincos (void) { /* Make sure we have either sincos or cexp. */ - return (TARGET_HAS_SINCOS - || TARGET_C99_FUNCTIONS) - && optimize; + return TARGET_HAS_SINCOS && optimize; } struct tree_opt_pass pass_cse_sincos = I have regtested it with no change in the reports for gcc, g++, gfortran, and objc. The timings before and after are before after -O0 -O1 % -O0 -O1 % g++-4 sincos_o.c 6.2 9.6 +55 6.3 5.6 -11 gfc sincos_o.f90 6.3 9.6 +52 6.4 5.5 -14 for the following C and Fotran tests: [karma] bug/timing% cat sincos_o.c #include <math.h> #include <stdio.h> int main() { long n = 1000000; long i; double mo = -1.0; double pi = acos(mo); double sc = 0.0; double ss = 0.0; double t = 0.0; double dt = pi/n; printf("%.17g \n", pi); printf("%.17g \n", dt); for (i=0; i< 40*n; i++) { sc += cos(t); ss += sin(t); t += dt; } printf("%.17g %.17g \n", sc, ss); } [karma] bug/timing% cat sincos_o.f90 integer, parameter :: n=1000000 integer :: i real(8) :: pi, ss, sc, t, dt pi = acos(-1.0d0) dt=pi/n sc=0 ss=0 t=0 do i= 1, 40*n sc = sc + cos(t) ss = ss + sin(t) t = t+dt end do print *, sc, ss end So from the PPC Darwin point of view, everything is working as expected. I have done a search on the regtest list based on FAIL: gcc.dg/builtins-59.c scan-tree-dump __builtin_cexpi assuming that platforms that do not pass it, are likely to have not __builtin_cexpi, thus are exposed to the same bad optimization. I have found the following list tested on a regular basis: powerpc-apple-darwin8.5.0 hppa2.0w-hp-hpux11.11 v850-unknown-elf sparc-unknown-elf sh-unknown-elf powerpc-unknown-eabisim mips-unknown-elf m32r-unknown-elf m32c-unknown-elf avr-unknown-none frv-unknown-elf arm-unknown-elf cris-axis-elf arm-none-eabi As far as I can tell, only the first two are tested against g++ and gfortran. Note that the list does not include powerpc64-apple-darwin8.8.0. So it seems that it has __builtin_cexpi. I don't know what will be the final decision about the proposed patch, but there is no "emergency" since I can use it for my coming weekly builds. I would prefer to have some feedback from the listed platforms before seeing the patch applied. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31249