Enabling gcc optimization pass
Rohit Arul Raj
rohitarulraj@gmail.com
Thu Jul 26 12:58:00 GMT 2007
On 7/26/07, Basile STARYNKEVITCH <basile@starynkevitch.net> wrote:
> Rohit Arul Raj wrote:
> > Hi all,
> >
> > I have 3 functions- fun1, fun2, fun3 in the same source file and i
> > want to enable one or any of the gcc optimization pass to code in fun2
> > only,
> >
> > 1. Is it possible to implement this using function attributes or #pragms's?
>
>
> I believe that currently, tuning optimisation levels at a function granularity (or perhaps even smaller, like blocks) is
> impossible in current GCC. I heard at the GCC summit (18th july 2007 at Ottawa) that it would be a desirable feature,
> but I am not sure that someone is actively working on it.
>
> So currently, the answer seems to be no.
>
> >
As of now,
a) I have added target dependent function attributes for all
optimization levels in the backend.
b) In function execute_pass_list() i am having a condition check for
those function attributes, if a valid optimization level is given
as a function attribute, the global variable optimize and
optimize_size are overridden for the current function. For other
functions, the global variables are restored to their initial values.
For a simple case- fun1, fun2, fun3, i gave function attribute O1 to
fun2, while the other 2 functions optimization was not enabled. The
only difference i found was that IPA passes were not run, other than
that the code was optimized for fun2.
I am yet to check how it affects other cases.
Is there any other better way of implementing this?
>
> > 2. What will be its side-effects?
>
> Apparently, one of the issues is that some optimising passes (or their combination) rely on some global variable, so it
> is not a trivial job to tune optimisations at the function level.
>
> But I may be wrong on both points.
>
> --
> Basile STARYNKEVITCH http://starynkevitch.net/Basile/
> email: basile<at>starynkevitch<dot>net | mobile: +33 6 8501 2359
> 8, rue de la Faiencerie, 92340 Bourg La Reine, France
> *** opinions {are only mine, sont seulement les miennes} ***
>
Regards,
Rohit
More information about the Gcc
mailing list