Fix partial discarding of function hash info for PGO #3511
Merged
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.
See Clang PR: https://reviews.llvm.org/D79961
Note that we do not include versioning code for our PGO files: PGO files from older LDC versions are not guarantee to work with newer versions of LDC. The user will see warnings about different function hashes, so he is aware the profile is not applied for those functions. Hash clashes may occur (old version hash corresponding to different function newer version hash), which is unfortunate but I think we do not need to go to the length of solving that as it only concerns optimization, not miscompilation. (it is similar that we don't guarantee object files from older compiler to work with newer compiler due to potential ABI changes which may also be silent)
Thanks @jondegenhardt