------- Comment #18 from burnus at gcc dot gnu dot org 2009-09-11 22:07 -------
I looked at the assembler and the result is the following (non volatile vs.
volatile) [which is essentially the same with REAL(8) and REAL(4)]:
@@ -9,7 +9,7 @@
movl %esp, %ebp
subl $392, %esp
movl $.LC0, -360(%ebp)
- movl $9, -356(%ebp)
+ movl $8, -356(%ebp)
movl $128, -368(%ebp)
movl $5, -364(%ebp)
leal -368(%ebp), %eax
@@ -33,16 +33,16 @@
flds -24(%ebp)
flds -24(%ebp)
fmulp %st, %st(1)
- fstps -12(%ebp)
+ fstps -16(%ebp)
flds -28(%ebp)
flds -28(%ebp)
fmulp %st, %st(1)
- fstps -16(%ebp)
- flds -12(%ebp)
- fsubs -16(%ebp)
+ fstps -12(%ebp)
+ flds -16(%ebp)
+ fsubs -12(%ebp)
fstps -20(%ebp)
movl $.LC0, -360(%ebp)
- movl $16, -356(%ebp)
+ movl $15, -356(%ebp)
movl $128, -368(%ebp)
movl $6, -364(%ebp)
leal -368(%ebp), %eax
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41335