This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]