Eric Botcazou wrote:
>> AFAIK not one of the tree optimizers disables itself, but perhaps we
>> should. The obvious candidates would be the ones that require
>> recomputation of alias analysis, and the ones that don't update SSA
>> info on the fly (i.e. require update_ssa, which is a horrible compile
>> time hog).
>>     
>
> Tree alias analysis can partially disable itself though:
>
>   /* If the program has too many call-clobbered variables and/or function
>      calls, create .GLOBAL_VAR and use it to model call-clobbering
>      semantics at call sites.  This reduces the number of virtual operands
>      considerably, improving compile times at the expense of lost
>      aliasing precision.  */
>   maybe_create_global_var (ai);
>
> We have found this to be quite helpful on gigantic elaboration procedures 
> generated for Ada packages instantiating gazillions of generics.  We have 
> actually lowered the threshold locally.
>
>   
I would like to point out that the central point of my proposal was to
have the compilation manager be the process that manages if an
optimization is skipped or not rather than having each pass make a
decision on it's own.  If we have a central mechanism, then it is
relative easy to find some sweet spots.  If every pass rolls its own, it
is more difficult to balance.


Kenny

Reply via email to