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]
Other format: [Raw text]

Re: Could you please clarify about GCC optimizations?


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


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