[PATCH] D109112: [darwin/x86] Model cxx_fast_tlscc as not preserving r11

John McCall via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Jul 15 11:52:18 PDT 2022


rjmccall added a comment.

I think I can speak authoritatively at this point that the right way to understand this convention is:

- Functions defined using this convention must promise to preserve all registers.
- As a general rule, calls that are not direct calls within a linkage unit may invalidate linker scratch registers such as `r11`.
- Therefore, calls to the function may rely on all non-linker-scratch registers as being preserved, but may only rely on linker scratch registers being preserved if the call is a direct call to a callee known to be within the current linkage unit.

I'll leave it to LLVM folks to decide how they want to model that.


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

https://reviews.llvm.org/D109112



More information about the llvm-commits mailing list