Turn on Shrink Wrapping for Linaro 47 and upstream 48

Registered by Ramana Radhakrishnan

Shrink-wrapping is a feature that was enabled upstream in GCC 4.7 but not for the ARM port. This requires at the minimum the definition of a new backend pattern "simple_return" to enable this feature to work. However this requires co-ordination with the way in which the epilogue is being generated which is being rewritten to the RTL form. Thus this work in upstream FSF 4.8 should wait for the new epilogue infrastructure while in Linaro 4.7 we can afford to rewrite a simpler form that will use the existing infrastructure.

Blueprint information

Status:
Complete
Approver:
Michael Hope
Priority:
Medium
Drafter:
Ramana Radhakrishnan
Direction:
Approved
Assignee:
Zhenqiang Chen
Definition:
Approved
Series goal:
None
Implementation:
Informational Informational
Milestone target:
None
Started by
Michael Hope
Completed by
Matthew Gretton-Dann

Related branches

Sprints

Whiteboard

[matthew-gretton-dann 2013-03-20] This is now tracked by: http://cards.linaro.org/browse/TCWG-11

Meta:
Headline: Enabling shrinkwrapping (early function exit) optimisations in GCC
Acceptance: https://wiki.linaro.org/WorkingGroups/ToolChain/std-performance-acceptance, Additionally broken packages from earlier shrink wrapping implementation to be tested for a sanity check.
Roadmap id: CARD-304

The implementation depends on whether we backport the RTL epilogues patch into Linaro 4.7 as there will be some churn because of that.

Earlier bugs can be found here

 https://bugs.launchpad.net/gcc-linaro/+bugs?field.tag=shrinkwrap

This bug should be investigated for code quality for the shrinkwrap implementation

https://bugs.launchpad.net/gcc-linaro/+bug/767986

(?)

Work Items

Work items:
Implement simple_return pattern: DONE
Adjust return pattern in Linaro: DONE
Find broken packages with earlier shrink wrapping implementation: DONE
Test with cases that failed in earlier shrink wrapping implementation: DONE
Benchmark to show no performance degredation: DONE
Upstream to GCC: INPROGRESS
Backport to GCC Linaro: TODO

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.