This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Gcc 3.1 performance regressions with respect to 2.95.3
- From: law at redhat dot com
- To: David Edelsohn <dje at watson dot ibm dot com>
- Cc: Michael Matz <matzmich at cs dot tu-berlin dot de>, gcc at gcc dot gnu dot org
- Date: Mon, 18 Mar 2002 14:11:04 -0700
- Subject: Re: Gcc 3.1 performance regressions with respect to 2.95.3
- Reply-to: law at redhat dot com
In message <200203182058.PAA17974@makai.watson.ibm.com>, David Edelsohn
writes:
> The LIBCALLs look like:
>
> (clobber (reg:DI X)) [LIBCALL]
> (set (subreg:SI (reg:DI X) 0) ...)
> (set (subreg:SI (reg:DI X) 4) ...)
> (set (reg:DI X) (reg:DI X)) [RETVAL]
> (set ... (reg:DI 312))
>
> So, we have DEF-DEF-DEF-DEF-USE chain. Is there anything in the scheduler
> attempting to keep DEF-DEF dependencies near each other? In some sense is
> the DEF a "USE" of the CLOBBER?
No there is nothing to do that, nor should there be. This should be driven
by the cost of the dependency write-write dependency. If the cost is high,
then
the two instructions should move away from each other. If the cost is low,
then they should stay close together. The costs are derived from the
scheduling
information in the MD file.
What you need to do is get the cost of the dependency from the scheduler dumps.
jeff