This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug optimization/12630] [3.4 regression] Various unrecognizable insns and ICEs at -O3
- From: "dave at hiauly1 dot hia dot nrc dot ca" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Oct 2003 20:46:27 -0000
- Subject: [Bug optimization/12630] [3.4 regression] Various unrecognizable insns and ICEs at -O3
- References: <20031015232442.12630.danglin@gcc.gnu.org>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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