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: Philip Blundell <pb at labs dot futuretv dot com>
- Subject: Re: arm-elf bad code generation
- From: Richard Earnshaw <rearnsha at arm dot com>
- Date: Tue, 22 Aug 2000 16:33:34 +0100
- Cc: nickc at cygnus dot com, gcc-bugs at gcc dot gnu dot org
- Cc: rearnsha at arm dot com
- Organization: ARM Ltd.
- Reply-To: rearnsha at arm dot com
pb@labs.futuretv.com said:
> In message <200008221508.QAA11498@cam-mail2.cambridge.arm.com>, Richard Earnshaw 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:
Ok, and both that and the subsequent stack write appear to be in alias set
0, so why is the scheduler re-ordering them?
> (insn 441 440 442 (clobber (mem:BLK (reg:SI 13 sp) 0)) -1 (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)))
>