This is the mail archive of the gcc-bugs@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]

Re: arm-elf bad code generation


In message <200008221508.QAA11498@cam-mail2.cambridge.arm.com>, Richard Earnsha
w writes:
>Hmm, arm_expand_prologue inserts the following CLOBBER which is supposed 
>to prevent moves across this point.  The question is, why doesn't it?  
>Maybe it's an alias set problem, but I don't know the details of how that 
>works.

Well, the CLOBBER certainly does get generated.  In the .21.ce2 dump I see:

(insn/f 440 438 441 (set (reg:SI 13 sp)
        (plus:SI (reg:SI 13 sp)
            (const_int -32 [0xffffffe0]))) -1 (nil)
    (nil))

(insn 441 440 442 (clobber (mem:BLK (reg:SI 13 sp) 0)) -1 (nil)
    (nil))

(note 442 441 25 NOTE_INSN_PROLOGUE_END -1347440721)

(insn 25 442 382 (set (reg:SI 12 ip)
        (mem/f:SI (plus:SI (reg:SI 11 fp)
                (const_int 12 [0xc])) 7)) 172 {*arm_movsi_insn} (nil)
    (nil))

(insn 382 25 6 (set (mem:SI (plus:SI (reg:SI 11 fp)
                (const_int -56 [0xffffffc8])) 0)
        (reg:SI 12 ip)) 172 {*arm_movsi_insn} (insn_list 25 (nil))
    (nil))

(insn 6 382 50 (set (mem:SI (plus:SI (reg:SI 11 fp)
                (const_int -44 [0xffffffd4])) 0)
        (reg:SI 1 r1)) 172 {*arm_movsi_insn} (nil)
    (expr_list:REG_DEAD (reg:SI 1 r1)
        (nil)))

but in .24.sched2 there is:

(insn 6 25 4 (set (mem:SI (plus:SI (reg:SI 11 fp)
                (const_int -44 [0xffffffd4])) 0)
        (reg:SI 1 r1)) 172 {*arm_movsi_insn} (insn_list 438 (nil))
    (expr_list:REG_DEAD (reg:SI 1 r1)
        (nil)))

(insn 4 6 47 (set (reg/v:SI 5 r5)
        (reg:SI 0 r0)) 172 {*arm_movsi_insn} (insn_list:REG_DEP_ANTI 436 (nil))
    (nil))

(insn/i 47 4 382 (set (reg:SI 1 r1)
        (const_int 20 [0x14])) 172 {*arm_movsi_insn} (insn_list:REG_DEP_ANTI 6 (nil))
    (expr_list:REG_EQUIV (const_int 20 [0x14])
        (nil)))

(insn 382 47 440 (set (mem:SI (plus:SI (reg:SI 11 fp)
                (const_int -56 [0xffffffc8])) 0)
        (reg:SI 12 ip)) 172 {*arm_movsi_insn} (insn_list 25 (insn_list 438 (nil)))
    (nil))

(insn/f 440 382 441 (set (reg:SI 13 sp)
        (plus:SI (reg:SI 13 sp)
            (const_int -32 [0xffffffe0]))) 4 {*arm_addsi3} (insn_list:REG_DEP_ANTI 435 (insn_list 436 (nil)))
    (nil))

(insn 441 440 442 (clobber (mem:BLK (reg:SI 13 sp) 0)) -1 (insn_list 440 (insn_list:REG_DEP_OUTPUT 436 (nil)))
    (nil))

p.



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