This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: 3.1 regrename.c doesn't handle which_alternative==-1
- From: Michael Matz <matzmich at cs dot tu-berlin dot de>
- To: Brad Lucier <lucier at math dot purdue dot edu>
- Cc: <gcc at gcc dot gnu dot org>, <feeley at iro dot umontreal dot ca>
- Date: Tue, 30 Apr 2002 18:37:20 +0200 (MET DST)
- Subject: Re: 3.1 regrename.c doesn't handle which_alternative==-1
Hi,
On Tue, 30 Apr 2002, Brad Lucier wrote:
> > Can you do a "p debug_rtx(insn)" in gdb at that line, after the
> > SEGV?
>
> (gdb) p debug_rtx(insn)
> (insn 25568 25566 25570 (set (reg:SF 72 %f40 [127])
> (mem:SF (plus:SI (reg/v:SI 16 %l0 [116])
> (const_int 19 [0x13])) [0 S4 A64])) 85 {*movsf_insn_novis} (nil)
> (nil))
Hmm, this looks sane, and should match alternative 6 (from 0). Operand 0
is a floatreg (matching 'f'), operand 1 a mem, whose address seems valid
to me (a general reg + a small constant) (matching the 'm'). No idea why
it doesn't. Try to step through constrain_operands(), why the operands do
not match their constraint in the way constrain_operands() is checking
them (i.e. wait in the outer do() loop for which_alternative being 6, and
check how it procedes through the operands and their constraints).
Ciao,
Michael.