<div dir="ltr">Sorry to ping this again, but I'm seeing these Sphinx warnings due to the labels that were removed. Do the TableGen'erated files have equivalent labels that you could link to?<div><br></div><div><div>
/home/sean/pg/llvm/llvm/tools/clang/docs/AddressSanitizer.rst:129: WARNING: undefined label: langext-address_sanitizer (if the link has no caption the label must precede a section header)</div><div>/home/sean/pg/llvm/llvm/tools/clang/docs/MemorySanitizer.rst:86: WARNING: undefined label: langext-memory_sanitizer (if the link has no caption the label must precede a section header)</div>
<div>/home/sean/pg/llvm/llvm/tools/clang/docs/ThreadSanitizer.rst:90: WARNING: undefined label: langext-thread_sanitizer (if the link has no caption the label must precede a section header)</div><div>/home/sean/pg/llvm/llvm/tools/clang/docs/ThreadSanitizer.rst:103: WARNING: undefined label: langext-thread_sanitizer (if the link has no caption the label must precede a section header)</div>
</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Fri, Feb 21, 2014 at 8:44 AM, Aaron Ballman <span dir="ltr"><<a href="mailto:aaron@aaronballman.com" target="_blank">aaron@aaronballman.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: aaronballman<br>
Date: Fri Feb 21 07:44:43 2014<br>
New Revision: 201850<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=201850&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=201850&view=rev</a><br>
Log:<br>
Moving the documentation for the sanitizer negation attributes into AttrDocs.<br>
<br>
Modified:<br>
    cfe/trunk/docs/AttributeReference.rst<br>
    cfe/trunk/docs/LanguageExtensions.rst<br>
    cfe/trunk/include/clang/Basic/Attr.td<br>
    cfe/trunk/include/clang/Basic/AttrDocs.td<br>
<br>
Modified: cfe/trunk/docs/AttributeReference.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/AttributeReference.rst?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/AttributeReference.rst?rev=201850&r1=201849&r2=201850&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/docs/AttributeReference.rst (original)<br>
+++ cfe/trunk/docs/AttributeReference.rst Fri Feb 21 07:44:43 2014<br>
@@ -291,6 +291,44 @@ not ODR-equivalent.<br>
 Query for this feature with ``__has_attribute(enable_if)``.<br>
<br>
<br>
+no_sanitize_address (no_address_safety_analysis, gnu::no_address_safety_analysis, gnu::no_sanitize_address)<br>
+-----------------------------------------------------------------------------------------------------------<br>
+.. csv-table:: Supported Syntaxes<br>
+   :header: "GNU", "C++11", "__declspec", "Keyword"<br>
+<br>
+   "X","X","",""<br>
+<br>
+Use ``__attribute__((no_sanitize_address))`` on a function declaration to<br>
+specify that address safety instrumentation (e.g. AddressSanitizer) should<br>
+not be applied to that function.<br>
+<br>
+<br>
+no_sanitize_memory<br>
+------------------<br>
+.. csv-table:: Supported Syntaxes<br>
+   :header: "GNU", "C++11", "__declspec", "Keyword"<br>
+<br>
+   "X","","",""<br>
+<br>
+Use ``__attribute__((no_sanitize_memory))`` on a function declaration to<br>
+specify that checks for uninitialized memory should not be inserted<br>
+(e.g. by MemorySanitizer). The function may still be instrumented by the tool<br>
+to avoid false positives in other places.<br>
+<br>
+<br>
+no_sanitize_thread<br>
+------------------<br>
+.. csv-table:: Supported Syntaxes<br>
+   :header: "GNU", "C++11", "__declspec", "Keyword"<br>
+<br>
+   "X","","",""<br>
+<br>
+Use ``__attribute__((no_sanitize_thread))`` on a function declaration to<br>
+specify that checks for data races on plain (non-atomic) memory accesses should<br>
+not be inserted by ThreadSanitizer. The function is still instrumented by the<br>
+tool to avoid false positives and provide meaningful stack traces.<br>
+<br>
+<br>
 objc_method_family<br>
 ------------------<br>
 .. csv-table:: Supported Syntaxes<br>
<br>
Modified: cfe/trunk/docs/LanguageExtensions.rst<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.rst?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.rst?rev=201850&r1=201849&r2=201850&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/docs/LanguageExtensions.rst (original)<br>
+++ cfe/trunk/docs/LanguageExtensions.rst Fri Feb 21 07:44:43 2014<br>
@@ -1639,46 +1639,15 @@ in the analyzer's `list of source-level<br>
 Extensions for Dynamic Analysis<br>
 ===============================<br>
<br>
-.. _langext-address_sanitizer:<br>
-<br>
-AddressSanitizer<br>
-----------------<br>
-<br>
 Use ``__has_feature(address_sanitizer)`` to check if the code is being built<br>
 with :doc:`AddressSanitizer`.<br>
