[llvm] r267647 - [Docs] Try to clarify the concept of domains for noalias scope
Adam Nemet via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 26 17:52:48 PDT 2016
Author: anemet
Date: Tue Apr 26 19:52:48 2016
New Revision: 267647
URL: http://llvm.org/viewvc/llvm-project?rev=267647&view=rev
Log:
[Docs] Try to clarify the concept of domains for noalias scope
Summary:
This tries to anchor down the concept of domains a bit better. I had
trouble initially relating this to anything. Also talking to David
Majnemer on IRC suggested that I wasn't the only one.
Reviewers: hfinkel
Subscribers: llvm-commits, majnemer
Differential Revision: http://reviews.llvm.org/D18799
Modified:
llvm/trunk/docs/LangRef.rst
Modified: llvm/trunk/docs/LangRef.rst
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/docs/LangRef.rst?rev=267647&r1=267646&r2=267647&view=diff
==============================================================================
--- llvm/trunk/docs/LangRef.rst (original)
+++ llvm/trunk/docs/LangRef.rst Tue Apr 26 19:52:48 2016
@@ -4412,12 +4412,20 @@ instructions (loads, stores, memory-acce
``noalias`` metadata can specifically be specified not to alias with some other
collection of memory access instructions that carry ``alias.scope`` metadata.
Each type of metadata specifies a list of scopes where each scope has an id and
-a domain. When evaluating an aliasing query, if for some domain, the set
+a domain.
+
+When evaluating an aliasing query, if for some domain, the set
of scopes with that domain in one instruction's ``alias.scope`` list is a
subset of (or equal to) the set of scopes for that domain in another
instruction's ``noalias`` list, then the two memory accesses are assumed not to
alias.
+Because scopes in one domain don't affect scopes in other domains, separate
+domains can be used to compose multiple independent noalias sets. This is
+used for example during inlining. As the noalias function parameters are
+turned into noalias scope metadata, a new domain is used every time the
+function is inlined.
+
The metadata identifying each domain is itself a list containing one or two
entries. The first entry is the name of the domain. Note that if the name is a
string then it can be combined across functions and translation units. A
More information about the llvm-commits
mailing list