The following change, which I bootstrapped on powerpc-unknown-linux-gnu (C and f95) without regressions, leads the Fortran front-end to generate expressions x**(-n) with n constant as if they were written (1/x)**n. This will enable more opportunities for CSE in case multiple powers of the same base are needed in an expression. E.g., the following: function force(d) force = d**(-2) + d**(-6) + d**(-8) + d**(-12) end will lead to the following floating point operations (when using -ffast-math, whereas the current method needs four divisions and uses no fused multiply-add. fdivs 1,1,13 fmuls 0,1,1 fmuls 1,1,0 fmuls 13,0,0 fmuls 1,1,1 fadds 0,0,1 fmadds 13,13,13,0 fmadds 1,1,1,13 Paul, is this OK ? -- Toon Moene - mailto:toon@moene.indiv.nluug.nl - phoneto: +31 346 214290 Saturnushof 14, 3738 XG Maartensdijk, The Netherlands Maintainer, GNU Fortran 77: http://gcc.gnu.org/onlinedocs/g77_news.html GNU Fortran 95: http://gcc.gnu.org/fortran/ (under construction)