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]

Re: Big find_cross_jump performance regression.


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.


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