r201942 - Adding manual headings to the new capability attributes' documentation.
Aaron Ballman
aaron at aaronballman.com
Sat Feb 22 11:04:56 PST 2014
Author: aaronballman
Date: Sat Feb 22 13:04:55 2014
New Revision: 201942
URL: http://llvm.org/viewvc/llvm-project?rev=201942&view=rev
Log:
Adding manual headings to the new capability attributes' documentation.
Modified:
cfe/trunk/docs/AttributeReference.rst
cfe/trunk/include/clang/Basic/AttrDocs.td
Modified: cfe/trunk/docs/AttributeReference.rst
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/AttributeReference.rst?rev=201942&r1=201941&r2=201942&view=diff
==============================================================================
--- cfe/trunk/docs/AttributeReference.rst (original)
+++ cfe/trunk/docs/AttributeReference.rst Sat Feb 22 13:04:55 2014
@@ -63,6 +63,27 @@ The semantics are as follows:
a sequence equivalent to "movs pc, lr" will be used.
+acquire_capability (acquire_shared_capability, clang::acquire_capability, clang::acquire_shared_capability)
+-----------------------------------------------------------------------------------------------------------
+.. csv-table:: Supported Syntaxes
+ :header: "GNU", "C++11", "__declspec", "Keyword"
+
+ "X","X","",""
+
+Marks a function as acquiring a capability.
+
+
+assert_capability (assert_shared_capability, clang::assert_capability, clang::assert_shared_capability)
+-------------------------------------------------------------------------------------------------------
+.. csv-table:: Supported Syntaxes
+ :header: "GNU", "C++11", "__declspec", "Keyword"
+
+ "X","X","",""
+
+Marks a function that dynamically tests whether a capability is held, and halts
+the program if it is not held.
+
+
availability
------------
.. csv-table:: Supported Syntaxes
@@ -356,6 +377,52 @@ Clang implements two kinds of checks wit
incorrect, the caller of ``foo`` will receive a warning.
+noduplicate (clang::noduplicate)
+--------------------------------
+.. csv-table:: Supported Syntaxes
+ :header: "GNU", "C++11", "__declspec", "Keyword"
+
+ "X","X","",""
+
+The ``noduplicate`` attribute can be placed on function declarations to control
+whether function calls to this function can be duplicated
+or not as a result of optimizations. This is required for the implementation
+of functions with certain special requirements, like the OpenCL "barrier",
+function that, depending on the hardware, might require to be run concurrently
+by all the threads that are currently executing in lockstep on the hardware.
+For example this attribute applied on the function "nodupfunc"
+avoids that this code:
+
+.. code-block:: c
+
+ void nodupfunc() __attribute__((noduplicate));
+ // Setting it as a C++11 attribute is also valid
+ // void nodupfunc() [[clang::noduplicate]];
+ void foo();
+ void bar();
+
+ nodupfunc();
+ if (a > n) {
+ foo();
+ } else {
+ bar();
+ }
+
+gets possibly modified by some optimization into code similar to this:
+
+.. code-block:: c
+
+ if (a > n) {
+ nodupfunc();
+ foo();
+ } else {
+ nodupfunc();
+ bar();
+ }
+
+where the barrier call is duplicated and sunk into the two branches of the condition.
+
+
no_sanitize_address (no_address_safety_analysis, gnu::no_address_safety_analysis, gnu::no_sanitize_address)
-----------------------------------------------------------------------------------------------------------
.. csv-table:: Supported Syntaxes
@@ -558,50 +625,29 @@ caveats to this use of name mangling:
Query for this feature with ``__has_extension(attribute_overloadable)``.
-noduplicate
------------
+
+release_capability (release_shared_capability, clang::release_capability, clang::release_shared_capability)
+-----------------------------------------------------------------------------------------------------------
.. csv-table:: Supported Syntaxes
:header: "GNU", "C++11", "__declspec", "Keyword"
"X","X","",""
-The ``noduplicate`` attribute can be placed on function declarations to control
-whether function calls to this function can be duplicated
-or not as a result of optimizations. This is required for the implementation
-of functions with certain special requirements, like the OpenCL "barrier",
-function that, depending on the hardware, might require to be run concurrently
-by all the threads that are currently executing in lockstep on the hardware.
-For example this attribute applied on the function "nodupfunc"
-avoids that this code:
-
-.. code-block:: c
-
- void nodupfunc() __attribute__((noduplicate));
- // Setting it as a C++11 attribute is also valid
- // void nodupfunc() [[clang::noduplicate]];
- void foo();
- void bar();
+Marks a function as releasing a capability.
- nodupfunc();
- if (a > n) {
- foo();
- } else {
- bar();
- }
-gets possibly modified by some optimization into code similar to this:
+try_acquire_capability (try_acquire_shared_capability, clang::try_acquire_capability, clang::try_acquire_shared_capability)
+---------------------------------------------------------------------------------------------------------------------------
+.. csv-table:: Supported Syntaxes
+ :header: "GNU", "C++11", "__declspec", "Keyword"
-.. code-block:: c
+ "X","X","",""
- if (a > n) {
- nodupfunc();
- foo();
- } else {
- nodupfunc();
- bar();
- }
+Marks a function that attemps to aquire a capability. This function may fail to
+actually acquire the capability; they accept a Boolean value determining
+whether acquiring the capability means success (true), or failing to acquire
+the capability means success (false).
-where the barrier call is duplicated and sunk into the two branches of the condition.
Variable Attributes
===================
Modified: cfe/trunk/include/clang/Basic/AttrDocs.td
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=201942&r1=201941&r2=201942&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/AttrDocs.td (original)
+++ cfe/trunk/include/clang/Basic/AttrDocs.td Sat Feb 22 13:04:55 2014
@@ -79,6 +79,7 @@ that appears to be capable of returning
def AssertCapabilityDocs : Documentation {
let Category = DocCatFunction;
+ let Heading = "assert_capability (assert_shared_capability, clang::assert_capability, clang::assert_shared_capability)";
let Content = [{
Marks a function that dynamically tests whether a capability is held, and halts
the program if it is not held.
@@ -87,6 +88,7 @@ the program if it is not held.
def AcquireCapabilityDocs : Documentation {
let Category = DocCatFunction;
+ let Heading = "acquire_capability (acquire_shared_capability, clang::acquire_capability, clang::acquire_shared_capability)";
let Content = [{
Marks a function as acquiring a capability.
}];
@@ -94,6 +96,7 @@ Marks a function as acquiring a capabili
def TryAcquireCapabilityDocs : Documentation {
let Category = DocCatFunction;
+ let Heading = "try_acquire_capability (try_acquire_shared_capability, clang::try_acquire_capability, clang::try_acquire_shared_capability)";
let Content = [{
Marks a function that attemps to aquire a capability. This function may fail to
actually acquire the capability; they accept a Boolean value determining
@@ -104,6 +107,7 @@ the capability means success (false).
def ReleaseCapabilityDocs : Documentation {
let Category = DocCatFunction;
+ let Heading = "release_capability (release_shared_capability, clang::release_capability, clang::release_shared_capability)";
let Content = [{
Marks a function as releasing a capability.
}];
More information about the cfe-commits
mailing list