[Bug optimization/12630] [3.4 regression] Various unrecognizable insns and ICEs at -O3
dave at hiauly1 dot hia dot nrc dot ca
gcc-bugzilla@gcc.gnu.org
Thu Oct 16 20:46:00 GMT 2003
PLEASE REPLY TO gcc-bugzilla@gcc.gnu.org ONLY, *NOT* gcc-bugs@gcc.gnu.org.
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12630
------- Additional Comments From dave at hiauly1 dot hia dot nrc dot ca 2003-10-16 20:46 -------
Subject: Re: [3.4 regression] Various unrecognizable
> > (insn 6 4 7 0 ../../gcc/gcc/varasm.c:1902 (parallel [
> > (set (mem/s:BLK (reg/f:SI 95) [102 d+0 S24 A32])
> > (mem/s:BLK (reg/v/f:SI 94 [ d ]) [102 d+0 S24 A32]))
> > (clobber (reg/f:SI 95))
> > (clobber (reg/f:SI 96 [ d ]))
> > (clobber (reg:SI 97))
> > (clobber (reg:SI 98))
> > (clobber (reg:SI 99))
> > (use (const_int 24 [0x18]))
> > (use (const_int 4 [0x4]))
> > ]) 72 {movstrsi_internal} (nil)
> > (nil))
> >
> > Insn 5 has been deleted.
> >
> > I don't see any way to have an insn with an operand that's both an input
> > and clobbered.
>
> This is not problem - you simply load the value into input operant and
> then don't expect it to stay there after the instruction.
> The transfromation above looks valid to me. Reload ought to be able to
> manage the set operand match clobbers.
Possibly reload would fix this up but we didn't get that far. The problem
as I see it is that there is no indication that SI 94 is clobbered and
has to die. I think this is why there is an inconsistency in the death
notes and the ICE. If SI 94 were used after this instruction, the
transformation wouldn't be valid.
Dave
More information about the Gcc-bugs
mailing list