This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Re: arm-elf bad code generation
- To: rearnsha at arm dot com
- Subject: Re: arm-elf bad code generation
- From: Philip Blundell <pb at labs dot futuretv dot com>
- Date: Tue, 22 Aug 2000 16:22:01 +0100
- cc: nickc at cygnus dot com, gcc-bugs at gcc dot gnu dot org
- References: <200008221508.QAA11498@cam-mail2.cambridge.arm.com>
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.