This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: SUBREG patch for ssa.c
On Fri, Jun 23, 2000 at 02:55:43PM -0700, Geoff Keating wrote:
> One reason for this is that the empty ends of the chain on, for
> instance,
>
> (insn 14 13 16 (sequence[
> (insn 98 0 99 (set (reg/v:DI 84)
> (reg/v:DI 84)) -1 (nil)
> (nil))
> (insn 99 98 0 (set (subreg:SI (reg/v:DI 84) 1)
> (reg:SI 85)) -1 (nil)
> (nil))
> ] ) 282 {*movsi_internal1} (nil)
> (nil))
>
> confuses rtl-analysis routines in the rest of the compiler.
Ok, that makes sense. The patch is ok then.
I recommend that you remove the clobber from
(insn 16 7 13 (clobber (reg:DI 85)) -1 (nil)
(insn_list:REG_LIBCALL 18 (nil)))
(insn 13 16 15 (sequence[
(set (reg:DI 86)
(reg:DI 85))
(set (subreg:SI (reg:DI 86) 0)
(ior:SI (subreg:SI (reg/v:DI 82) 0)
(subreg:SI (reg/v:DI 83) 0)))
] ) 83 {*boolsi3_internal1} (nil)
(expr_list:REG_NO_CONFLICT (reg/v:DI 82)
(expr_list:REG_NO_CONFLICT (reg/v:DI 83)
(nil))))
as soon as possible. It would also make sense to not
have the set in that instance as well. We don't seem
to be able to get rid of that set throughout the rest
of the compile.
r~