This is the mail archive of the
mailing list for the GCC project.
Re: Performance regression
- From: Dale Johannesen <dalej at apple dot com>
- To: David Edelsohn <dje at watson dot ibm dot com>
- Cc: Dale Johannesen <dalej at apple dot com>, Richard Henderson <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Fri, 27 Sep 2002 13:51:25 -0700
- Subject: Re: Performance regression
On Friday, September 27, 2002, at 10:47 AM, David Edelsohn wrote:
Dale> The behavior we're seeing is that the inline happens on AIX but
Dale Johannesen writes:
Dale> on Darwin. I don't think binds_local explains this. (Darwin
Dale> set flag_pic true by default.)
binds_local does explain this.
OK, got it now, that call way over there from nowhere near the inlining
code does do that. Sorry.
Setting flag_pic true by default may not be a wise choice for
I'll kick that around, thanks. The default is supposed to be suitable
Darwin. It definitely inhibits optimizations. This is why I separated
flag_pic on AIX. GCC uses flag_pic to affect both data placement and
shared library behavior. A target which always is PIC may only want
former by default, as does AIX.
shared library inclusion at present (most of the OS is shared
In the meantime I tried with
-static -O3 -fomit-frame-pointer -funroll-loops
Now the inline does happen, but the bug still does not appear. Here is
the code for main(). You see I have 3 add insns while the AIX version
has only 1.