This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
question regarding regrename and failure of 950704-1.c on main branch
- From: "John David Anglin" <dave at hiauly1 dot hia dot nrc dot ca>
- To: gcc at gcc dot gnu dot org
- Cc: rth at redhat dot com
- Date: Thu, 9 May 2002 16:49:55 -0400 (EDT)
- Subject: 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)