[Bug fortran/24964] New: Does not optimise abs(x)**2 to x**2
schnetter at aei dot mpg dot de
gcc-bugzilla@gcc.gnu.org
Sun Nov 20 23:54:00 GMT 2005
I use
$ ~/gcc/bin/gcc --version
gcc (GCC) 4.2.0 20051119 (experimental)
on the routine
double precision function abssqr (a)
implicit none
double precision, intent(in) :: a
abssqr = abs(a) ** 2
end function abssqr
with
$ ~/gcc/bin/gfortran -Wall -O3 -ffast-math -S abssqr.f90
which leads to the assembler output
.machine ppc
.text
.align 2
.globl _abssqr_
_abssqr_:
lfd f1,0(r3)
fabs f1,f1
fmul f1,f1,f1
blr
.subsections_via_symbols
I think that the term "abs(a)**2" should have been optimised to "a**2". I
think that this optimisation is valid even with IEEE semantics, but I would
expect it anyway with -ffast-math.
--
Summary: Does not optimise abs(x)**2 to x**2
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: enhancement
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: schnetter at aei dot mpg dot de
GCC build triplet: powerpc-apple-darwin8.3.0
GCC host triplet: powerpc-apple-darwin8.3.0
GCC target triplet: powerpc-apple-darwin8.3.0
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24964
More information about the Gcc-bugs
mailing list