Avoid creating locals for unrechable terminators. #736
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.
In the unrechable terminator, we often needlessly create a temporary variable. The code accessing and returning that variable ought to never execute anyway.
This PR changes
cg_gcc
to return a constant 0 instead when possible. This should remove the need for the temporary in most cases, and have no effect on runtime(we change dead code + returning uninitialized locals is UB anyway, so returning 0 is fine). From a cursory look, this has little to no effect on the generated assembly(when optimizations are enabled), and should reduce the memory consumption of cg_gcc slightly(no needless locals),