Could you please clarify about GCC optimizations?

Jeff Law law@redhat.com
Fri Aug 8 19:07:00 GMT 2014


On 08/08/14 06:18, Evgeniya Maenkova wrote:
> As far as I know, there are so many configurations (frontends x
> backends x applications(benchmarks) x etc), that the same optimization
> could improve performance in one configuration and degrade at other
> conditions.
Correct.

> What performance tests do you perform before including an optimization
> in GCC? How do you aggregate the results (taking into account
> different behavior on different frontend/backend/benchmarks)?
> Excuse me, if some information is available in GCC documentation,
> didn’t found so far.
Each developer makes their own determination as to what performance 
tests are appropriate to run and on what platforms to run those tests. 
Some rely largely on SPEC, others utilize large desktop applications 
such as firefox and others are more focused on EEMBC, etc.  It really 
depends on each developer's focus.

In general optimizations on GIMPLE/SSA are in large designed to 
eliminate as much redundancy as possible independent of the target 
processor.  There are exceptions, but as a guiding principle that is 
correct.

When GIMPLE is lowered to RTL, the expanders query the backend for a 
information to guide lowering to RTL in a target dependent way. 
Similarly the RTL optimizers are designed to query the backend for 
information to guide low level aspects of code generation and optimization.

When optimizations are submitted for inclusion, there's a review process 
where the code reviewers may ask questions or ask for further 
benchmarks, etc.  The reviewers also use their experience to guide 
submissions in the right direction.

So there's no single simple answer.  It varies based on many factors.

jeff



More information about the Gcc mailing list