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,
> > during merging new loop unroller, I have encountered the following
> > problem (masked on rtlopt branch by other pass):
> >
> > Consider loop in that strcmp is called; it is translated into rtl as
> >
> > (insn 542 541 543 (nil) (set (reg:SI 236)
> > (mem/s/u:SI (plus:SI (reg:SI 235)
> > (reg:SI 231)) [9 <variable>.name+0 S4 A32])) -1 (nil)
> > (nil))
> >
> > (insn 543 542 544 (nil) (set (mem/f:SI (plus:SI (reg/f:SI 56 virtual-outgoing-args)
> > (const_int 4 [0x4])) [0 S4 A32])
> > (reg:SI 236)) -1 (nil)
> > (insn_list:REG_LIBCALL 547 (nil)))
> >
> > (insn 544 543 545 (nil) (set (reg:SI 237)
> > (mem/f:SI (symbol_ref:SI ("ix86_cpu_string")) [9 ix86_cpu_string+0 S4 A32])) -1 (nil)
> > (nil))
> >
> > (insn 545 544 546 (nil) (set (mem/f:SI (reg/f:SI 56 virtual-outgoing-args) [0 S4 A32])
> > (reg:SI 237)) -1 (nil)
> > (nil))
> >
> > (call_insn/u 546 545 547 (nil) (set (reg:SI 0 eax)
> > (call (mem:QI (symbol_ref:SI ("strcmp")) [0 S1 A8])
> > (const_int 8 [0x8]))) -1 (nil)
> > (expr_list:REG_EH_REGION (const_int -1 [0xffffffff])
> > (nil))
> > (expr_list (use (mem:BLK (scratch) [0 A8]))
> > (nil)))
> >
> > (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?
>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.
Zdenek