<br>
-Use ``__attribute__((no_sanitize_address))``<br>
-on a function declaration<br>
-to specify that address safety instrumentation (e.g. AddressSanitizer) should<br>
-not be applied to that function.<br>
-<br>
-.. _langext-thread_sanitizer:<br>
-<br>
-ThreadSanitizer<br>
-----------------<br>
-<br>
 Use ``__has_feature(thread_sanitizer)`` to check if the code is being built<br>
 with :doc:`ThreadSanitizer`.<br>
<br>
-Use ``__attribute__((no_sanitize_thread))`` on a function declaration<br>
-to specify that checks for data races on plain (non-atomic) memory accesses<br>
-should not be inserted by ThreadSanitizer.<br>
-The function is still instrumented by the tool to avoid false positives and<br>
-provide meaningful stack traces.<br>
-<br>
-.. _langext-memory_sanitizer:<br>
-<br>
-MemorySanitizer<br>
-----------------<br>
 Use ``__has_feature(memory_sanitizer)`` to check if the code is being built<br>
 with :doc:`MemorySanitizer`.<br>
<br>
-Use ``__attribute__((no_sanitize_memory))`` on a function declaration<br>
-to specify that checks for uninitialized memory should not be inserted<br>
-(e.g. by MemorySanitizer). The function may still be instrumented by the tool<br>
-to avoid false positives in other places.<br>
-<br>
-<br>
 Thread Safety Analysis<br>
 ======================<br>
<br>
<br>
Modified: cfe/trunk/include/clang/Basic/Attr.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=201850&r1=201849&r2=201850&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/include/clang/Basic/Attr.td (original)<br>
+++ cfe/trunk/include/clang/Basic/Attr.td Fri Feb 21 07:44:43 2014<br>
@@ -1244,21 +1244,21 @@ def NoSanitizeAddress : InheritableAttr<br>
   let Spellings = [GCC<"no_address_safety_analysis">,<br>
                    GCC<"no_sanitize_address">];<br>
   let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;<br>
-  let Documentation = [Undocumented];<br>
+  let Documentation = [NoSanitizeAddressDocs];<br>
 }<br>
<br>
 // Attribute to disable ThreadSanitizer checks.<br>
 def NoSanitizeThread : InheritableAttr {<br>
   let Spellings = [GNU<"no_sanitize_thread">];<br>
   let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;<br>
-  let Documentation = [Undocumented];<br>
+  let Documentation = [NoSanitizeThreadDocs];<br>
 }<br>
<br>
 // Attribute to disable MemorySanitizer checks.<br>
 def NoSanitizeMemory : InheritableAttr {<br>
   let Spellings = [GNU<"no_sanitize_memory">];<br>
   let Subjects = SubjectList<[Function, FunctionTemplate], ErrorDiag>;<br>
-  let Documentation = [Undocumented];<br>
+  let Documentation = [NoSanitizeMemoryDocs];<br>
 }<br>
<br>
 // C/C++ Thread safety attributes (e.g. for deadlock, data race checking)<br>
<br>
Modified: cfe/trunk/include/clang/Basic/AttrDocs.td<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=201850&r1=201849&r2=201850&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=201850&r1=201849&r2=201850&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/include/clang/Basic/AttrDocs.td (original)<br>
+++ cfe/trunk/include/clang/Basic/AttrDocs.td Fri Feb 21 07:44:43 2014<br>
@@ -571,3 +571,35 @@ This attribute accepts a single paramete<br>
 ``unknown``, ``consumed``, or ``unconsumed``.<br>
   }];<br>
 }<br>
+<br>
+def NoSanitizeAddressDocs : Documentation {<br>
+  let Category = DocCatFunction;<br>
+  // This function has multiple distinct spellings, and so it requires a custom<br>
+  // heading to be specified. The most common spelling is sufficient.<br>
+  let Heading = "no_sanitize_address";<br>
+  let Content = [{<br>
+Use ``__attribute__((no_sanitize_address))`` on a function declaration to<br>
+specify that address safety instrumentation (e.g. AddressSanitizer) should<br>
+not be applied to that function.<br>
+  }];<br>
+}<br>
+<br>
+def NoSanitizeThreadDocs : Documentation {<br>
+  let Category = DocCatFunction;<br>
+  let Content = [{<br>
+Use ``__attribute__((no_sanitize_thread))`` on a function declaration to<br>
+specify that checks for data races on plain (non-atomic) memory accesses should<br>
+not be inserted by ThreadSanitizer. The function is still instrumented by the<br>
+tool to avoid false positives and provide meaningful stack traces.<br>
+  }];<br>
+}<br>
+<br>
+def NoSanitizeMemoryDocs : Documentation {<br>
+  let Category = DocCatFunction;<br>
+  let Content = [{<br>
+Use ``__attribute__((no_sanitize_memory))`` on a function declaration to<br>
+specify that checks for uninitialized memory should not be inserted<br>
+(e.g. by MemorySanitizer). The function may still be instrumented by the tool<br>
+to avoid false positives in other places.<br>
+  }];<br>
+}<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>