Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary:
Use Link Time Optimization (LTO) when building templates. Closes #660
Motivation:
Significantly reduced binary size. This means:
this applies to both the PROS kernel, and all PROS templates
Implementation
If
IS_LIBRARY
is equal to1
, then-flto
is added toGCCFLAGS
. This is done so LTO is not used for user projects, where LTO would have minimal effect yet build time is noticeably increased.Since LTO can break when compiling code that does not follow strict aliasing rules, some code in PROS had to be modified. While one could just use
-fno-strict-aliasing
and-Wno-lto-type-mismatch
, the benefits of LTO would be reduced, so instead these issues have been fixed.Binary Size
(pending build by PROS)
Build times
(pending build by PROS)
Test Plan: