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

question regarding regrename and failure of 950704-1.c on main branch


At -O2 under hppa-hpux and hppa-linux on 32-bit targets, the register
rename pass transforms this rtl from 950704.c

(insn 18 17 201 (set (reg/v:DI 22 %r22 [97])
        (plus:DI (reg/v:DI 20 %r20 [95])
            (reg/v:DI 2 %r2 [96]))) 161 {*pa.md:3828} (insn_list 6 (insn_list 4 (nil)))
    (expr_list:REG_DEAD (reg:SI 21 %r21)
        (nil)))

to this rtl

(insn 18 17 201 (set (reg/v:DI 22 %r22 [97])
        (plus:DI (reg:DI 25 %r25 [95])
            (reg:DI 23 %r23 [96]))) 161 {*pa.md:3828} (insn_list 6 (insn_list 4 (nil)))
    (expr_list:REG_DEAD (reg:SI 26 %r26)
        (expr_list:REG_DEAD (reg:SI 24 %r24)
            (nil))))

DI 22 overlaps DI 23.  There is no early clobber in the contraints for
the pattern *pa.md:3828.

The failure started on or around April 30.  Is it now necessary to mark
the output of DI mode arithmetic operations on 32-bit machines early
clobber to prevent overlaps such as this?  Or, is this a regrename bug?

Dave
-- 
J. David Anglin                                  dave.anglin@nrc.ca
National Research Council of Canada              (613) 990-0752 (FAX: 952-6605)


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