This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Share clobbers of hard registers...
- From: Jan Hubicka <hubicka at ucw dot cz>
- To: Josef Zlomek <zlomj9am at artax dot karlin dot mff dot cuni dot cz>
- Cc: Jan Hubicka <jh at suse dot cz>, gcc-patches at gcc dot gnu dot org
- Date: Thu, 5 Feb 2004 11:38:04 +0100
- Subject: Re: Share clobbers of hard registers...
- References: <20040119204859.GX7878@kam.mff.cuni.cz> <20040205101811.GA2838@artax.karlin.mff.cuni.cz>
> > while thinking about what impact new i386 backend may have on compile
> > times, I run across idea to share clobbers of flags register. This
> > change RTL sharing rules, but I don't know of anything that might break.
> > On combine.i it reduce amount of clobbers produced from 2700 to 111, but
> > overall it has relatively small impact on compile times. It also reduce
> > size of insn-emit.o :)
>
> This caused PR/13938 and probably PR/13893 too.
> Reverting this patch fixes it.
>
> The problem in PR/13938 is that clobber in
>
> (insn 57 17 59 1 (parallel [
> (set (mem:DI (plus:SI (reg/f:SI 6 bp)
> (const_int -16 [0xfffffff0])) [0 S8 A8])
> (fix:DI (reg/v:DF 9 st(1) [orig:59 x ] [59])))
> (use (mem:HI (plus:SI (reg/f:SI 6 bp)
> (const_int -2 [0xfffffffe])) [0 S2 A8]))
> (use (mem:HI (plus:SI (reg/f:SI 6 bp)
> (const_int -4 [0xfffffffc])) [0 S2 A8]))
> (clobber (reg:DF 9 st(1)))
> ]) 146 {fix_truncdi_memory} (insn_list 17 (insn_list 48 (insn_list 51 (nil))))
> (expr_list:REG_DEAD (reg/v:DF 9 st(1) [orig:59 x ] [59])
> (expr_list:REG_UNUSED (reg/v:DF 9 st(1) [orig:59 x ] [59])
> (nil))))
>
> is shared with
>
> (insn 89 23 90 3 (parallel [
> (set (mem:DI (plus:SI (reg/f:SI 6 bp)
> (const_int -16 [0xfffffff0])) [0 S8 A8])
> (fix:DI (reg:DF 8 st)))
> (use (mem:HI (plus:SI (reg/f:SI 6 bp)
> (const_int -2 [0xfffffffe])) [0 S2 A8]))
> (use (mem:HI (plus:SI (reg/f:SI 6 bp)
> (const_int -4 [0xfffffffc])) [0 S2 A8]))
> (clobber (reg:DF 9 st(1)))
> ]) 146 {fix_truncdi_memory} (insn_list 23 (insn_list 85 (insn_list 88 (nil))))
> (expr_list:REG_DEAD (reg:DF 8 st)
> (nil)))
>
> but in the first insn there should be
> (clobber (reg/v:DF 9 st(1)))
> instead of
> (clobber (reg:DF 9 st(1)))
Hmm, what it makes difference on whether it is REG/v or REG?
Honza