[PATCH] D131628: [LangRef] Add description for nocallback attribute

Daniel Thornburgh via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 15 14:12:58 PDT 2022


mysterymath added a comment.

In D131628#3724307 <https://reviews.llvm.org/D131628#3724307>, @jdoerfert wrote:

>> The linker must always drop nocallback.
>
> Yes, let's do that. We'll create a patch. Also for `inaccessiblememonly` and friends, see below.

If inaccessiblememonly is generated internally with the expectation of a per-translation-unit semantics, then it makes sense to summarily drop it.
But unless someone already has, we really should verify that __attribute__((leaf)) actually does have per-translation-unit semantics in GCC LTO, not per LTO-unit. I wouldn't be surprised if this feature predates LTO, and some kind of naive module merging in GCC may give it identical semantics to the one we have today.

There's even a case to be made for the LTO unit interpretation; it allows you to declare a function to effectively be a leaf if it can't call anything that could possible be included in the current LTO unit. This would allow pruning the reachability graph more thoroughly in LTO than the other interpretation, and I'd argue that this attribute is primarily useful for functions that are actually or approximately leaf functions.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D131628/new/

https://reviews.llvm.org/D131628



More information about the llvm-commits mailing list