This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: libcall problem during new unroller merge
Hello,
> > > > (insn 547 546 548 (nil) (set (reg:SI 238)
> > > > (reg:SI 0 eax)) -1 (nil)
> > > > (insn_list:REG_RETVAL 543 (expr_list:REG_EQUAL (expr_list (use (mem:BLK (scratch) [0 A8]))
> > > > (expr_list (symbol_ref:SI ("strcmp"))
> > > > (expr_list (mem/f:SI (symbol_ref:SI ("ix86_cpu_string")) [9 ix86_cpu_string+0 S4 A32])
> > > > (expr_list (mem/s/u:SI (plus:SI (reg:SI 235)
> > > > (reg:SI 231)) [9 <variable>.name+0 S4 A32])
> > > > (nil)))))
> > > > (nil))))
> >
> > one question to this -- what does the expr_list inside REG_EQUAL mean?
>
> It is just place holder - we don't have RTL construct to represent call
> with arguments, so we present it as linked list of expression. Function
> is first, arguments follows
> > >From the documentation I've got feeling that there should be rtl
> > expression of value of libcall; is this some way to express that this
> > is call to function with those arguments that is not documented?
> > Anyway, it makes delete_trivially_dead_insns wrong, as it does not
> > find register usage in this REG_EQUAL note.
>
> THis looks like the problem. Now I see, delte_trivially_dead_insns
> ignores body of expr_list.
> DOes this patch fix the problem?
yes; it seems that disappearance of both registers was caused by this
bug. I will run the bootstrap again, hopefully it will pass now.
Zdenek