This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
arguements used in .c.26.flow2 are not used in assembly codes
- From: Liu Haibin <liu dot haibin at gmail dot com>
- To: gcc at gcc dot gnu dot org
- Date: Thu, 22 Sep 2005 18:45:15 +0800
- Subject: arguements used in .c.26.flow2 are not used in assembly codes
- Reply-to: Liu Haibin <liu dot haibin at gmail dot com>
Hi,
I compiled the following code using nios gcc -da -O3 (gcc version 3.3.3)
#include <math.h>
#define PI (4*atan(1))
double rad2deg(double rad)
{
return (180.0 * rad / (PI));
}
The begining of the .s file is
rad2deg:
addi sp, sp, -16
stw fp, 8(sp)
mov r6, zero
mov fp, sp
movhi r7, %hiadj(1080459264)
addi r7, r7, %lo(1080459264)
stw ra, 12(sp)
stw r16, 4(sp)
stw r17, 0(sp)
call __muldf3
mov r4, zero
movhi r5, %hiadj(1072693248)
addi r5, r5, %lo(1072693248)
mov r16, r2
mov r17, r3
call atan
......
The corresponding rtl to "call __muldf3" in .c.26.flow2 file is
(call_insn/u 17 16 21 0 0x0 (parallel [
(set (reg:DF 2 r2)
(call (mem:QI (symbol_ref:SI ("__muldf3")) [0 S1 A8])
(const_int 0 [0x0])))
(clobber (reg:SI 31 ra))
]) 44 {*call_value} (insn_list 15 (nil))
(expr_list:REG_DEAD (reg:DF 4 r4)
(expr_list:REG_DEAD (reg:DF 6 r6)
(expr_list:REG_UNUSED (reg:SI 31 ra)
(expr_list:REG_EH_REGION (const_int -1 [0xffffffff])
(nil)))))
(expr_list (use (reg:DF 6 r6))
(expr_list (use (reg:DF 4 r4))
(nil))))
According to the rtl, it uses r4, r5, r6 and r7 as arguements. But the
assemble codes show no r4 or r5 is ever used before "call __muldf3".
Any idea why it is so?
Thanks
Haibin