[PATCH] D62766: [Attributor] Deduce "nosync" function attribute.
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 12 16:57:21 PDT 2019
arsenm added inline comments.
================
Comment at: llvm/docs/LangRef.rst:1476-1478
+ This function attribute indicates that the function does not communicate
+ (synchronize) with another thread. If the function does ever synchronize
+ with another thread, the behavior is undefined.
----------------
I think this is a bit vague. In particular I don't think the LangRef defines what a "thread" means anywhere. I also think this needs to be more clear on what kinds of synchronization is allowed. Is this only communication through some addressable memory? What about GPU cross lane communication operations?
I'm wondering if this is sufficient to solve this problem: http://lists.llvm.org/pipermail/llvm-dev/2013-November/067359.html
TLDR, memory instructions can currently be hoisted over an arbitrary call if they are accessing a noalias argument
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62766/new/
https://reviews.llvm.org/D62766
More information about the llvm-commits
mailing list