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.
Surprisingly this leads to some code size savings on itsybitsym4, even though LTO optimization should have let the compiler deduce (almost) all of this.
When a compiler knows a call can never return, it is possibly able to avoid emitting code, such as saving caller-saved registers to the stack, or doing ANYTHING affter the function returns, explaining why code size savings is possible with this attribute.
With the exception of raise_deinited_error, these were found by checking the functions found by
-Wmissing-noreturn
and making a case by case decision. However, this dignostic can't be enabled unconditionally as it has false positives, functions we do NOT want to mark as noreturn.Testing performed: built itsybitsy m4, flash size savings 128 bytes. I didn't test on hardware as none came on this trip with me.