This is the mail archive of the gcc-patches@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]
Other format: [Raw text]

Re: Share clobbers of hard registers...


> > 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


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