Help: Function prologue: mov vs push instruction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am analyzing some performance issue and see that the push
instruction in function prologue taking long CPU time.  I noticed with
4.4.3 compiler I used to see mov instruction where as in 4.8.3
compiler I am seeing push instructions in prologue. Can anyone please
let me know what decides which instructions to use?

I see below prologue RTL in 4.4.3,

(insn/f 98 12 99 2 stphjin.c:913 (set (mem:DI (plus:DI (reg/f:DI 7 sp)

                (const_int -48 [0xffffffffffffffd0])) [0 S8 A8])

        (reg:DI 3 bx)) -1 (nil))



(insn/f 99 98 100 2 stphjin.c:913 (set (mem:DI (plus:DI (reg/f:DI 7 sp)

                (const_int -40 [0xffffffffffffffd8])) [0 S8 A8])

        (reg:DI 6 bp)) -1 (nil))



(insn/f 100 99 101 2 stphjin.c:913 (set (mem:DI (plus:DI (reg/f:DI 7 sp)

                (const_int -32 [0xffffffffffffffe0])) [0 S8 A8])

        (reg:DI 41 r12)) -1 (nil))



(insn/f 101 100 102 2 stphjin.c:913 (set (mem:DI (plus:DI (reg/f:DI 7 sp)

                (const_int -24 [0xffffffffffffffe8])) [0 S8 A8])

        (reg:DI 42 r13)) -1 (nil))



(insn/f 102 101 103 2 stphjin.c:913 (set (mem:DI (plus:DI (reg/f:DI 7 sp)

                (const_int -16 [0xfffffffffffffff0])) [0 S8 A8])

        (reg:DI 43 r14)) -1 (nil))



(insn/f 103 102 104 2 stphjin.c:913 (set (mem:DI (plus:DI (reg/f:DI 7 sp)

                (const_int -8 [0xfffffffffffffff8])) [0 S8 A8])

        (reg:DI 44 r15)) -1 (nil))



(insn/f 104 103 105 2 stphjin.c:913 (parallel [

            (set (reg/f:DI 7 sp)

                (plus:DI (reg/f:DI 7 sp)

                    (const_int -56 [0xffffffffffffffc8])))

            (clobber (reg:CC 17 flags))

            (clobber (mem:BLK (scratch) [0 A8]))

        ]) -1 (nil))


Where as in 4.8.3 the prologue RTL is as below

(note 12 1 101 2 [bb 2] NOTE_INSN_BASIC_BLOCK)

(insn/f 101 12 102 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])

        (reg:DI 44 r15)) stphjin.c:1039 -1

     (nil))

(insn/f 102 101 103 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])

        (reg:DI 43 r14)) stphjin.c:1039 -1

     (nil))

(insn/f 103 102 104 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])

        (reg:DI 42 r13)) stphjin.c:1039 -1

     (nil))

(insn/f 104 103 105 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])

        (reg:DI 41 r12)) stphjin.c:1039 -1

     (nil))

(insn/f 105 104 106 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])

        (reg:DI 6 bp)) stphjin.c:1039 -1

     (nil))

(insn/f 106 105 107 2 (set (mem:DI (pre_dec:DI (reg/f:DI 7 sp)) [0  S8 A8])

        (reg:DI 3 bx)) stphjin.c:1039 -1

     (nil))

(insn/f 107 106 108 2 (parallel [

            (set (reg/f:DI 7 sp)

                (plus:DI (reg/f:DI 7 sp)

                    (const_int -24 [0xffffffffffffffe8])))

            (clobber (reg:CC 17 flags))

            (clobber (mem:BLK (scratch) [0  A8]))

        ]) stphjin.c:1039 -1

     (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp)

            (plus:DI (reg/f:DI 7 sp)

                (const_int -24 [0xffffffffffffffe8])))

        (nil)))

(note 108 107 2 2 NOTE_INSN_PROLOGUE_END)

 Thanks and Best Regards,

C Jaiprakash




[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux