This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

arguements used in .c.26.flow2 are not used in assembly codes


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]