-
Notifications
You must be signed in to change notification settings - Fork 12.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[BasicBlockSections] Allow mixing of -basic-block-sections with MFS. #117076
Conversation
5d1a7a4
to
32c4db0
Compare
// Do not split functions when -basic-block-sections=all is specified. | ||
if (MF.getTarget().getBBSectionsType() == llvm::BasicBlockSection::All) | ||
return false; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do you intend to support this combination in the future? I think basic block sections is useful for mapping in general beyond it's use in Propeller. If I recall correctly @boomanaiden154 mentioned this type of usage.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes. This applies for AutoFDO builds. The idea is to apply Propeller for functions whose BasicBlockAddressMap structure doesn't change since the profile was collected (even though those functions may have been optimized by autofdo).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For mapping, we just use the basic block address map rather than basic block sections as we only need to know where blocks are and their size rather than any ability to rearrange/GC them in the linker.
7bf6b0d
to
39d8195
Compare
Thanks for the quick review! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm
39d8195
to
cdb3828
Compare
This PR allows mixing
-basic-block-sections
with-enable-machine-function-splitter
. The strategy is to let-basic-block-sections
take precedence over functions with profiles.