This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Big find_cross_jump performance regression.
- To: Brad Lucier <lucier at math dot purdue dot edu>
- Subject: Re: Big find_cross_jump performance regression.
- From: Michael Matz <matzmich at cs dot tu-berlin dot de>
- Date: Fri, 26 May 2000 00:26:01 +0200 (MET DST)
- cc: gcc at gcc dot gnu dot org, feeley at iro dot umontreal dot ca
Hi,
On Thu, 25 May 2000, Brad Lucier wrote:
> I think I've localized the problem that the current CVS source has with
Nice analysis.
Though, for me the times the lines are executed is much smaller:
> 1050850 if (cross_jump && simplejump_p (insn))
E.g. this line for me only executed 36157 times.
> 312258938 find_cross_jump (insn, target,
> (optimize_size ? 1 : BRANCH_COST) + 1,
> &newjpos, &newlpos);
while this only 3241494 times. So the relation between both numbers is
(very) roughly the same.
> Now, I can't say that I understand this code, because I don't. But can
> I ask---can one take a worklist approach to all this, to either (a)
> cut down on the total number of iterations through the main loop or (b)
> not examine so many instructions each iteration? Or can there be some
> other way to reorganize this computation so it doesn't take so long?
On the weekend I will have a look into this. But there must be something
strange going on on your side, because with -O2 the time is in normal
range, while only with -O1 the process needs so much time to stabilize.
Meanwhile, because I'm curious, can you change in jump_optimize_1() all
calls to find_cross_jump() to not use BRANCH_COST in the third argument
but instead simply have a 2 there (as the whole third argument), as in
find_cross_jump(foo, bar, 2, &bla, &baz) and measure again? I'm just
interested if it has any effect, but as I simply can't reproduce...
Ciao,
Michael.