[www-releases] r331981 - Add 5.0.2 docs and update download.html
Tom Stellard via llvm-commits
llvm-commits at lists.llvm.org
Thu May 10 06:54:19 PDT 2018
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-auto-ptr.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-auto-ptr.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-auto-ptr.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-auto-ptr.html Thu May 10 06:54:16 2018
@@ -0,0 +1,152 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-replace-auto-ptr — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-replace-random-shuffle" href="modernize-replace-random-shuffle.html" />
+ <link rel="prev" title="modernize-redundant-void-arg" href="modernize-redundant-void-arg.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-replace-auto-ptr</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-redundant-void-arg.html">modernize-redundant-void-arg</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-replace-random-shuffle.html">modernize-replace-random-shuffle</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-replace-auto-ptr">
+<h1>modernize-replace-auto-ptr<a class="headerlink" href="#modernize-replace-auto-ptr" title="Permalink to this headline">¶</a></h1>
+<p>This check replaces the uses of the deprecated class <tt class="docutils literal"><span class="pre">std::auto_ptr</span></tt> by
+<tt class="docutils literal"><span class="pre">std::unique_ptr</span></tt> (introduced in C++11). The transfer of ownership, done
+by the copy-constructor and the assignment operator, is changed to match
+<tt class="docutils literal"><span class="pre">std::unique_ptr</span></tt> usage by using explicit calls to <tt class="docutils literal"><span class="pre">std::move()</span></tt>.</p>
+<p>Migration example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="o">-</span><span class="kt">void</span> <span class="n">take_ownership_fn</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">int_ptr</span><span class="p">);</span>
+<span class="o">+</span><span class="kt">void</span> <span class="n">take_ownership_fn</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">int_ptr</span><span class="p">);</span>
+
+ <span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span>
+<span class="o">-</span> <span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">a</span><span class="p">(</span><span class="k">new</span> <span class="kt">int</span><span class="p">(</span><span class="n">x</span><span class="p">));</span>
+<span class="o">-</span> <span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">b</span><span class="p">;</span>
+<span class="o">+</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">a</span><span class="p">(</span><span class="k">new</span> <span class="kt">int</span><span class="p">(</span><span class="n">x</span><span class="p">));</span>
+<span class="o">+</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">b</span><span class="p">;</span>
+
+<span class="o">-</span> <span class="n">b</span> <span class="o">=</span> <span class="n">a</span><span class="p">;</span>
+<span class="o">-</span> <span class="n">take_ownership_fn</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+<span class="o">+</span> <span class="n">b</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+<span class="o">+</span> <span class="n">take_ownership_fn</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">b</span><span class="p">));</span>
+ <span class="p">}</span>
+</pre></div>
+</div>
+<p>Since <tt class="docutils literal"><span class="pre">std::move()</span></tt> is a library function declared in <tt class="docutils literal"><span class="pre"><utility></span></tt> it may be
+necessary to add this include. The check will add the include directive when
+necessary.</p>
+<div class="section" id="known-limitations">
+<h2>Known Limitations<a class="headerlink" href="#known-limitations" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">If headers modification is not activated or if a header is not allowed to be
+changed this check will produce broken code (compilation error), where the
+headers’ code will stay unchanged while the code using them will be changed.</p>
+</li>
+<li><p class="first">Client code that declares a reference to an <tt class="docutils literal"><span class="pre">std::auto_ptr</span></tt> coming from
+code that can’t be migrated (such as a header coming from a 3<sup>rd</sup>
+party library) will produce a compilation error after migration. This is
+because the type of the reference will be changed to <tt class="docutils literal"><span class="pre">std::unique_ptr</span></tt> but
+the type returned by the library won’t change, binding a reference to
+<tt class="docutils literal"><span class="pre">std::unique_ptr</span></tt> from an <tt class="docutils literal"><span class="pre">std::auto_ptr</span></tt>. This pattern doesn’t make much
+sense and usually <tt class="docutils literal"><span class="pre">std::auto_ptr</span></tt> are stored by value (otherwise what is
+the point in using them instead of a reference or a pointer?).</p>
+<div class="highlight-c++"><div class="highlight"><pre> <span class="c1">// <3rd-party header...></span>
+ <span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">get_value</span><span class="p">();</span>
+ <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="o">&</span> <span class="n">get_ref</span><span class="p">();</span>
+
+ <span class="c1">// <calling code (with migration)...></span>
+<span class="o">-</span><span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">a</span><span class="p">(</span><span class="n">get_value</span><span class="p">());</span>
+<span class="o">+</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">a</span><span class="p">(</span><span class="n">get_value</span><span class="p">());</span> <span class="c1">// ok, unique_ptr constructed from auto_ptr</span>
+
+<span class="o">-</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="o">&</span> <span class="n">p</span> <span class="o">=</span> <span class="n">get_ptr</span><span class="p">();</span>
+<span class="o">+</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="o">&</span> <span class="n">p</span> <span class="o">=</span> <span class="n">get_ptr</span><span class="p">();</span> <span class="c1">// won't compile</span>
+</pre></div>
+</div>
+</li>
+<li><p class="first">Non-instantiated templates aren’t modified.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">template</span> <span class="o"><</span><span class="k">typename</span> <span class="n">X</span><span class="o">></span>
+<span class="kt">void</span> <span class="n">f</span><span class="p">()</span> <span class="p">{</span>
+ <span class="n">std</span><span class="o">::</span><span class="n">auto_ptr</span><span class="o"><</span><span class="n">X</span><span class="o">></span> <span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// only 'f<int>()' (or similar) will trigger the replacement.</span>
+</pre></div>
+</div>
+</li>
+</ul>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">IncludeStyle</tt></dt>
+<dd><p>A string specifying which include-style is used, <cite>llvm</cite> or <cite>google</cite>. Default
+is <cite>llvm</cite>.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-redundant-void-arg.html">modernize-redundant-void-arg</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-replace-random-shuffle.html">modernize-replace-random-shuffle</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-random-shuffle.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-random-shuffle.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-random-shuffle.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-replace-random-shuffle.html Thu May 10 06:54:16 2018
@@ -0,0 +1,95 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-replace-random-shuffle — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-return-braced-init-list" href="modernize-return-braced-init-list.html" />
+ <link rel="prev" title="modernize-replace-auto-ptr" href="modernize-replace-auto-ptr.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-replace-random-shuffle</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-replace-auto-ptr.html">modernize-replace-auto-ptr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-return-braced-init-list.html">modernize-return-braced-init-list</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-replace-random-shuffle">
+<h1>modernize-replace-random-shuffle<a class="headerlink" href="#modernize-replace-random-shuffle" title="Permalink to this headline">¶</a></h1>
+<p>This check will find occurrences of <tt class="docutils literal"><span class="pre">std::random_shuffle</span></tt> and replace it with <tt class="docutils literal"><span class="pre">std::shuffle</span></tt>. In C++17 <tt class="docutils literal"><span class="pre">std::random_shuffle</span></tt> will no longer be available and thus we need to replace it.</p>
+<p>Below are two examples of what kind of occurrences will be found and two examples of what it will be replaced with.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">v</span><span class="p">;</span>
+
+<span class="c1">// First example</span>
+<span class="n">std</span><span class="o">::</span><span class="n">random_shuffle</span><span class="p">(</span><span class="n">vec</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">vec</span><span class="p">.</span><span class="n">end</span><span class="p">());</span>
+
+<span class="c1">// Second example</span>
+<span class="n">std</span><span class="o">::</span><span class="n">random_shuffle</span><span class="p">(</span><span class="n">vec</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">vec</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">randomFun</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>Both of these examples will be replaced with:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">shuffle</span><span class="p">(</span><span class="n">vec</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">vec</span><span class="p">.</span><span class="n">end</span><span class="p">(),</span> <span class="n">std</span><span class="o">::</span><span class="n">mt19937</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">random_device</span><span class="p">()()));</span>
+</pre></div>
+</div>
+<p>The second example will also receive a warning that <tt class="docutils literal"><span class="pre">randomFunc</span></tt> is no longer supported in the same way as before so if the user wants the same functionality, the user will need to change the implementation of the <tt class="docutils literal"><span class="pre">randomFunc</span></tt>.</p>
+<p>One thing to be aware of here is that <tt class="docutils literal"><span class="pre">std::random_device</span></tt> is quite expensive to initialize. So if you are using the code in a performance critical place, you probably want to initialize it elsewhere.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-replace-auto-ptr.html">modernize-replace-auto-ptr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-return-braced-init-list.html">modernize-return-braced-init-list</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-return-braced-init-list.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-return-braced-init-list.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-return-braced-init-list.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-return-braced-init-list.html Thu May 10 06:54:16 2018
@@ -0,0 +1,93 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-return-braced-init-list — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-shrink-to-fit" href="modernize-shrink-to-fit.html" />
+ <link rel="prev" title="modernize-replace-random-shuffle" href="modernize-replace-random-shuffle.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-return-braced-init-list</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-replace-random-shuffle.html">modernize-replace-random-shuffle</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-shrink-to-fit.html">modernize-shrink-to-fit</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-return-braced-init-list">
+<h1>modernize-return-braced-init-list<a class="headerlink" href="#modernize-return-braced-init-list" title="Permalink to this headline">¶</a></h1>
+<p>Replaces explicit calls to the constructor in a return with a braced
+initializer list. This way the return type is not needlessly duplicated in the
+function definition and the return statement.</p>
+<div class="code c++ highlight-python"><pre>Foo bar() {
+ Baz baz;
+ return Foo(baz);
+}
+
+// transforms to:
+
+Foo bar() {
+ Baz baz;
+ return {baz};
+}</pre>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-replace-random-shuffle.html">modernize-replace-random-shuffle</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-shrink-to-fit.html">modernize-shrink-to-fit</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-shrink-to-fit.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-shrink-to-fit.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-shrink-to-fit.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-shrink-to-fit.html Thu May 10 06:54:16 2018
@@ -0,0 +1,83 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-shrink-to-fit — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-unary-static-assert" href="modernize-unary-static-assert.html" />
+ <link rel="prev" title="modernize-return-braced-init-list" href="modernize-return-braced-init-list.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-shrink-to-fit</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-return-braced-init-list.html">modernize-return-braced-init-list</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-unary-static-assert.html">modernize-unary-static-assert</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-shrink-to-fit">
+<h1>modernize-shrink-to-fit<a class="headerlink" href="#modernize-shrink-to-fit" title="Permalink to this headline">¶</a></h1>
+<p>Replace copy and swap tricks on shrinkable containers with the
+<tt class="docutils literal"><span class="pre">shrink_to_fit()</span></tt> method call.</p>
+<p>The <tt class="docutils literal"><span class="pre">shrink_to_fit()</span></tt> method is more readable and more effective than
+the copy and swap trick to reduce the capacity of a shrinkable container.
+Note that, the <tt class="docutils literal"><span class="pre">shrink_to_fit()</span></tt> method is only available in C++11 and up.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-return-braced-init-list.html">modernize-return-braced-init-list</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-unary-static-assert.html">modernize-unary-static-assert</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-unary-static-assert.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-unary-static-assert.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-unary-static-assert.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-unary-static-assert.html Thu May 10 06:54:16 2018
@@ -0,0 +1,93 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-unary-static-assert — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-auto" href="modernize-use-auto.html" />
+ <link rel="prev" title="modernize-shrink-to-fit" href="modernize-shrink-to-fit.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-unary-static-assert</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-shrink-to-fit.html">modernize-shrink-to-fit</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-auto.html">modernize-use-auto</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-unary-static-assert">
+<h1>modernize-unary-static-assert<a class="headerlink" href="#modernize-unary-static-assert" title="Permalink to this headline">¶</a></h1>
+<p>The check diagnoses any <tt class="docutils literal"><span class="pre">static_assert</span></tt> declaration with an empty string literal
+and provides a fix-it to replace the declaration with a single-argument <tt class="docutils literal"><span class="pre">static_assert</span></tt> declaration.</p>
+<p>The check is only applicable for C++17 and later code.</p>
+<p>The following code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f_textless</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">static_assert</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">10</span><span class="p">,</span> <span class="s">""</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>is replaced by:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f_textless</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">static_assert</span><span class="p">(</span><span class="k">sizeof</span><span class="p">(</span><span class="n">a</span><span class="p">)</span> <span class="o"><=</span> <span class="mi">10</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-shrink-to-fit.html">modernize-shrink-to-fit</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-auto.html">modernize-use-auto</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-auto.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-auto.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-auto.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-auto.html Thu May 10 06:54:16 2018
@@ -0,0 +1,258 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-auto — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-bool-literals" href="modernize-use-bool-literals.html" />
+ <link rel="prev" title="modernize-unary-static-assert" href="modernize-unary-static-assert.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-auto</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-unary-static-assert.html">modernize-unary-static-assert</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-bool-literals.html">modernize-use-bool-literals</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-auto">
+<h1>modernize-use-auto<a class="headerlink" href="#modernize-use-auto" title="Permalink to this headline">¶</a></h1>
+<p>This check is responsible for using the <tt class="docutils literal"><span class="pre">auto</span></tt> type specifier for variable
+declarations to <em>improve code readability and maintainability</em>. For example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>::</span><span class="n">iterator</span> <span class="n">I</span> <span class="o">=</span> <span class="n">my_container</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+
+<span class="c1">// transforms to:</span>
+
+<span class="k">auto</span> <span class="n">I</span> <span class="o">=</span> <span class="n">my_container</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+</pre></div>
+</div>
+<p>The <tt class="docutils literal"><span class="pre">auto</span></tt> type specifier will only be introduced in situations where the
+variable type matches the type of the initializer expression. In other words
+<tt class="docutils literal"><span class="pre">auto</span></tt> should deduce the same type that was originally spelled in the source.
+However, not every situation should be transformed:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">int</span> <span class="n">val</span> <span class="o">=</span> <span class="mi">42</span><span class="p">;</span>
+<span class="n">InfoStruct</span> <span class="o">&</span><span class="n">I</span> <span class="o">=</span> <span class="n">SomeObject</span><span class="p">.</span><span class="n">getInfo</span><span class="p">();</span>
+
+<span class="c1">// Should not become:</span>
+
+<span class="k">auto</span> <span class="n">val</span> <span class="o">=</span> <span class="mi">42</span><span class="p">;</span>
+<span class="k">auto</span> <span class="o">&</span><span class="n">I</span> <span class="o">=</span> <span class="n">SomeObject</span><span class="p">.</span><span class="n">getInfo</span><span class="p">();</span>
+</pre></div>
+</div>
+<p>In this example using <tt class="docutils literal"><span class="pre">auto</span></tt> for builtins doesn’t improve readability. In
+other situations it makes the code less self-documenting impairing readability
+and maintainability. As a result, <tt class="docutils literal"><span class="pre">auto</span></tt> is used only introduced in specific
+situations described below.</p>
+<div class="section" id="iterators">
+<h2>Iterators<a class="headerlink" href="#iterators" title="Permalink to this headline">¶</a></h2>
+<p>Iterator type specifiers tend to be long and used frequently, especially in
+loop constructs. Since the functions generating iterators have a common format,
+the type specifier can be replaced without obscuring the meaning of code while
+improving readability and maintainability.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">for</span> <span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>::</span><span class="n">iterator</span> <span class="n">I</span> <span class="o">=</span> <span class="n">my_container</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span>
+ <span class="n">E</span> <span class="o">=</span> <span class="n">my_container</span><span class="p">.</span><span class="n">end</span><span class="p">();</span>
+ <span class="n">I</span> <span class="o">!=</span> <span class="n">E</span><span class="p">;</span> <span class="o">++</span><span class="n">I</span><span class="p">)</span> <span class="p">{</span>
+<span class="p">}</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="n">I</span> <span class="o">=</span> <span class="n">my_container</span><span class="p">.</span><span class="n">begin</span><span class="p">(),</span> <span class="n">E</span> <span class="o">=</span> <span class="n">my_container</span><span class="p">.</span><span class="n">end</span><span class="p">();</span> <span class="n">I</span> <span class="o">!=</span> <span class="n">E</span><span class="p">;</span> <span class="o">++</span><span class="n">I</span><span class="p">)</span> <span class="p">{</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The check will only replace iterator type-specifiers when all of the following
+conditions are satisfied:</p>
+<ul class="simple">
+<li>The iterator is for one of the standard container in <tt class="docutils literal"><span class="pre">std</span></tt> namespace:<ul>
+<li><tt class="docutils literal"><span class="pre">array</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">deque</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">forward_list</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">list</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">vector</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">map</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">multimap</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">set</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">multiset</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unordered_map</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unordered_multimap</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unordered_set</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">unordered_multiset</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">queue</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">priority_queue</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">stack</span></tt></li>
+</ul>
+</li>
+<li>The iterator is one of the possible iterator types for standard containers:<ul>
+<li><tt class="docutils literal"><span class="pre">iterator</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">reverse_iterator</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">const_iterator</span></tt></li>
+<li><tt class="docutils literal"><span class="pre">const_reverse_iterator</span></tt></li>
+</ul>
+</li>
+<li>In addition to using iterator types directly, typedefs or other ways of
+referring to those types are also allowed. However, implementation-specific
+types for which a type like <tt class="docutils literal"><span class="pre">std::vector<int>::iterator</span></tt> is itself a
+typedef will not be transformed. Consider the following examples:</li>
+</ul>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// The following direct uses of iterator types will be transformed.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">>::</span><span class="n">iterator</span> <span class="n">I</span> <span class="o">=</span> <span class="n">MyVec</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+<span class="p">{</span>
+ <span class="k">using</span> <span class="k">namespace</span> <span class="n">std</span><span class="p">;</span>
+ <span class="n">list</span><span class="o"><</span><span class="kt">int</span><span class="o">>::</span><span class="n">iterator</span> <span class="n">I</span> <span class="o">=</span> <span class="n">MyList</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+<span class="p">}</span>
+
+<span class="c1">// The type specifier for J would transform to auto since it's a typedef</span>
+<span class="c1">// to a standard iterator type.</span>
+<span class="k">typedef</span> <span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">>::</span><span class="n">const_iterator</span> <span class="n">map_iterator</span><span class="p">;</span>
+<span class="n">map_iterator</span> <span class="n">J</span> <span class="o">=</span> <span class="n">MyMap</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+
+<span class="c1">// The following implementation-specific iterator type for which</span>
+<span class="c1">// std::vector<int>::iterator could be a typedef would not be transformed.</span>
+<span class="n">__gnu_cxx</span><span class="o">::</span><span class="n">__normal_iterator</span><span class="o"><</span><span class="kt">int</span><span class="o">*</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o">></span> <span class="n">K</span> <span class="o">=</span> <span class="n">MyVec</span><span class="p">.</span><span class="n">begin</span><span class="p">();</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li>The initializer for the variable being declared is not a braced initializer
+list. Otherwise, use of <tt class="docutils literal"><span class="pre">auto</span></tt> would cause the type of the variable to be
+deduced as <tt class="docutils literal"><span class="pre">std::initializer_list</span></tt>.</li>
+</ul>
+</div>
+<div class="section" id="new-expressions">
+<h2>New expressions<a class="headerlink" href="#new-expressions" title="Permalink to this headline">¶</a></h2>
+<p>Frequently, when a pointer is declared and initialized with <tt class="docutils literal"><span class="pre">new</span></tt>, the
+pointee type is written twice: in the declaration type and in the
+<tt class="docutils literal"><span class="pre">new</span></tt> expression. In this cases, the declaration type can be replaced with
+<tt class="docutils literal"><span class="pre">auto</span></tt> improving readability and maintainability.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">TypeName</span> <span class="o">*</span><span class="n">my_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">(</span><span class="n">my_param</span><span class="p">);</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">auto</span> <span class="o">*</span><span class="n">my_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">(</span><span class="n">my_param</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>The check will also replace the declaration type in multiple declarations, if
+the following conditions are satisfied:</p>
+<ul class="simple">
+<li>All declared variables have the same type (i.e. all of them are pointers to
+the same type).</li>
+<li>All declared variables are initialized with a <tt class="docutils literal"><span class="pre">new</span></tt> expression.</li>
+<li>The types of all the new expressions are the same than the pointee of the
+declaration type.</li>
+</ul>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">TypeName</span> <span class="o">*</span><span class="n">my_first_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">,</span> <span class="o">*</span><span class="n">my_second_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">;</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">auto</span> <span class="o">*</span><span class="n">my_first_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">,</span> <span class="o">*</span><span class="n">my_second_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="cast-expressions">
+<h2>Cast expressions<a class="headerlink" href="#cast-expressions" title="Permalink to this headline">¶</a></h2>
+<p>Frequently, when a variable is declared and initialized with a cast, the
+variable type is written twice: in the declaration type and in the
+cast expression. In this cases, the declaration type can be replaced with
+<tt class="docutils literal"><span class="pre">auto</span></tt> improving readability and maintainability.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">TypeName</span> <span class="o">*</span><span class="n">my_pointer</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o"><</span><span class="n">TypeName</span><span class="o">></span><span class="p">(</span><span class="n">my_param</span><span class="p">);</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">auto</span> <span class="o">*</span><span class="n">my_pointer</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o"><</span><span class="n">TypeName</span><span class="o">></span><span class="p">(</span><span class="n">my_param</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>The check handles <tt class="docutils literal"><span class="pre">static_cast</span></tt>, <tt class="docutils literal"><span class="pre">dynamic_cast</span></tt>, <tt class="docutils literal"><span class="pre">const_cast</span></tt>,
+<tt class="docutils literal"><span class="pre">reinterpret_cast</span></tt>, functional casts, C-style casts and function templates
+that behave as casts, such as <tt class="docutils literal"><span class="pre">llvm::dyn_cast</span></tt>, <tt class="docutils literal"><span class="pre">boost::lexical_cast</span></tt> and
+<tt class="docutils literal"><span class="pre">gsl::narrow_cast</span></tt>. Calls to function templates are considered to behave as
+casts if the first template argument is explicit and is a type, and the function
+returns that type, or a pointer or reference to it.</p>
+</div>
+<div class="section" id="known-limitations">
+<h2>Known Limitations<a class="headerlink" href="#known-limitations" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>If the initializer is an explicit conversion constructor, the check will not
+replace the type specifier even though it would be safe to do so.</li>
+<li>User-defined iterators are not handled at this time.</li>
+</ul>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">RemoveStars</tt></dt>
+<dd><p>If the option is set to non-zero (default is <cite>0</cite>), the check will remove
+stars from the non-typedef pointer types when replacing type names with
+<tt class="docutils literal"><span class="pre">auto</span></tt>. Otherwise, the check will leave stars. For example:</p>
+</dd></dl>
+
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">TypeName</span> <span class="o">*</span><span class="n">my_first_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">,</span> <span class="o">*</span><span class="n">my_second_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">;</span>
+
+<span class="c1">// RemoveStars = 0</span>
+
+<span class="k">auto</span> <span class="o">*</span><span class="n">my_first_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">,</span> <span class="o">*</span><span class="n">my_second_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">;</span>
+
+<span class="c1">// RemoveStars = 1</span>
+
+<span class="k">auto</span> <span class="n">my_first_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">,</span> <span class="n">my_second_pointer</span> <span class="o">=</span> <span class="k">new</span> <span class="n">TypeName</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-unary-static-assert.html">modernize-unary-static-assert</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-bool-literals.html">modernize-use-bool-literals</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-bool-literals.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-bool-literals.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-bool-literals.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-bool-literals.html Thu May 10 06:54:16 2018
@@ -0,0 +1,92 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-bool-literals — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-default-member-init" href="modernize-use-default-member-init.html" />
+ <link rel="prev" title="modernize-use-auto" href="modernize-use-auto.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-bool-literals</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-auto.html">modernize-use-auto</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-default-member-init.html">modernize-use-default-member-init</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-bool-literals">
+<h1>modernize-use-bool-literals<a class="headerlink" href="#modernize-use-bool-literals" title="Permalink to this headline">¶</a></h1>
+<p>Finds integer literals which are cast to <tt class="docutils literal"><span class="pre">bool</span></tt>.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">bool</span> <span class="n">p</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span>
+<span class="kt">bool</span> <span class="n">f</span> <span class="o">=</span> <span class="k">static_cast</span><span class="o"><</span><span class="kt">bool</span><span class="o">></span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="n">std</span><span class="o">::</span><span class="n">ios_base</span><span class="o">::</span><span class="n">sync_with_stdio</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
+<span class="kt">bool</span> <span class="n">x</span> <span class="o">=</span> <span class="n">p</span> <span class="o">?</span> <span class="mi">1</span> <span class="o">:</span> <span class="mi">0</span><span class="p">;</span>
+
+<span class="c1">// transforms to</span>
+
+<span class="kt">bool</span> <span class="n">p</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
+<span class="kt">bool</span> <span class="n">f</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">ios_base</span><span class="o">::</span><span class="n">sync_with_stdio</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
+<span class="kt">bool</span> <span class="n">x</span> <span class="o">=</span> <span class="n">p</span> <span class="o">?</span> <span class="kc">true</span> <span class="o">:</span> <span class="kc">false</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-auto.html">modernize-use-auto</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-default-member-init.html">modernize-use-default-member-init</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default-member-init.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default-member-init.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default-member-init.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default-member-init.html Thu May 10 06:54:16 2018
@@ -0,0 +1,130 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-default-member-init — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-emplace" href="modernize-use-emplace.html" />
+ <link rel="prev" title="modernize-use-bool-literals" href="modernize-use-bool-literals.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-default-member-init</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-bool-literals.html">modernize-use-bool-literals</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-emplace.html">modernize-use-emplace</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-default-member-init">
+<h1>modernize-use-default-member-init<a class="headerlink" href="#modernize-use-default-member-init" title="Permalink to this headline">¶</a></h1>
+<p>This check converts a default constructor’s member initializers into the new
+default member initializers in C++11. Other member initializers that match the
+default member initializer are removed. This can reduce repeated code or allow
+use of ‘= default’.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+ <span class="n">A</span><span class="p">()</span> <span class="o">:</span> <span class="n">i</span><span class="p">(</span><span class="mi">5</span><span class="p">),</span> <span class="n">j</span><span class="p">(</span><span class="mf">10.0</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="n">A</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="o">:</span> <span class="n">i</span><span class="p">(</span><span class="n">i</span><span class="p">),</span> <span class="n">j</span><span class="p">(</span><span class="mf">10.0</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="kt">int</span> <span class="n">i</span><span class="p">;</span>
+ <span class="kt">double</span> <span class="n">j</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+ <span class="n">A</span><span class="p">()</span> <span class="p">{}</span>
+ <span class="n">A</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="o">:</span> <span class="n">i</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="kt">int</span> <span class="n">i</span><span class="p">{</span><span class="mi">5</span><span class="p">};</span>
+ <span class="kt">double</span> <span class="n">j</span><span class="p">{</span><span class="mf">10.0</span><span class="p">};</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Only converts member initializers for built-in types, enums, and pointers.
+The <cite>readability-redundant-member-init</cite> check will remove redundant member
+initializers for classes.</p>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">UseAssignment</tt></dt>
+<dd><p>If this option is set to non-zero (default is <cite>0</cite>), the check will initialise
+members with an assignment. For example:</p>
+</dd></dl>
+
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+ <span class="n">A</span><span class="p">()</span> <span class="p">{}</span>
+ <span class="n">A</span><span class="p">(</span><span class="kt">int</span> <span class="n">i</span><span class="p">)</span> <span class="o">:</span> <span class="n">i</span><span class="p">(</span><span class="n">i</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">5</span><span class="p">;</span>
+ <span class="kt">double</span> <span class="n">j</span> <span class="o">=</span> <span class="mf">10.0</span><span class="p">;</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<dl class="option">
+<dt>
+<tt class="descname">IgnoreMacros</tt></dt>
+<dd><p>If this option is set to non-zero (default is <cite>1</cite>), the check will not warn
+about members declared inside macros.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-bool-literals.html">modernize-use-bool-literals</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-emplace.html">modernize-use-emplace</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-default.html Thu May 10 06:54:16 2018
@@ -0,0 +1,70 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <meta content="5;URL=modernize-use-equals-default.html" http-equiv="refresh" />
+
+ <title>clang-tidy - modernize-use-default — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-default</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ <a class="uplink" href="../../index.html">Contents</a>
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-default">
+<h1>modernize-use-default<a class="headerlink" href="#modernize-use-default" title="Permalink to this headline">¶</a></h1>
+<p>This check has been renamed to
+<a class="reference external" href="modernize-use-equals-default.html">modernize-use-equals-default</a>.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ <a class="uplink" href="../../index.html">Contents</a>
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-emplace.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-emplace.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-emplace.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-emplace.html Thu May 10 06:54:16 2018
@@ -0,0 +1,193 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-emplace — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-equals-default" href="modernize-use-equals-default.html" />
+ <link rel="prev" title="modernize-use-default-member-init" href="modernize-use-default-member-init.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-emplace</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-default-member-init.html">modernize-use-default-member-init</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-equals-default.html">modernize-use-equals-default</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-emplace">
+<h1>modernize-use-emplace<a class="headerlink" href="#modernize-use-emplace" title="Permalink to this headline">¶</a></h1>
+<p>The check flags insertions to an STL-style container done by calling the
+<tt class="docutils literal"><span class="pre">push_back</span></tt> method with an explicitly-constructed temporary of the container
+element type. In this case, the corresponding <tt class="docutils literal"><span class="pre">emplace_back</span></tt> method
+results in less verbose and potentially more efficient code.
+Right now the check doesn’t support <tt class="docutils literal"><span class="pre">push_front</span></tt> and <tt class="docutils literal"><span class="pre">insert</span></tt>.
+It also doesn’t support <tt class="docutils literal"><span class="pre">insert</span></tt> functions for associative containers
+because replacing <tt class="docutils literal"><span class="pre">insert</span></tt> with <tt class="docutils literal"><span class="pre">emplace</span></tt> may result in
+<a class="reference external" href="http://htmlpreview.github.io/?https://github.com/HowardHinnant/papers/blob/master/insert_vs_emplace.html">speed regression</a>, but it might get support with some addition flag in the future.</p>
+<p>By default only <tt class="docutils literal"><span class="pre">std::vector</span></tt>, <tt class="docutils literal"><span class="pre">std::deque</span></tt>, <tt class="docutils literal"><span class="pre">std::list</span></tt> are considered.
+This list can be modified using the <em class="xref std std-option">ContainersWithPushBack</em> option.</p>
+<p>Before:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">MyClass</span><span class="o">></span> <span class="n">v</span><span class="p">;</span>
+<span class="n">v</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">MyClass</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span> <span class="mi">37</span><span class="p">));</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">>></span> <span class="n">w</span><span class="p">;</span>
+
+<span class="n">w</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="mi">21</span><span class="p">,</span> <span class="mi">37</span><span class="p">));</span>
+<span class="n">w</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">make_pair</span><span class="p">(</span><span class="mi">21L</span><span class="p">,</span> <span class="mi">37L</span><span class="p">));</span>
+</pre></div>
+</div>
+<p>After:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">MyClass</span><span class="o">></span> <span class="n">v</span><span class="p">;</span>
+<span class="n">v</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span> <span class="mi">37</span><span class="p">);</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">pair</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="o">>></span> <span class="n">w</span><span class="p">;</span>
+<span class="n">w</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="mi">21</span><span class="p">,</span> <span class="mi">37</span><span class="p">);</span>
+<span class="n">w</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="mi">21L</span><span class="p">,</span> <span class="mi">37L</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>By default, the check is able to remove unnecessary <tt class="docutils literal"><span class="pre">std::make_pair</span></tt> and
+<tt class="docutils literal"><span class="pre">std::make_tuple</span></tt> calls from <tt class="docutils literal"><span class="pre">push_back</span></tt> calls on containers of
+<tt class="docutils literal"><span class="pre">std::pair</span></tt> and <tt class="docutils literal"><span class="pre">std::tuple</span></tt>. Custom tuple-like types can be modified by
+the <em class="xref std std-option">TupleTypes</em> option; custom make functions can be modified by the
+<em class="xref std std-option">TupleMakeFunctions</em> option.</p>
+<p>The other situation is when we pass arguments that will be converted to a type
+inside a container.</p>
+<p>Before:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">boost</span><span class="o">::</span><span class="n">optional</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="o">></span> <span class="n">v</span><span class="p">;</span>
+<span class="n">v</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="s">"abc"</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>After:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">boost</span><span class="o">::</span><span class="n">optional</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">></span> <span class="o">></span> <span class="n">v</span><span class="p">;</span>
+<span class="n">v</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="s">"abc"</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>In some cases the transformation would be valid, but the code wouldn’t be
+exception safe. In this case the calls of <tt class="docutils literal"><span class="pre">push_back</span></tt> won’t be replaced.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">>></span> <span class="n">v</span><span class="p">;</span>
+<span class="n">v</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="k">new</span> <span class="kt">int</span><span class="p">(</span><span class="mi">0</span><span class="p">)));</span>
+<span class="k">auto</span> <span class="o">*</span><span class="n">ptr</span> <span class="o">=</span> <span class="k">new</span> <span class="kt">int</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
+<span class="n">v</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span><span class="p">(</span><span class="n">ptr</span><span class="p">));</span>
+</pre></div>
+</div>
+<p>This is because replacing it with <tt class="docutils literal"><span class="pre">emplace_back</span></tt> could cause a leak of this
+pointer if <tt class="docutils literal"><span class="pre">emplace_back</span></tt> would throw exception before emplacement (e.g. not
+enough memory to add a new element).</p>
+<p>For more info read item 42 - “Consider emplacement instead of insertion.” of
+Scott Meyers “Effective Modern C++”.</p>
+<p>The default smart pointers that are considered are <tt class="docutils literal"><span class="pre">std::unique_ptr</span></tt>,
+<tt class="docutils literal"><span class="pre">std::shared_ptr</span></tt>, <tt class="docutils literal"><span class="pre">std::auto_ptr</span></tt>. To specify other smart pointers or
+other classes use the <em class="xref std std-option">SmartPointers</em> option.</p>
+<p>Check also doesn’t fire if any argument of the constructor call would be:</p>
+<blockquote>
+<div><ul class="simple">
+<li>a bit-field (bit-fields can’t bind to rvalue/universal reference)</li>
+<li>a <tt class="docutils literal"><span class="pre">new</span></tt> expression (to avoid leak)</li>
+<li>if the argument would be converted via derived-to-base cast.</li>
+</ul>
+</div></blockquote>
+<p>This check requires C++11 or higher to run.</p>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">ContainersWithPushBack</tt></dt>
+<dd><p>Semicolon-separated list of class names of custom containers that support
+<tt class="docutils literal"><span class="pre">push_back</span></tt>.</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">SmartPointers</tt></dt>
+<dd><p>Semicolon-separated list of class names of custom smart pointers.</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">TupleTypes</tt></dt>
+<dd><p>Semicolon-separated list of <tt class="docutils literal"><span class="pre">std::tuple</span></tt>-like class names.</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">TupleMakeFunctions</tt></dt>
+<dd><p>Semicolon-separated list of <tt class="docutils literal"><span class="pre">std::make_tuple</span></tt>-like function names. Those
+function calls will be removed from <tt class="docutils literal"><span class="pre">push_back</span></tt> calls and turned into
+<tt class="docutils literal"><span class="pre">emplace_back</span></tt>.</p>
+</dd></dl>
+
+<div class="section" id="example">
+<h3>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">MyTuple</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">bool</span><span class="p">,</span> <span class="kt">char</span><span class="o">>></span> <span class="n">x</span><span class="p">;</span>
+<span class="n">x</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">MakeMyTuple</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="sc">'x'</span><span class="p">));</span>
+</pre></div>
+</div>
+<p>transforms to:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="n">MyTuple</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="kt">bool</span><span class="p">,</span> <span class="kt">char</span><span class="o">>></span> <span class="n">x</span><span class="p">;</span>
+<span class="n">x</span><span class="p">.</span><span class="n">emplace_back</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="kc">false</span><span class="p">,</span> <span class="sc">'x'</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>when <em class="xref std std-option">TupleTypes</em> is set to <tt class="docutils literal"><span class="pre">MyTuple</span></tt> and <em class="xref std std-option">TupleMakeFunctions</em>
+is set to <tt class="docutils literal"><span class="pre">MakeMyTuple</span></tt>.</p>
+</div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-default-member-init.html">modernize-use-default-member-init</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-equals-default.html">modernize-use-equals-default</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-default.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-default.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-default.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-default.html Thu May 10 06:54:16 2018
@@ -0,0 +1,101 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-equals-default — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-equals-delete" href="modernize-use-equals-delete.html" />
+ <link rel="prev" title="modernize-use-emplace" href="modernize-use-emplace.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-equals-default</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-emplace.html">modernize-use-emplace</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-equals-delete.html">modernize-use-equals-delete</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-equals-default">
+<h1>modernize-use-equals-default<a class="headerlink" href="#modernize-use-equals-default" title="Permalink to this headline">¶</a></h1>
+<p>This check replaces default bodies of special member functions with <tt class="docutils literal"><span class="pre">=</span>
+<span class="pre">default;</span></tt>. The explicitly defaulted function declarations enable more
+opportunities in optimization, because the compiler might treat explicitly
+defaulted functions as trivial.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+ <span class="n">A</span><span class="p">()</span> <span class="p">{}</span>
+ <span class="o">~</span><span class="n">A</span><span class="p">();</span>
+<span class="p">};</span>
+<span class="n">A</span><span class="o">::~</span><span class="n">A</span><span class="p">()</span> <span class="p">{}</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+ <span class="n">A</span><span class="p">()</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+ <span class="o">~</span><span class="n">A</span><span class="p">();</span>
+<span class="p">};</span>
+<span class="n">A</span><span class="o">::~</span><span class="n">A</span><span class="p">()</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+</pre></div>
+</div>
+<div class="admonition note">
+<p class="first admonition-title">Note</p>
+<p class="last">Move-constructor and move-assignment operator are not supported yet.</p>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-emplace.html">modernize-use-emplace</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-equals-delete.html">modernize-use-equals-delete</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-delete.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-delete.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-delete.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-equals-delete.html Thu May 10 06:54:16 2018
@@ -0,0 +1,96 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-equals-delete — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-noexcept" href="modernize-use-noexcept.html" />
+ <link rel="prev" title="modernize-use-equals-default" href="modernize-use-equals-default.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-equals-delete</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-equals-default.html">modernize-use-equals-default</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-noexcept.html">modernize-use-noexcept</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-equals-delete">
+<h1>modernize-use-equals-delete<a class="headerlink" href="#modernize-use-equals-delete" title="Permalink to this headline">¶</a></h1>
+<p>This check marks unimplemented private special member functions with <tt class="docutils literal"><span class="pre">=</span> <span class="pre">delete</span></tt>.
+To avoid false-positives, this check only applies in a translation unit that has
+all other member functions implemented.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+ <span class="n">A</span><span class="p">(</span><span class="k">const</span> <span class="n">A</span><span class="o">&</span><span class="p">);</span>
+ <span class="n">A</span><span class="o">&</span> <span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">A</span><span class="o">&</span><span class="p">);</span>
+<span class="p">};</span>
+
+<span class="c1">// becomes</span>
+
+<span class="k">struct</span> <span class="n">A</span> <span class="p">{</span>
+<span class="k">private</span><span class="o">:</span>
+ <span class="n">A</span><span class="p">(</span><span class="k">const</span> <span class="n">A</span><span class="o">&</span><span class="p">)</span> <span class="o">=</span> <span class="k">delete</span><span class="p">;</span>
+ <span class="n">A</span><span class="o">&</span> <span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">A</span><span class="o">&</span><span class="p">)</span> <span class="o">=</span> <span class="k">delete</span><span class="p">;</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-equals-default.html">modernize-use-equals-default</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-noexcept.html">modernize-use-noexcept</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-noexcept.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-noexcept.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-noexcept.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-noexcept.html Thu May 10 06:54:16 2018
@@ -0,0 +1,156 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-noexcept — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-nullptr" href="modernize-use-nullptr.html" />
+ <link rel="prev" title="modernize-use-equals-delete" href="modernize-use-equals-delete.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-noexcept</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-equals-delete.html">modernize-use-equals-delete</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-nullptr.html">modernize-use-nullptr</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-noexcept">
+<h1>modernize-use-noexcept<a class="headerlink" href="#modernize-use-noexcept" title="Permalink to this headline">¶</a></h1>
+<p>This check replaces deprecated dynamic exception specifications with
+the appropriate noexcept specification (introduced in C++11). By
+default this check will replace <tt class="docutils literal"><span class="pre">throw()</span></tt> with <tt class="docutils literal"><span class="pre">noexcept</span></tt>,
+and <tt class="docutils literal"><span class="pre">throw(<exception>[,...])</span></tt> or <tt class="docutils literal"><span class="pre">throw(...)</span></tt> with
+<tt class="docutils literal"><span class="pre">noexcept(false)</span></tt>.</p>
+<div class="section" id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="k">throw</span><span class="p">();</span>
+ <span class="kt">void</span> <span class="n">bar</span><span class="p">()</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="p">{}</span>
+</pre></div>
+</div>
+<p>transforms to:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="n">noexcept</span><span class="p">;</span>
+ <span class="kt">void</span> <span class="n">bar</span><span class="p">()</span> <span class="n">noexcept</span><span class="p">(</span><span class="kc">false</span><span class="p">)</span> <span class="p">{}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">ReplacementString</tt></dt>
+<dd></dd></dl>
+
+<p>Users can use <em class="xref std std-option">ReplacementString</em> to specify a macro to use
+instead of <tt class="docutils literal"><span class="pre">noexcept</span></tt>. This is useful when maintaining source code
+that uses custom exception specification marking other than
+<tt class="docutils literal"><span class="pre">noexcept</span></tt>. Fix-it hints will only be generated for non-throwing
+specifications.</p>
+<div class="section" id="id1">
+<h3>Example<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">bar</span><span class="p">()</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span>
+<span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="k">throw</span><span class="p">();</span>
+</pre></div>
+</div>
+<p>transforms to:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">bar</span><span class="p">()</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span> <span class="c1">// No fix-it generated.</span>
+<span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="n">NOEXCEPT</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>if the <em class="xref std std-option">ReplacementString</em> option is set to <cite>NOEXCEPT</cite>.</p>
+<dl class="option">
+<dt>
+<tt class="descname">UseNoexceptFalse</tt></dt>
+<dd></dd></dl>
+
+<p>Enabled by default, disabling will generate fix-it hints that remove
+throwing dynamic exception specs, e.g., <tt class="docutils literal"><span class="pre">throw(<something>)</span></tt>,
+completely without providing a replacement text, except for
+destructors and delete operators that are <tt class="docutils literal"><span class="pre">noexcept(true)</span></tt> by
+default.</p>
+</div>
+<div class="section" id="id2">
+<h3>Example<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">)</span> <span class="p">{}</span>
+
+<span class="k">struct</span> <span class="n">bar</span> <span class="p">{</span>
+ <span class="kt">void</span> <span class="n">foobar</span><span class="p">()</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span>
+ <span class="kt">void</span> <span class="k">operator</span> <span class="k">delete</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">)</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span>
+ <span class="kt">void</span> <span class="k">operator</span> <span class="k">delete</span><span class="p">[](</span><span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">)</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span>
+ <span class="o">~</span><span class="n">bar</span><span class="p">()</span> <span class="k">throw</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>transforms to:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">()</span> <span class="p">{}</span>
+
+<span class="k">struct</span> <span class="n">bar</span> <span class="p">{</span>
+ <span class="kt">void</span> <span class="n">foobar</span><span class="p">();</span>
+ <span class="kt">void</span> <span class="k">operator</span> <span class="k">delete</span><span class="p">(</span><span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">)</span> <span class="n">noexcept</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
+ <span class="kt">void</span> <span class="k">operator</span> <span class="k">delete</span><span class="p">[](</span><span class="kt">void</span> <span class="o">*</span><span class="n">ptr</span><span class="p">)</span> <span class="n">noexcept</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
+ <span class="o">~</span><span class="n">bar</span><span class="p">()</span> <span class="n">noexcept</span><span class="p">(</span><span class="kc">false</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>if the <em class="xref std std-option">UseNoexceptFalse</em> option is set to <cite>0</cite>.</p>
+</div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-equals-delete.html">modernize-use-equals-delete</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-nullptr.html">modernize-use-nullptr</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-nullptr.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-nullptr.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-nullptr.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-nullptr.html Thu May 10 06:54:16 2018
@@ -0,0 +1,134 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-nullptr — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-override" href="modernize-use-override.html" />
+ <link rel="prev" title="modernize-use-noexcept" href="modernize-use-noexcept.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-nullptr</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-noexcept.html">modernize-use-noexcept</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-override.html">modernize-use-override</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-nullptr">
+<h1>modernize-use-nullptr<a class="headerlink" href="#modernize-use-nullptr" title="Permalink to this headline">¶</a></h1>
+<p>The check converts the usage of null pointer constants (eg. <tt class="docutils literal"><span class="pre">NULL</span></tt>, <tt class="docutils literal"><span class="pre">0</span></tt>)
+to use the new C++11 <tt class="docutils literal"><span class="pre">nullptr</span></tt> keyword.</p>
+<div class="section" id="example">
+<h2>Example<a class="headerlink" href="#example" title="Permalink to this headline">¶</a></h2>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">assignment</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="nb">NULL</span><span class="p">;</span>
+ <span class="kt">char</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+ <span class="kt">char</span> <span class="n">c</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="o">*</span><span class="n">ret_ptr</span><span class="p">()</span> <span class="p">{</span>
+ <span class="k">return</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>transforms to:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">assignment</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kt">char</span> <span class="o">*</span><span class="n">a</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
+ <span class="kt">char</span> <span class="o">*</span><span class="n">b</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
+ <span class="kt">char</span> <span class="n">c</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="kt">int</span> <span class="o">*</span><span class="n">ret_ptr</span><span class="p">()</span> <span class="p">{</span>
+ <span class="k">return</span> <span class="n">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">NullMacros</tt></dt>
+<dd><p>Comma-separated list of macro names that will be transformed along with
+<tt class="docutils literal"><span class="pre">NULL</span></tt>. By default this check will only replace the <tt class="docutils literal"><span class="pre">NULL</span></tt> macro and will
+skip any similar user-defined macros.</p>
+</dd></dl>
+
+<div class="section" id="id1">
+<h3>Example<a class="headerlink" href="#id1" title="Permalink to this headline">¶</a></h3>
+<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#define MY_NULL (void*)0</span>
+<span class="kt">void</span> <span class="n">assignment</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kt">void</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">MY_NULL</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>transforms to:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#define MY_NULL NULL</span>
+<span class="kt">void</span> <span class="n">assignment</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kt">int</span> <span class="o">*</span><span class="n">p</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>if the <em class="xref std std-option">NullMacros</em> option is set to <tt class="docutils literal"><span class="pre">MY_NULL</span></tt>.</p>
+</div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-noexcept.html">modernize-use-noexcept</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-override.html">modernize-use-override</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-override.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-override.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-override.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-override.html Thu May 10 06:54:16 2018
@@ -0,0 +1,79 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-override — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-transparent-functors" href="modernize-use-transparent-functors.html" />
+ <link rel="prev" title="modernize-use-nullptr" href="modernize-use-nullptr.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-override</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-nullptr.html">modernize-use-nullptr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-transparent-functors.html">modernize-use-transparent-functors</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-override">
+<h1>modernize-use-override<a class="headerlink" href="#modernize-use-override" title="Permalink to this headline">¶</a></h1>
+<p>Use C++11’s <tt class="docutils literal"><span class="pre">override</span></tt> and remove <tt class="docutils literal"><span class="pre">virtual</span></tt> where applicable.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-nullptr.html">modernize-use-nullptr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-transparent-functors.html">modernize-use-transparent-functors</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-transparent-functors.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-transparent-functors.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-transparent-functors.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-transparent-functors.html Thu May 10 06:54:16 2018
@@ -0,0 +1,114 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-transparent-functors — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="modernize-use-using" href="modernize-use-using.html" />
+ <link rel="prev" title="modernize-use-override" href="modernize-use-override.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-transparent-functors</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-override.html">modernize-use-override</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-using.html">modernize-use-using</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-transparent-functors">
+<h1>modernize-use-transparent-functors<a class="headerlink" href="#modernize-use-transparent-functors" title="Permalink to this headline">¶</a></h1>
+<p>Prefer transparent functors to non-transparent ones. When using transparent
+functors, the type does not need to be repeated. The code is easier to read,
+maintain and less prone to errors. It is not possible to introduce unwanted
+conversions.</p>
+<blockquote>
+<div><div class="highlight-c++"><div class="highlight"><pre><span class="c1">// Non-transparent functor</span>
+<span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">greater</span><span class="o"><</span><span class="kt">int</span><span class="o">>></span> <span class="n">s</span><span class="p">;</span>
+
+<span class="c1">// Transparent functor.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">greater</span><span class="o"><>></span> <span class="n">s</span><span class="p">;</span>
+
+<span class="c1">// Non-transparent functor</span>
+<span class="k">using</span> <span class="n">MyFunctor</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">less</span><span class="o"><</span><span class="n">MyType</span><span class="o">></span><span class="p">;</span>
+</pre></div>
+</div>
+</div></blockquote>
+<p>It is not always a safe transformation though. The following case will be
+untouched to preserve the semantics.</p>
+<blockquote>
+<div><div class="highlight-c++"><div class="highlight"><pre><span class="c1">// Non-transparent functor</span>
+<span class="n">std</span><span class="o">::</span><span class="n">map</span><span class="o"><</span><span class="k">const</span> <span class="kt">char</span> <span class="o">*</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">,</span> <span class="n">std</span><span class="o">::</span><span class="n">greater</span><span class="o"><</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">>></span> <span class="n">s</span><span class="p">;</span>
+</pre></div>
+</div>
+</div></blockquote>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">SafeMode</tt></dt>
+<dd><p>If the option is set to non-zero, the check will not diagnose cases where
+using a transparent functor cannot be guaranteed to produce identical results
+as the original code. The default value for this option is <cite>0</cite>.</p>
+</dd></dl>
+
+<p>This check requires using C++14 or higher to run.</p>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-override.html">modernize-use-override</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="modernize-use-using.html">modernize-use-using</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-using.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-using.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-using.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/modernize-use-using.html Thu May 10 06:54:16 2018
@@ -0,0 +1,94 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - modernize-use-using — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="mpi-buffer-deref" href="mpi-buffer-deref.html" />
+ <link rel="prev" title="modernize-use-transparent-functors" href="modernize-use-transparent-functors.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - modernize-use-using</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-transparent-functors.html">modernize-use-transparent-functors</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="mpi-buffer-deref.html">mpi-buffer-deref</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modernize-use-using">
+<h1>modernize-use-using<a class="headerlink" href="#modernize-use-using" title="Permalink to this headline">¶</a></h1>
+<p>The check converts the usage of <tt class="docutils literal"><span class="pre">typedef</span></tt> with <tt class="docutils literal"><span class="pre">using</span></tt> keyword.</p>
+<p>Before:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">typedef</span> <span class="kt">int</span> <span class="n">variable</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">Class</span><span class="p">{};</span>
+<span class="k">typedef</span> <span class="kt">void</span> <span class="p">(</span><span class="n">Class</span><span class="o">::*</span> <span class="n">MyPtrType</span><span class="p">)()</span> <span class="k">const</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>After:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">using</span> <span class="n">variable</span> <span class="o">=</span> <span class="kt">int</span><span class="p">;</span>
+
+<span class="k">class</span> <span class="nc">Class</span><span class="p">{};</span>
+<span class="k">using</span> <span class="n">MyPtrType</span> <span class="o">=</span> <span class="kt">void</span> <span class="p">(</span><span class="n">Class</span><span class="o">::*</span><span class="p">)()</span> <span class="k">const</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>This check requires using C++11 or higher to run.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-transparent-functors.html">modernize-use-transparent-functors</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="mpi-buffer-deref.html">mpi-buffer-deref</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-buffer-deref.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-buffer-deref.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-buffer-deref.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-buffer-deref.html Thu May 10 06:54:16 2018
@@ -0,0 +1,97 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - mpi-buffer-deref — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="mpi-type-mismatch" href="mpi-type-mismatch.html" />
+ <link rel="prev" title="modernize-use-using" href="modernize-use-using.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - mpi-buffer-deref</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="modernize-use-using.html">modernize-use-using</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="mpi-type-mismatch.html">mpi-type-mismatch</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="mpi-buffer-deref">
+<h1>mpi-buffer-deref<a class="headerlink" href="#mpi-buffer-deref" title="Permalink to this headline">¶</a></h1>
+<p>This check verifies if a buffer passed to an MPI (Message Passing Interface)
+function is sufficiently dereferenced. Buffers should be passed as a single
+pointer or array. As MPI function signatures specify <tt class="docutils literal"><span class="pre">void</span> <span class="pre">*</span></tt> for their buffer
+types, insufficiently dereferenced buffers can be passed, like for example as
+double pointers or multidimensional arrays, without a compiler warning emitted.</p>
+<p>Examples:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// A double pointer is passed to the MPI function.</span>
+<span class="kt">char</span> <span class="o">*</span><span class="n">buf</span><span class="p">;</span>
+<span class="n">MPI_Send</span><span class="p">(</span><span class="o">&</span><span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">MPI_CHAR</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">MPI_COMM_WORLD</span><span class="p">);</span>
+
+<span class="c1">// A multidimensional array is passed to the MPI function.</span>
+<span class="kt">short</span> <span class="n">buf</span><span class="p">[</span><span class="mi">1</span><span class="p">][</span><span class="mi">1</span><span class="p">];</span>
+<span class="n">MPI_Send</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">MPI_SHORT</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">MPI_COMM_WORLD</span><span class="p">);</span>
+
+<span class="c1">// A pointer to an array is passed to the MPI function.</span>
+<span class="kt">short</span> <span class="o">*</span><span class="n">buf</span><span class="p">[</span><span class="mi">1</span><span class="p">];</span>
+<span class="n">MPI_Send</span><span class="p">(</span><span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">MPI_SHORT</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">MPI_COMM_WORLD</span><span class="p">);</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="modernize-use-using.html">modernize-use-using</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="mpi-type-mismatch.html">mpi-type-mismatch</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-type-mismatch.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-type-mismatch.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-type-mismatch.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/mpi-type-mismatch.html Thu May 10 06:54:16 2018
@@ -0,0 +1,92 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - mpi-type-mismatch — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-faster-string-find" href="performance-faster-string-find.html" />
+ <link rel="prev" title="mpi-buffer-deref" href="mpi-buffer-deref.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - mpi-type-mismatch</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="mpi-buffer-deref.html">mpi-buffer-deref</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-faster-string-find.html">performance-faster-string-find</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="mpi-type-mismatch">
+<h1>mpi-type-mismatch<a class="headerlink" href="#mpi-type-mismatch" title="Permalink to this headline">¶</a></h1>
+<p>This check verifies if buffer type and MPI (Message Passing Interface) datatype
+pairs match for used MPI functions. All MPI datatypes defined by the MPI
+standard (3.1) are verified by this check. User defined typedefs, custom MPI
+datatypes and null pointer constants are skipped, in the course of verification.</p>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// In this case, the buffer type matches MPI datatype.</span>
+<span class="kt">char</span> <span class="n">buf</span><span class="p">;</span>
+<span class="n">MPI_Send</span><span class="p">(</span><span class="o">&</span><span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">MPI_CHAR</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">MPI_COMM_WORLD</span><span class="p">);</span>
+
+<span class="c1">// In the following case, the buffer type does not match MPI datatype.</span>
+<span class="kt">int</span> <span class="n">buf</span><span class="p">;</span>
+<span class="n">MPI_Send</span><span class="p">(</span><span class="o">&</span><span class="n">buf</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="n">MPI_CHAR</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="n">MPI_COMM_WORLD</span><span class="p">);</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="mpi-buffer-deref.html">mpi-buffer-deref</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-faster-string-find.html">performance-faster-string-find</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-faster-string-find.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-faster-string-find.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-faster-string-find.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-faster-string-find.html Thu May 10 06:54:16 2018
@@ -0,0 +1,100 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-faster-string-find — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-for-range-copy" href="performance-for-range-copy.html" />
+ <link rel="prev" title="mpi-type-mismatch" href="mpi-type-mismatch.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-faster-string-find</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="mpi-type-mismatch.html">mpi-type-mismatch</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-for-range-copy.html">performance-for-range-copy</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-faster-string-find">
+<h1>performance-faster-string-find<a class="headerlink" href="#performance-faster-string-find" title="Permalink to this headline">¶</a></h1>
+<p>Optimize calls to <tt class="docutils literal"><span class="pre">std::string::find()</span></tt> and friends when the needle passed is
+a single character string literal. The character literal overload is more
+efficient.</p>
+<p>Examples:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">str</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">"A"</span><span class="p">);</span>
+
+<span class="c1">// becomes</span>
+
+<span class="n">str</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="sc">'A'</span><span class="p">);</span>
+</pre></div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">StringLikeClasses</tt></dt>
+<dd><p>Semicolon-separated list of names of string-like classes. By default only
+<tt class="docutils literal"><span class="pre">std::basic_string</span></tt> is considered. The list of methods to consired is
+fixed.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="mpi-type-mismatch.html">mpi-type-mismatch</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-for-range-copy.html">performance-for-range-copy</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-for-range-copy.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-for-range-copy.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-for-range-copy.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-for-range-copy.html Thu May 10 06:54:16 2018
@@ -0,0 +1,101 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-for-range-copy — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-implicit-cast-in-loop" href="performance-implicit-cast-in-loop.html" />
+ <link rel="prev" title="performance-faster-string-find" href="performance-faster-string-find.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-for-range-copy</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-faster-string-find.html">performance-faster-string-find</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-implicit-cast-in-loop.html">performance-implicit-cast-in-loop</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-for-range-copy">
+<h1>performance-for-range-copy<a class="headerlink" href="#performance-for-range-copy" title="Permalink to this headline">¶</a></h1>
+<p>Finds C++11 for ranges where the loop variable is copied in each iteration but
+it would suffice to obtain it by const reference.</p>
+<p>The check is only applied to loop variables of types that are expensive to copy
+which means they are not trivially copyable or have a non-trivial copy
+constructor or destructor.</p>
+<p>To ensure that it is safe to replace the copy with a const reference the
+following heuristic is employed:</p>
+<ol class="arabic simple">
+<li>The loop variable is const qualified.</li>
+<li>The loop variable is not const, but only const methods or operators are
+invoked on it, or it is used as const reference or value argument in
+constructors or function calls.</li>
+</ol>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">WarnOnAllAutoCopies</tt></dt>
+<dd><p>When non-zero, warns on any use of <cite>auto</cite> as the type of the range-based for
+loop variable. Default is <cite>0</cite>.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-faster-string-find.html">performance-faster-string-find</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-implicit-cast-in-loop.html">performance-implicit-cast-in-loop</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-implicit-cast-in-loop.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-implicit-cast-in-loop.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-implicit-cast-in-loop.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-implicit-cast-in-loop.html Thu May 10 06:54:16 2018
@@ -0,0 +1,91 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-implicit-cast-in-loop — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-inefficient-string-concatenation" href="performance-inefficient-string-concatenation.html" />
+ <link rel="prev" title="performance-for-range-copy" href="performance-for-range-copy.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-implicit-cast-in-loop</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-for-range-copy.html">performance-for-range-copy</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-inefficient-string-concatenation.html">performance-inefficient-string-concatenation</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-implicit-cast-in-loop">
+<h1>performance-implicit-cast-in-loop<a class="headerlink" href="#performance-implicit-cast-in-loop" title="Permalink to this headline">¶</a></h1>
+<p>This warning appears in a range-based loop with a loop variable of const ref
+type where the type of the variable does not match the one returned by the
+iterator. This means that an implicit cast has been added, which can for example
+result in expensive deep copies.</p>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">map</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="n">vector</span><span class="o"><</span><span class="n">string</span><span class="o">>></span> <span class="n">my_map</span><span class="p">;</span>
+<span class="k">for</span> <span class="p">(</span><span class="k">const</span> <span class="n">pair</span><span class="o"><</span><span class="kt">int</span><span class="p">,</span> <span class="n">vector</span><span class="o"><</span><span class="n">string</span><span class="o">>>&</span> <span class="n">p</span> <span class="o">:</span> <span class="n">my_map</span><span class="p">)</span> <span class="p">{}</span>
+<span class="c1">// The iterator type is in fact pair<const int, vector<string>>, which means</span>
+<span class="c1">// that the compiler added a cast, resulting in a copy of the vectors.</span>
+</pre></div>
+</div>
+<p>The easiest solution is usually to use <tt class="docutils literal"><span class="pre">const</span> <span class="pre">auto&</span></tt> instead of writing the type
+manually.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-for-range-copy.html">performance-for-range-copy</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-inefficient-string-concatenation.html">performance-inefficient-string-concatenation</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-string-concatenation.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-string-concatenation.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-string-concatenation.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-string-concatenation.html Thu May 10 06:54:16 2018
@@ -0,0 +1,125 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-inefficient-string-concatenation — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-inefficient-vector-operation" href="performance-inefficient-vector-operation.html" />
+ <link rel="prev" title="performance-implicit-cast-in-loop" href="performance-implicit-cast-in-loop.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-inefficient-string-concatenation</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-implicit-cast-in-loop.html">performance-implicit-cast-in-loop</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-inefficient-vector-operation.html">performance-inefficient-vector-operation</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-inefficient-string-concatenation">
+<h1>performance-inefficient-string-concatenation<a class="headerlink" href="#performance-inefficient-string-concatenation" title="Permalink to this headline">¶</a></h1>
+<p>This check warns about the performance overhead arising from concatenating
+strings using the <tt class="docutils literal"><span class="pre">operator+</span></tt>, for instance:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">(</span><span class="s">"Foo"</span><span class="p">),</span> <span class="n">b</span><span class="p">(</span><span class="s">"Bar"</span><span class="p">);</span>
+<span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="n">b</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Instead of this structure you should use <tt class="docutils literal"><span class="pre">operator+=</span></tt> or <tt class="docutils literal"><span class="pre">std::string</span></tt>‘s
+(<tt class="docutils literal"><span class="pre">std::basic_string</span></tt>) class member function <tt class="docutils literal"><span class="pre">append()</span></tt>. For instance:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">(</span><span class="s">"Foo"</span><span class="p">),</span> <span class="n">b</span><span class="p">(</span><span class="s">"Baz"</span><span class="p">);</span>
+<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">20000</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">a</span> <span class="o">=</span> <span class="n">a</span> <span class="o">+</span> <span class="s">"Bar"</span> <span class="o">+</span> <span class="n">b</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Could be rewritten in a greatly more efficient way like:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">(</span><span class="s">"Foo"</span><span class="p">),</span> <span class="n">b</span><span class="p">(</span><span class="s">"Baz"</span><span class="p">);</span>
+<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">20000</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">a</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">"Bar"</span><span class="p">).</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>And this can be rewritten too:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&</span><span class="p">)</span> <span class="p">{}</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">(</span><span class="s">"Foo"</span><span class="p">),</span> <span class="n">b</span><span class="p">(</span><span class="s">"Baz"</span><span class="p">);</span>
+<span class="kt">void</span> <span class="n">g</span><span class="p">()</span> <span class="p">{</span>
+ <span class="n">f</span><span class="p">(</span><span class="n">a</span> <span class="o">+</span> <span class="s">"Bar"</span> <span class="o">+</span> <span class="n">b</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>In a slightly more efficient way like:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="o">&</span><span class="p">)</span> <span class="p">{}</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">(</span><span class="s">"Foo"</span><span class="p">),</span> <span class="n">b</span><span class="p">(</span><span class="s">"Baz"</span><span class="p">);</span>
+<span class="kt">void</span> <span class="n">g</span><span class="p">()</span> <span class="p">{</span>
+ <span class="n">f</span><span class="p">(</span><span class="n">std</span><span class="o">::</span><span class="n">string</span><span class="p">(</span><span class="n">a</span><span class="p">).</span><span class="n">append</span><span class="p">(</span><span class="s">"Bar"</span><span class="p">).</span><span class="n">append</span><span class="p">(</span><span class="n">b</span><span class="p">));</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">StrictMode</tt></dt>
+<dd><p>When zero, the check will only check the string usage in <tt class="docutils literal"><span class="pre">while</span></tt>, <tt class="docutils literal"><span class="pre">for</span></tt>
+and <tt class="docutils literal"><span class="pre">for-range</span></tt> statements. Default is <cite>0</cite>.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-implicit-cast-in-loop.html">performance-implicit-cast-in-loop</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-inefficient-vector-operation.html">performance-inefficient-vector-operation</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-vector-operation.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-vector-operation.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-vector-operation.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-inefficient-vector-operation.html Thu May 10 06:54:16 2018
@@ -0,0 +1,121 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-inefficient-vector-operation — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-type-promotion-in-math-fn" href="performance-type-promotion-in-math-fn.html" />
+ <link rel="prev" title="performance-inefficient-string-concatenation" href="performance-inefficient-string-concatenation.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-inefficient-vector-operation</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-inefficient-string-concatenation.html">performance-inefficient-string-concatenation</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-type-promotion-in-math-fn.html">performance-type-promotion-in-math-fn</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-inefficient-vector-operation">
+<h1>performance-inefficient-vector-operation<a class="headerlink" href="#performance-inefficient-vector-operation" title="Permalink to this headline">¶</a></h1>
+<p>Finds possible inefficient <tt class="docutils literal"><span class="pre">std::vector</span></tt> operations (e.g. <tt class="docutils literal"><span class="pre">push_back</span></tt>,
+<tt class="docutils literal"><span class="pre">emplace_back</span></tt>) that may cause unnecessary memory reallocations.</p>
+<p>Currently, the check only detects following kinds of loops with a single
+statement body:</p>
+<ul class="simple">
+<li>Counter-based for loops start with 0:</li>
+</ul>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">v</span><span class="p">;</span>
+<span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="n">n</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">v</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">n</span><span class="p">);</span>
+ <span class="c1">// This will trigger the warning since the push_back may cause multiple</span>
+ <span class="c1">// memory reallocations in v. This can be avoid by inserting a 'reserve(n)'</span>
+ <span class="c1">// statement before the for statement.</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<ul class="simple">
+<li>For-range loops like <tt class="docutils literal"><span class="pre">for</span> <span class="pre">(range-declaration</span> <span class="pre">:</span> <span class="pre">range_expression)</span></tt>, the type
+of <tt class="docutils literal"><span class="pre">range_expression</span></tt> can be <tt class="docutils literal"><span class="pre">std::vector</span></tt>, <tt class="docutils literal"><span class="pre">std::array</span></tt>,
+<tt class="docutils literal"><span class="pre">std::deque</span></tt>, <tt class="docutils literal"><span class="pre">std::set</span></tt>, <tt class="docutils literal"><span class="pre">std::unordered_set</span></tt>, <tt class="docutils literal"><span class="pre">std::map</span></tt>,
+<tt class="docutils literal"><span class="pre">std::unordered_set</span></tt>:</li>
+</ul>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">data</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">vector</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">v</span><span class="p">;</span>
+
+<span class="k">for</span> <span class="p">(</span><span class="k">auto</span> <span class="n">element</span> <span class="o">:</span> <span class="n">data</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">v</span><span class="p">.</span><span class="n">push_back</span><span class="p">(</span><span class="n">element</span><span class="p">);</span>
+ <span class="c1">// This will trigger the warning since the 'push_back' may cause multiple</span>
+ <span class="c1">// memory reallocations in v. This can be avoid by inserting a</span>
+ <span class="c1">// 'reserve(data.size())' statement before the for statement.</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">VectorLikeClasses</tt></dt>
+<dd><p>Semicolon-separated list of names of vector-like classes. By default only
+<tt class="docutils literal"><span class="pre">::std::vector</span></tt> is considered.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-inefficient-string-concatenation.html">performance-inefficient-string-concatenation</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-type-promotion-in-math-fn.html">performance-type-promotion-in-math-fn</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-type-promotion-in-math-fn.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-type-promotion-in-math-fn.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-type-promotion-in-math-fn.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-type-promotion-in-math-fn.html Thu May 10 06:54:16 2018
@@ -0,0 +1,92 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-type-promotion-in-math-fn — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-unnecessary-copy-initialization" href="performance-unnecessary-copy-initialization.html" />
+ <link rel="prev" title="performance-inefficient-vector-operation" href="performance-inefficient-vector-operation.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-type-promotion-in-math-fn</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-inefficient-vector-operation.html">performance-inefficient-vector-operation</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-unnecessary-copy-initialization.html">performance-unnecessary-copy-initialization</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-type-promotion-in-math-fn">
+<h1>performance-type-promotion-in-math-fn<a class="headerlink" href="#performance-type-promotion-in-math-fn" title="Permalink to this headline">¶</a></h1>
+<p>Finds calls to C math library functions (from <tt class="docutils literal"><span class="pre">math.h</span></tt> or, in C++, <tt class="docutils literal"><span class="pre">cmath</span></tt>)
+with implicit <tt class="docutils literal"><span class="pre">float</span></tt> to <tt class="docutils literal"><span class="pre">double</span></tt> promotions.</p>
+<p>For example, warns on <tt class="docutils literal"><span class="pre">::sin(0.f)</span></tt>, because this funciton’s parameter is a
+double. You probably meant to call <tt class="docutils literal"><span class="pre">std::sin(0.f)</span></tt> (in C++), or <tt class="docutils literal"><span class="pre">sinf(0.f)</span></tt>
+(in C).</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">float</span> <span class="n">a</span><span class="p">;</span>
+<span class="n">asin</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+
+<span class="c1">// becomes</span>
+
+<span class="kt">float</span> <span class="n">a</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">asin</span><span class="p">(</span><span class="n">a</span><span class="p">);</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-inefficient-vector-operation.html">performance-inefficient-vector-operation</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-unnecessary-copy-initialization.html">performance-unnecessary-copy-initialization</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-copy-initialization.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-copy-initialization.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-copy-initialization.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-copy-initialization.html Thu May 10 06:54:16 2018
@@ -0,0 +1,107 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-unnecessary-copy-initialization — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="performance-unnecessary-value-param" href="performance-unnecessary-value-param.html" />
+ <link rel="prev" title="performance-type-promotion-in-math-fn" href="performance-type-promotion-in-math-fn.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-unnecessary-copy-initialization</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-type-promotion-in-math-fn.html">performance-type-promotion-in-math-fn</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-unnecessary-value-param.html">performance-unnecessary-value-param</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-unnecessary-copy-initialization">
+<h1>performance-unnecessary-copy-initialization<a class="headerlink" href="#performance-unnecessary-copy-initialization" title="Permalink to this headline">¶</a></h1>
+<p>Finds local variable declarations that are initialized using the copy
+constructor of a non-trivially-copyable type but it would suffice to obtain a
+const reference.</p>
+<p>The check is only applied if it is safe to replace the copy by a const
+reference. This is the case when the variable is const qualified or when it is
+only used as a const, i.e. only const methods or operators are invoked on it, or
+it is used as const reference or value argument in constructors or function
+calls.</p>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">const</span> <span class="n">string</span><span class="o">&</span> <span class="n">constReference</span><span class="p">();</span>
+<span class="kt">void</span> <span class="n">Function</span><span class="p">()</span> <span class="p">{</span>
+ <span class="c1">// The warning will suggest making this a const reference.</span>
+ <span class="k">const</span> <span class="n">string</span> <span class="n">UnnecessaryCopy</span> <span class="o">=</span> <span class="n">constReference</span><span class="p">();</span>
+<span class="p">}</span>
+
+<span class="k">struct</span> <span class="n">Foo</span> <span class="p">{</span>
+ <span class="k">const</span> <span class="n">string</span><span class="o">&</span> <span class="n">name</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+<span class="p">};</span>
+<span class="kt">void</span> <span class="n">Function</span><span class="p">(</span><span class="k">const</span> <span class="n">Foo</span><span class="o">&</span> <span class="n">foo</span><span class="p">)</span> <span class="p">{</span>
+ <span class="c1">// The warning will suggest making this a const reference.</span>
+ <span class="n">string</span> <span class="n">UnnecessaryCopy1</span> <span class="o">=</span> <span class="n">foo</span><span class="p">.</span><span class="n">name</span><span class="p">();</span>
+ <span class="n">UnnecessaryCopy1</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">"bar"</span><span class="p">);</span>
+
+ <span class="c1">// The warning will suggest making this a const reference.</span>
+ <span class="n">string</span> <span class="n">UnnecessaryCopy2</span> <span class="o">=</span> <span class="n">UnnecessaryCopy1</span><span class="p">;</span>
+ <span class="n">UnnecessaryCopy2</span><span class="p">.</span><span class="n">find</span><span class="p">(</span><span class="s">"bar"</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-type-promotion-in-math-fn.html">performance-type-promotion-in-math-fn</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="performance-unnecessary-value-param.html">performance-unnecessary-value-param</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-value-param.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-value-param.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-value-param.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/performance-unnecessary-value-param.html Thu May 10 06:54:16 2018
@@ -0,0 +1,130 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - performance-unnecessary-value-param — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-avoid-const-params-in-decls" href="readability-avoid-const-params-in-decls.html" />
+ <link rel="prev" title="performance-unnecessary-copy-initialization" href="performance-unnecessary-copy-initialization.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - performance-unnecessary-value-param</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-unnecessary-copy-initialization.html">performance-unnecessary-copy-initialization</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-avoid-const-params-in-decls.html">readability-avoid-const-params-in-decls</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="performance-unnecessary-value-param">
+<h1>performance-unnecessary-value-param<a class="headerlink" href="#performance-unnecessary-value-param" title="Permalink to this headline">¶</a></h1>
+<p>Flags value parameter declarations of expensive to copy types that are copied
+for each invocation but it would suffice to pass them by const reference.</p>
+<p>The check is only applied to parameters of types that are expensive to copy
+which means they are not trivially copyable or have a non-trivial copy
+constructor or destructor.</p>
+<p>To ensure that it is safe to replace the value parameter with a const reference
+the following heuristic is employed:</p>
+<ol class="arabic simple">
+<li>the parameter is const qualified;</li>
+<li>the parameter is not const, but only const methods or operators are invoked
+on it, or it is used as const reference or value argument in constructors or
+function calls.</li>
+</ol>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="k">const</span> <span class="n">string</span> <span class="n">Value</span><span class="p">)</span> <span class="p">{</span>
+ <span class="c1">// The warning will suggest making Value a reference.</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="n">g</span><span class="p">(</span><span class="n">ExpensiveToCopy</span> <span class="n">Value</span><span class="p">)</span> <span class="p">{</span>
+ <span class="c1">// The warning will suggest making Value a const reference.</span>
+ <span class="n">Value</span><span class="p">.</span><span class="n">ConstMethd</span><span class="p">();</span>
+ <span class="n">ExpensiveToCopy</span> <span class="n">Copy</span><span class="p">(</span><span class="n">Value</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>If the parameter is not const, only copied or assigned once and has a
+non-trivial move-constructor or move-assignment operator respectively the check
+will suggest to move it.</p>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">setValue</span><span class="p">(</span><span class="n">string</span> <span class="n">Value</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">Field</span> <span class="o">=</span> <span class="n">Value</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Will become:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="cp">#include <utility></span>
+
+<span class="kt">void</span> <span class="n">setValue</span><span class="p">(</span><span class="n">string</span> <span class="n">Value</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">Field</span> <span class="o">=</span> <span class="n">std</span><span class="o">::</span><span class="n">move</span><span class="p">(</span><span class="n">Value</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">IncludeStyle</tt></dt>
+<dd><p>A string specifying which include-style is used, <cite>llvm</cite> or <cite>google</cite>. Default
+is <cite>llvm</cite>.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-unnecessary-copy-initialization.html">performance-unnecessary-copy-initialization</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-avoid-const-params-in-decls.html">readability-avoid-const-params-in-decls</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-avoid-const-params-in-decls.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-avoid-const-params-in-decls.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-avoid-const-params-in-decls.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-avoid-const-params-in-decls.html Thu May 10 06:54:16 2018
@@ -0,0 +1,87 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-avoid-const-params-in-decls — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-braces-around-statements" href="readability-braces-around-statements.html" />
+ <link rel="prev" title="performance-unnecessary-value-param" href="performance-unnecessary-value-param.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-avoid-const-params-in-decls</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="performance-unnecessary-value-param.html">performance-unnecessary-value-param</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-braces-around-statements.html">readability-braces-around-statements</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-avoid-const-params-in-decls">
+<h1>readability-avoid-const-params-in-decls<a class="headerlink" href="#readability-avoid-const-params-in-decls" title="Permalink to this headline">¶</a></h1>
+<p>Checks whether a function declaration has parameters that are top level
+<tt class="docutils literal"><span class="pre">const</span></tt>.</p>
+<p><tt class="docutils literal"><span class="pre">const</span></tt> values in declarations do not affect the signature of a function, so
+they should not be put there.</p>
+<p>Examples:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="k">const</span> <span class="n">string</span><span class="p">);</span> <span class="c1">// Bad: const is top level.</span>
+<span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="k">const</span> <span class="n">string</span><span class="o">&</span><span class="p">);</span> <span class="c1">// Good: const is not top level.</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="performance-unnecessary-value-param.html">performance-unnecessary-value-param</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-braces-around-statements.html">readability-braces-around-statements</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-braces-around-statements.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-braces-around-statements.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-braces-around-statements.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-braces-around-statements.html Thu May 10 06:54:16 2018
@@ -0,0 +1,107 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-braces-around-statements — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-container-size-empty" href="readability-container-size-empty.html" />
+ <link rel="prev" title="readability-avoid-const-params-in-decls" href="readability-avoid-const-params-in-decls.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-braces-around-statements</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-avoid-const-params-in-decls.html">readability-avoid-const-params-in-decls</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-container-size-empty.html">readability-container-size-empty</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-braces-around-statements">
+<h1>readability-braces-around-statements<a class="headerlink" href="#readability-braces-around-statements" title="Permalink to this headline">¶</a></h1>
+<p><cite>google-readability-braces-around-statements</cite> redirects here as an alias for
+this check.</p>
+<p>Checks that bodies of <tt class="docutils literal"><span class="pre">if</span></tt> statements and loops (<tt class="docutils literal"><span class="pre">for</span></tt>, <tt class="docutils literal"><span class="pre">do</span> <span class="pre">while</span></tt>, and
+<tt class="docutils literal"><span class="pre">while</span></tt>) are inside braces.</p>
+<p>Before:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">if</span> <span class="p">(</span><span class="n">condition</span><span class="p">)</span>
+ <span class="n">statement</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>After:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">if</span> <span class="p">(</span><span class="n">condition</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">statement</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">ShortStatementLines</tt></dt>
+<dd><p>Defines the minimal number of lines that the statement should have in order
+to trigger this check.</p>
+<p>The number of lines is counted from the end of condition or initial keyword
+(<tt class="docutils literal"><span class="pre">do</span></tt>/<tt class="docutils literal"><span class="pre">else</span></tt>) until the last line of the inner statement. Default value
+<cite>0</cite> means that braces will be added to all statements (not having them
+already).</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-avoid-const-params-in-decls.html">readability-avoid-const-params-in-decls</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-container-size-empty.html">readability-container-size-empty</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-container-size-empty.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-container-size-empty.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-container-size-empty.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-container-size-empty.html Thu May 10 06:54:16 2018
@@ -0,0 +1,94 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-container-size-empty — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-delete-null-pointer" href="readability-delete-null-pointer.html" />
+ <link rel="prev" title="readability-braces-around-statements" href="readability-braces-around-statements.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-container-size-empty</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-braces-around-statements.html">readability-braces-around-statements</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-delete-null-pointer.html">readability-delete-null-pointer</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-container-size-empty">
+<h1>readability-container-size-empty<a class="headerlink" href="#readability-container-size-empty" title="Permalink to this headline">¶</a></h1>
+<p>Checks whether a call to the <tt class="docutils literal"><span class="pre">size()</span></tt> method can be replaced with a call to
+<tt class="docutils literal"><span class="pre">empty()</span></tt>.</p>
+<p>The emptiness of a container should be checked using the <tt class="docutils literal"><span class="pre">empty()</span></tt> method
+instead of the <tt class="docutils literal"><span class="pre">size()</span></tt> method. It is not guaranteed that <tt class="docutils literal"><span class="pre">size()</span></tt> is a
+constant-time function, and it is generally more efficient and also shows
+clearer intent to use <tt class="docutils literal"><span class="pre">empty()</span></tt>. Furthermore some containers may implement
+the <tt class="docutils literal"><span class="pre">empty()</span></tt> method but not implement the <tt class="docutils literal"><span class="pre">size()</span></tt> method. Using
+<tt class="docutils literal"><span class="pre">empty()</span></tt> whenever possible makes it easier to switch to another container in
+the future.</p>
+<p>The check issues warning if a container has <tt class="docutils literal"><span class="pre">size()</span></tt> and <tt class="docutils literal"><span class="pre">empty()</span></tt> methods
+matching following signatures:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">size_type</span> <span class="n">size</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+<span class="kt">bool</span> <span class="n">empty</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
+</pre></div>
+</div>
+<p><cite>size_type</cite> can be any kind of integer type.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-braces-around-statements.html">readability-braces-around-statements</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-delete-null-pointer.html">readability-delete-null-pointer</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-delete-null-pointer.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-delete-null-pointer.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-delete-null-pointer.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-delete-null-pointer.html Thu May 10 06:54:16 2018
@@ -0,0 +1,84 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-delete-null-pointer — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-deleted-default" href="readability-deleted-default.html" />
+ <link rel="prev" title="readability-container-size-empty" href="readability-container-size-empty.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-delete-null-pointer</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-container-size-empty.html">readability-container-size-empty</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-deleted-default.html">readability-deleted-default</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-delete-null-pointer">
+<h1>readability-delete-null-pointer<a class="headerlink" href="#readability-delete-null-pointer" title="Permalink to this headline">¶</a></h1>
+<p>Checks the <tt class="docutils literal"><span class="pre">if</span></tt> statements where a pointer’s existence is checked and then deletes the pointer.
+The check is unnecessary as deleting a null pointer has no effect.</p>
+<div class="code c++ highlight-python"><pre>int *p;
+if (p)
+ delete p;</pre>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-container-size-empty.html">readability-container-size-empty</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-deleted-default.html">readability-deleted-default</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-deleted-default.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-deleted-default.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-deleted-default.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-deleted-default.html Thu May 10 06:54:16 2018
@@ -0,0 +1,94 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-deleted-default — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-else-after-return" href="readability-else-after-return.html" />
+ <link rel="prev" title="readability-delete-null-pointer" href="readability-delete-null-pointer.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-deleted-default</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-delete-null-pointer.html">readability-delete-null-pointer</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-else-after-return.html">readability-else-after-return</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-deleted-default">
+<h1>readability-deleted-default<a class="headerlink" href="#readability-deleted-default" title="Permalink to this headline">¶</a></h1>
+<p>Checks that constructors and assignment operators marked as <tt class="docutils literal"><span class="pre">=</span> <span class="pre">default</span></tt> are
+not actually deleted by the compiler.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">class</span> <span class="nc">Example</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+ <span class="c1">// This constructor is deleted because I is missing a default value.</span>
+ <span class="n">Example</span><span class="p">()</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+ <span class="c1">// This is fine.</span>
+ <span class="n">Example</span><span class="p">(</span><span class="k">const</span> <span class="n">Example</span><span class="o">&</span> <span class="n">Other</span><span class="p">)</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+ <span class="c1">// This operator is deleted because I cannot be assigned (it is const).</span>
+ <span class="n">Example</span><span class="o">&</span> <span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">Example</span><span class="o">&</span> <span class="n">Other</span><span class="p">)</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span>
+
+<span class="k">private</span><span class="o">:</span>
+ <span class="k">const</span> <span class="kt">int</span> <span class="n">I</span><span class="p">;</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-delete-null-pointer.html">readability-delete-null-pointer</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-else-after-return.html">readability-else-after-return</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-else-after-return.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-else-after-return.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-else-after-return.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-else-after-return.html Thu May 10 06:54:16 2018
@@ -0,0 +1,129 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-else-after-return — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-function-size" href="readability-function-size.html" />
+ <link rel="prev" title="readability-deleted-default" href="readability-deleted-default.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-else-after-return</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-deleted-default.html">readability-deleted-default</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-function-size.html">readability-function-size</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-else-after-return">
+<h1>readability-else-after-return<a class="headerlink" href="#readability-else-after-return" title="Permalink to this headline">¶</a></h1>
+<p><a class="reference external" href="http://llvm.org/docs/CodingStandards.html">LLVM Coding Standards</a> advises to
+reduce indentation where possible and where it makes understanding code easier.
+Early exit is one of the suggested enforcements of that. Please do not use
+<tt class="docutils literal"><span class="pre">else</span></tt> or <tt class="docutils literal"><span class="pre">else</span> <span class="pre">if</span></tt> after something that interrupts control flow - like
+<tt class="docutils literal"><span class="pre">return</span></tt>, <tt class="docutils literal"><span class="pre">break</span></tt>, <tt class="docutils literal"><span class="pre">continue</span></tt>, <tt class="docutils literal"><span class="pre">throw</span></tt>.</p>
+<p>The following piece of code illustrates how the check works. This piece of code:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">Value</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kt">int</span> <span class="n">Local</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+ <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">42</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">return</span><span class="p">;</span>
+ <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+ <span class="n">Local</span><span class="o">++</span><span class="p">;</span>
+ <span class="p">}</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span>
+ <span class="k">continue</span><span class="p">;</span>
+ <span class="k">else</span>
+ <span class="n">Local</span><span class="o">++</span><span class="p">;</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">throw</span> <span class="mi">42</span><span class="p">;</span>
+ <span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
+ <span class="n">Local</span><span class="o">++</span><span class="p">;</span>
+ <span class="p">}</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>Would be transformed into:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">Value</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kt">int</span> <span class="n">Local</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+ <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">42</span><span class="p">;</span> <span class="n">i</span><span class="o">++</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">==</span> <span class="mi">1</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">return</span><span class="p">;</span>
+ <span class="p">}</span>
+ <span class="n">Local</span><span class="o">++</span><span class="p">;</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">==</span> <span class="mi">2</span><span class="p">)</span>
+ <span class="k">continue</span><span class="p">;</span>
+ <span class="n">Local</span><span class="o">++</span><span class="p">;</span>
+
+ <span class="k">if</span> <span class="p">(</span><span class="n">Value</span> <span class="o">==</span> <span class="mi">3</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">throw</span> <span class="mi">42</span><span class="p">;</span>
+ <span class="p">}</span>
+ <span class="n">Local</span><span class="o">++</span><span class="p">;</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This check helps to enforce this <a class="reference external" href="http://llvm.org/docs/CodingStandards.html#don-t-use-else-after-a-return">LLVM Coding Standards recommendation</a>.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-deleted-default.html">readability-deleted-default</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-function-size.html">readability-function-size</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-function-size.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-function-size.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-function-size.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-function-size.html Thu May 10 06:54:16 2018
@@ -0,0 +1,120 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-function-size — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-identifier-naming" href="readability-identifier-naming.html" />
+ <link rel="prev" title="readability-else-after-return" href="readability-else-after-return.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-function-size</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-else-after-return.html">readability-else-after-return</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-identifier-naming.html">readability-identifier-naming</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-function-size">
+<h1>readability-function-size<a class="headerlink" href="#readability-function-size" title="Permalink to this headline">¶</a></h1>
+<p><cite>google-readability-function-size</cite> redirects here as an alias for this check.</p>
+<p>Checks for large functions based on various metrics.</p>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">LineThreshold</tt></dt>
+<dd><p>Flag functions exceeding this number of lines. The default is <cite>-1</cite> (ignore
+the number of lines).</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">StatementThreshold</tt></dt>
+<dd><p>Flag functions exceeding this number of statements. This may differ
+significantly from the number of lines for macro-heavy code. The default is
+<cite>800</cite>.</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">BranchThreshold</tt></dt>
+<dd><p>Flag functions exceeding this number of control statements. The default is
+<cite>-1</cite> (ignore the number of branches).</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">ParameterThreshold</tt></dt>
+<dd><p>Flag functions that exceed a specified number of parameters. The default
+is <cite>-1</cite> (ignore the number of parameters).</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">NestingThreshold</tt></dt>
+<dd><p>Flag compound statements which create next nesting level after
+<cite>NestingThreshold</cite>. This may differ significantly from the expected value
+for macro-heavy code. The default is <cite>-1</cite> (ignore the nesting level).</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-else-after-return.html">readability-else-after-return</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-identifier-naming.html">readability-identifier-naming</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-identifier-naming.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-identifier-naming.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-identifier-naming.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-identifier-naming.html Thu May 10 06:54:16 2018
@@ -0,0 +1,88 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-identifier-naming — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-implicit-bool-cast" href="readability-implicit-bool-cast.html" />
+ <link rel="prev" title="readability-function-size" href="readability-function-size.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-identifier-naming</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-function-size.html">readability-function-size</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-implicit-bool-cast.html">readability-implicit-bool-cast</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-identifier-naming">
+<h1>readability-identifier-naming<a class="headerlink" href="#readability-identifier-naming" title="Permalink to this headline">¶</a></h1>
+<p>Checks for identifiers naming style mismatch.</p>
+<p>This check will try to enforce coding guidelines on the identifiers naming.
+It supports <cite>lower_case</cite>, <cite>UPPER_CASE</cite>, <cite>camelBack</cite> and <cite>CamelCase</cite> casing and
+tries to convert from one to another if a mismatch is detected.</p>
+<p>It also supports a fixed prefix and suffix that will be prepended or
+appended to the identifiers, regardless of the casing.</p>
+<p>Many configuration options are available, in order to be able to create
+different rules for different kind of identifier. In general, the
+rules are falling back to a more generic rule if the specific case is not
+configured.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-function-size.html">readability-function-size</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-implicit-bool-cast.html">readability-implicit-bool-cast</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-implicit-bool-cast.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-implicit-bool-cast.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-implicit-bool-cast.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-implicit-bool-cast.html Thu May 10 06:54:16 2018
@@ -0,0 +1,194 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-implicit-bool-cast — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-inconsistent-declaration-parameter-name" href="readability-inconsistent-declaration-parameter-name.html" />
+ <link rel="prev" title="readability-identifier-naming" href="readability-identifier-naming.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-implicit-bool-cast</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-identifier-naming.html">readability-identifier-naming</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-inconsistent-declaration-parameter-name.html">readability-inconsistent-declaration-parameter-name</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-implicit-bool-cast">
+<h1>readability-implicit-bool-cast<a class="headerlink" href="#readability-implicit-bool-cast" title="Permalink to this headline">¶</a></h1>
+<p>This check can be used to find implicit conversions between built-in types and
+booleans. Depending on use case, it may simply help with readability of the code,
+or in some cases, point to potential bugs which remain unnoticed due to implicit
+conversions.</p>
+<p>The following is a real-world example of bug which was hiding behind implicit
+<tt class="docutils literal"><span class="pre">bool</span></tt> cast:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">class</span> <span class="nc">Foo</span> <span class="p">{</span>
+ <span class="kt">int</span> <span class="n">m_foo</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+ <span class="kt">void</span> <span class="n">setFoo</span><span class="p">(</span><span class="kt">bool</span> <span class="n">foo</span><span class="p">)</span> <span class="p">{</span> <span class="n">m_foo</span> <span class="o">=</span> <span class="n">foo</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// warning: implicit cast bool -> int</span>
+ <span class="kt">int</span> <span class="n">getFoo</span><span class="p">()</span> <span class="p">{</span> <span class="k">return</span> <span class="n">m_foo</span><span class="p">;</span> <span class="p">}</span>
+<span class="p">};</span>
+
+<span class="kt">void</span> <span class="n">use</span><span class="p">(</span><span class="n">Foo</span><span class="o">&</span> <span class="n">foo</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kt">bool</span> <span class="n">value</span> <span class="o">=</span> <span class="n">foo</span><span class="p">.</span><span class="n">getFoo</span><span class="p">();</span> <span class="c1">// warning: implicit cast int -> bool</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>This code is the result of unsuccessful refactoring, where type of <tt class="docutils literal"><span class="pre">m_foo</span></tt>
+changed from <tt class="docutils literal"><span class="pre">bool</span></tt> to <tt class="docutils literal"><span class="pre">int</span></tt>. The programmer forgot to change all
+occurrences of <tt class="docutils literal"><span class="pre">bool</span></tt>, and the remaining code is no longer correct, yet it
+still compiles without any visible warnings.</p>
+<p>In addition to issuing warnings, fix-it hints are provided to help solve the
+reported issues. This can be used for improving readability of code, for
+example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">conversionsToBool</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kt">float</span> <span class="n">floating</span><span class="p">;</span>
+ <span class="kt">bool</span> <span class="n">boolean</span> <span class="o">=</span> <span class="n">floating</span><span class="p">;</span>
+ <span class="c1">// ^ propose replacement: bool boolean = floating != 0.0f;</span>
+
+ <span class="kt">int</span> <span class="n">integer</span><span class="p">;</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">integer</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="c1">// ^ propose replacement: if (integer != 0) {}</span>
+
+ <span class="kt">int</span><span class="o">*</span> <span class="n">pointer</span><span class="p">;</span>
+ <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">pointer</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="c1">// ^ propose replacement: if (pointer == nullptr) {}</span>
+
+ <span class="k">while</span> <span class="p">(</span><span class="mi">1</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="c1">// ^ propose replacement: while (true) {}</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="n">functionTakingInt</span><span class="p">(</span><span class="kt">int</span> <span class="n">param</span><span class="p">);</span>
+
+<span class="kt">void</span> <span class="n">conversionsFromBool</span><span class="p">()</span> <span class="p">{</span>
+ <span class="kt">bool</span> <span class="n">boolean</span><span class="p">;</span>
+ <span class="n">functionTakingInt</span><span class="p">(</span><span class="n">boolean</span><span class="p">);</span>
+ <span class="c1">// ^ propose replacement: functionTakingInt(static_cast<int>(boolean));</span>
+
+ <span class="n">functionTakingInt</span><span class="p">(</span><span class="kc">true</span><span class="p">);</span>
+ <span class="c1">// ^ propose replacement: functionTakingInt(1);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>In general, the following cast types are checked:</p>
+<ul class="simple">
+<li>integer expression/literal to boolean,</li>
+<li>floating expression/literal to boolean,</li>
+<li>pointer/pointer to member/<tt class="docutils literal"><span class="pre">nullptr</span></tt>/<tt class="docutils literal"><span class="pre">NULL</span></tt> to boolean,</li>
+<li>boolean expression/literal to integer,</li>
+<li>boolean expression/literal to floating.</li>
+</ul>
+<p>The rules for generating fix-it hints are:</p>
+<ul class="simple">
+<li>in case of casts from other built-in type to bool, an explicit comparison
+is proposed to make it clear what exaclty is being compared:<ul>
+<li><tt class="docutils literal"><span class="pre">bool</span> <span class="pre">boolean</span> <span class="pre">=</span> <span class="pre">floating;</span></tt> is changed to
+<tt class="docutils literal"><span class="pre">bool</span> <span class="pre">boolean</span> <span class="pre">=</span> <span class="pre">floating</span> <span class="pre">==</span> <span class="pre">0.0f;</span></tt>,</li>
+<li>for other types, appropriate literals are used (<tt class="docutils literal"><span class="pre">0</span></tt>, <tt class="docutils literal"><span class="pre">0u</span></tt>, <tt class="docutils literal"><span class="pre">0.0f</span></tt>,
+<tt class="docutils literal"><span class="pre">0.0</span></tt>, <tt class="docutils literal"><span class="pre">nullptr</span></tt>),</li>
+</ul>
+</li>
+<li>in case of negated expressions cast to bool, the proposed replacement with
+comparison is simplified:<ul>
+<li><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(!pointer)</span></tt> is changed to <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(pointer</span> <span class="pre">==</span> <span class="pre">nullptr)</span></tt>,</li>
+</ul>
+</li>
+<li>in case of casts from bool to other built-in types, an explicit <tt class="docutils literal"><span class="pre">static_cast</span></tt>
+is proposed to make it clear that a cast is taking place:<ul>
+<li><tt class="docutils literal"><span class="pre">int</span> <span class="pre">integer</span> <span class="pre">=</span> <span class="pre">boolean;</span></tt> is changed to
+<tt class="docutils literal"><span class="pre">int</span> <span class="pre">integer</span> <span class="pre">=</span> <span class="pre">static_cast<int>(boolean);</span></tt>,</li>
+</ul>
+</li>
+<li>if the cast is performed on type literals, an equivalent literal is proposed,
+according to what type is actually expected, for example:<ul>
+<li><tt class="docutils literal"><span class="pre">functionTakingBool(0);</span></tt> is changed to <tt class="docutils literal"><span class="pre">functionTakingBool(false);</span></tt>,</li>
+<li><tt class="docutils literal"><span class="pre">functionTakingInt(true);</span></tt> is changed to <tt class="docutils literal"><span class="pre">functionTakingInt(1);</span></tt>,</li>
+<li>for other types, appropriate literals are used (<tt class="docutils literal"><span class="pre">false</span></tt>, <tt class="docutils literal"><span class="pre">true</span></tt>, <tt class="docutils literal"><span class="pre">0</span></tt>,
+<tt class="docutils literal"><span class="pre">1</span></tt>, <tt class="docutils literal"><span class="pre">0u</span></tt>, <tt class="docutils literal"><span class="pre">1u</span></tt>, <tt class="docutils literal"><span class="pre">0.0f</span></tt>, <tt class="docutils literal"><span class="pre">1.0f</span></tt>, <tt class="docutils literal"><span class="pre">0.0</span></tt>, <tt class="docutils literal"><span class="pre">1.0f</span></tt>).</li>
+</ul>
+</li>
+</ul>
+<p>Some additional accommodations are made for pre-C++11 dialects:</p>
+<ul class="simple">
+<li><tt class="docutils literal"><span class="pre">false</span></tt> literal cast to pointer is detected,</li>
+<li>instead of <tt class="docutils literal"><span class="pre">nullptr</span></tt> literal, <tt class="docutils literal"><span class="pre">0</span></tt> is proposed as replacement.</li>
+</ul>
+<p>Occurrences of implicit casts inside macros and template instantiations are
+deliberately ignored, as it is not clear how to deal with such cases.</p>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">AllowConditionalIntegerCasts</tt></dt>
+<dd><p>When non-zero, the check will allow conditional integer casts. Default is
+<cite>0</cite>.</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">AllowConditionalPointerCasts</tt></dt>
+<dd><p>When non-zero, the check will allow conditional pointer casts. Default is <cite>0</cite>.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-identifier-naming.html">readability-identifier-naming</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-inconsistent-declaration-parameter-name.html">readability-inconsistent-declaration-parameter-name</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-inconsistent-declaration-parameter-name.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-inconsistent-declaration-parameter-name.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-inconsistent-declaration-parameter-name.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-inconsistent-declaration-parameter-name.html Thu May 10 06:54:16 2018
@@ -0,0 +1,109 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-inconsistent-declaration-parameter-name — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-misleading-indentation" href="readability-misleading-indentation.html" />
+ <link rel="prev" title="readability-implicit-bool-cast" href="readability-implicit-bool-cast.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-inconsistent-declaration-parameter-name</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-implicit-bool-cast.html">readability-implicit-bool-cast</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-misleading-indentation.html">readability-misleading-indentation</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-inconsistent-declaration-parameter-name">
+<h1>readability-inconsistent-declaration-parameter-name<a class="headerlink" href="#readability-inconsistent-declaration-parameter-name" title="Permalink to this headline">¶</a></h1>
+<p>Find function declarations which differ in parameter names.</p>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// in foo.hpp:</span>
+<span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">,</span> <span class="kt">int</span> <span class="n">b</span><span class="p">,</span> <span class="kt">int</span> <span class="n">c</span><span class="p">);</span>
+
+<span class="c1">// in foo.cpp:</span>
+<span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">d</span><span class="p">,</span> <span class="kt">int</span> <span class="n">e</span><span class="p">,</span> <span class="kt">int</span> <span class="n">f</span><span class="p">);</span> <span class="c1">// warning</span>
+</pre></div>
+</div>
+<p>This check should help to enforce consistency in large projects, where it often
+happens that a definition of function is refactored, changing the parameter
+names, but its declaration in header file is not updated. With this check, we
+can easily find and correct such inconsistencies, keeping declaration and
+definition always in sync.</p>
+<p>Unnamed parameters are allowed and are not taken into account when comparing
+function declarations, for example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">);</span>
+<span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span><span class="p">);</span> <span class="c1">// no warning</span>
+</pre></div>
+</div>
+<p>To help with refactoring, in some cases fix-it hints are generated to align
+parameter names to a single naming convention. This works with the assumption
+that the function definition is the most up-to-date version, as it directly
+references parameter names in its body. Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">);</span> <span class="c1">// warning and fix-it hint (replace "a" to "b")</span>
+<span class="kt">int</span> <span class="n">foo</span><span class="p">(</span><span class="kt">int</span> <span class="n">b</span><span class="p">)</span> <span class="p">{</span> <span class="k">return</span> <span class="n">b</span> <span class="o">+</span> <span class="mi">2</span><span class="p">;</span> <span class="p">}</span> <span class="c1">// definition with use of "b"</span>
+</pre></div>
+</div>
+<p>In the case of multiple redeclarations or function template specializations,
+a warning is issued for every redeclaration or specialization inconsistent with
+the definition or the first declaration seen in a translation unit.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-implicit-bool-cast.html">readability-implicit-bool-cast</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-misleading-indentation.html">readability-misleading-indentation</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misleading-indentation.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misleading-indentation.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misleading-indentation.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misleading-indentation.html Thu May 10 06:54:16 2018
@@ -0,0 +1,106 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-misleading-indentation — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-misplaced-array-index" href="readability-misplaced-array-index.html" />
+ <link rel="prev" title="readability-inconsistent-declaration-parameter-name" href="readability-inconsistent-declaration-parameter-name.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-misleading-indentation</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-inconsistent-declaration-parameter-name.html">readability-inconsistent-declaration-parameter-name</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-misplaced-array-index.html">readability-misplaced-array-index</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-misleading-indentation">
+<h1>readability-misleading-indentation<a class="headerlink" href="#readability-misleading-indentation" title="Permalink to this headline">¶</a></h1>
+<p>Correct indentation helps to understand code. Mismatch of the syntactical
+structure and the indentation of the code may hide serious problems.
+Missing braces can also make it significantly harder to read the code,
+therefore it is important to use braces.</p>
+<p>The way to avoid dangling else is to always check that an <tt class="docutils literal"><span class="pre">else</span></tt> belongs
+to the <tt class="docutils literal"><span class="pre">if</span></tt> that begins in the same column.</p>
+<p>You can omit braces when your inner part of e.g. an <tt class="docutils literal"><span class="pre">if</span></tt> statement has only
+one statement in it. Although in that case you should begin the next statement
+in the same column with the <tt class="docutils literal"><span class="pre">if</span></tt>.</p>
+<p>Examples:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// Dangling else:</span>
+<span class="k">if</span> <span class="p">(</span><span class="n">cond1</span><span class="p">)</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">cond2</span><span class="p">)</span>
+ <span class="n">foo1</span><span class="p">();</span>
+<span class="k">else</span>
+ <span class="n">foo2</span><span class="p">();</span> <span class="c1">// Wrong indentation: else belongs to if(cond2) statement.</span>
+
+<span class="c1">// Missing braces:</span>
+<span class="k">if</span> <span class="p">(</span><span class="n">cond1</span><span class="p">)</span>
+ <span class="n">foo1</span><span class="p">();</span>
+ <span class="n">foo2</span><span class="p">();</span> <span class="c1">// Not guarded by if(cond1).</span>
+</pre></div>
+</div>
+<div class="section" id="limitations">
+<h2>Limitations<a class="headerlink" href="#limitations" title="Permalink to this headline">¶</a></h2>
+<p>Note that this check only works as expected when the tabs or spaces are used
+consistently and not mixed.</p>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-inconsistent-declaration-parameter-name.html">readability-inconsistent-declaration-parameter-name</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-misplaced-array-index.html">readability-misplaced-array-index</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misplaced-array-index.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misplaced-array-index.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misplaced-array-index.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-misplaced-array-index.html Thu May 10 06:54:16 2018
@@ -0,0 +1,99 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-misplaced-array-index — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-named-parameter" href="readability-named-parameter.html" />
+ <link rel="prev" title="readability-misleading-indentation" href="readability-misleading-indentation.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-misplaced-array-index</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-misleading-indentation.html">readability-misleading-indentation</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-named-parameter.html">readability-named-parameter</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-misplaced-array-index">
+<h1>readability-misplaced-array-index<a class="headerlink" href="#readability-misplaced-array-index" title="Permalink to this headline">¶</a></h1>
+<p>This check warns for unusual array index syntax.</p>
+<p>The following code has unusual array index syntax:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span> <span class="o">*</span><span class="n">X</span><span class="p">,</span> <span class="kt">int</span> <span class="n">Y</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">Y</span><span class="p">[</span><span class="n">X</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>becomes</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span> <span class="o">*</span><span class="n">X</span><span class="p">,</span> <span class="kt">int</span> <span class="n">Y</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">X</span><span class="p">[</span><span class="n">Y</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<dl class="docutils">
+<dt>The check warns about such unusual syntax for readability reasons:</dt>
+<dd><ul class="first last simple">
+<li>There are programmers that are not familiar with this unusual syntax.</li>
+<li>It is possible that variables are mixed up.</li>
+</ul>
+</dd>
+</dl>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-misleading-indentation.html">readability-misleading-indentation</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-named-parameter.html">readability-named-parameter</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-named-parameter.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-named-parameter.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-named-parameter.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-named-parameter.html Thu May 10 06:54:16 2018
@@ -0,0 +1,85 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-named-parameter — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-non-const-parameter" href="readability-non-const-parameter.html" />
+ <link rel="prev" title="readability-misplaced-array-index" href="readability-misplaced-array-index.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-named-parameter</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-misplaced-array-index.html">readability-misplaced-array-index</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-non-const-parameter.html">readability-non-const-parameter</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-named-parameter">
+<h1>readability-named-parameter<a class="headerlink" href="#readability-named-parameter" title="Permalink to this headline">¶</a></h1>
+<p>Find functions with unnamed arguments.</p>
+<p>The check implements the following rule originating in the Google C++ Style
+Guide:</p>
+<p><a class="reference external" href="https://google.github.io/styleguide/cppguide.html#Function_Declarations_and_Definitions">https://google.github.io/styleguide/cppguide.html#Function_Declarations_and_Definitions</a></p>
+<p>All parameters should be named, with identical names in the declaration and
+implementation.</p>
+<p>Corresponding cpplint.py check name: <cite>readability/function</cite>.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-misplaced-array-index.html">readability-misplaced-array-index</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-non-const-parameter.html">readability-non-const-parameter</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-non-const-parameter.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-non-const-parameter.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-non-const-parameter.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-non-const-parameter.html Thu May 10 06:54:16 2018
@@ -0,0 +1,115 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-non-const-parameter — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-control-flow" href="readability-redundant-control-flow.html" />
+ <link rel="prev" title="readability-named-parameter" href="readability-named-parameter.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-non-const-parameter</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-named-parameter.html">readability-named-parameter</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-control-flow.html">readability-redundant-control-flow</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-non-const-parameter">
+<h1>readability-non-const-parameter<a class="headerlink" href="#readability-non-const-parameter" title="Permalink to this headline">¶</a></h1>
+<p>The check finds function parameters of a pointer type that could be changed to
+point to a constant type instead.</p>
+<p>When <tt class="docutils literal"><span class="pre">const</span></tt> is used properly, many mistakes can be avoided. Advantages when
+using <tt class="docutils literal"><span class="pre">const</span></tt> properly:</p>
+<ul class="simple">
+<li>prevent unintentional modification of data;</li>
+<li>get additional warnings such as using uninitialized data;</li>
+<li>make it easier for developers to see possible side effects.</li>
+</ul>
+<p>This check is not strict about constness, it only warns when the constness will
+make the function interface safer.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// warning here; the declaration "const char *p" would make the function</span>
+<span class="c1">// interface safer.</span>
+<span class="kt">char</span> <span class="n">f1</span><span class="p">(</span><span class="kt">char</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">return</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// no warning; the declaration could be more const "const int * const p" but</span>
+<span class="c1">// that does not make the function interface safer.</span>
+<span class="kt">int</span> <span class="n">f2</span><span class="p">(</span><span class="k">const</span> <span class="kt">int</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">return</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// no warning; making x const does not make the function interface safer</span>
+<span class="kt">int</span> <span class="n">f3</span><span class="p">(</span><span class="kt">int</span> <span class="n">x</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">return</span> <span class="n">x</span><span class="p">;</span>
+<span class="p">}</span>
+
+<span class="c1">// no warning; Technically, *p can be const ("const struct S *p"). But making</span>
+<span class="c1">// *p const could be misleading. People might think that it's safe to pass</span>
+<span class="c1">// const data to this function.</span>
+<span class="k">struct</span> <span class="n">S</span> <span class="p">{</span> <span class="kt">int</span> <span class="o">*</span><span class="n">a</span><span class="p">;</span> <span class="kt">int</span> <span class="o">*</span><span class="n">b</span><span class="p">;</span> <span class="p">};</span>
+<span class="kt">int</span> <span class="n">f3</span><span class="p">(</span><span class="k">struct</span> <span class="n">S</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span> <span class="p">{</span>
+ <span class="o">*</span><span class="p">(</span><span class="n">p</span><span class="o">-></span><span class="n">a</span><span class="p">)</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-named-parameter.html">readability-named-parameter</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-control-flow.html">readability-redundant-control-flow</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-control-flow.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-control-flow.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-control-flow.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-control-flow.html Thu May 10 06:54:16 2018
@@ -0,0 +1,113 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-control-flow — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-declaration" href="readability-redundant-declaration.html" />
+ <link rel="prev" title="readability-non-const-parameter" href="readability-non-const-parameter.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-control-flow</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-non-const-parameter.html">readability-non-const-parameter</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-declaration.html">readability-redundant-declaration</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-control-flow">
+<h1>readability-redundant-control-flow<a class="headerlink" href="#readability-redundant-control-flow" title="Permalink to this headline">¶</a></h1>
+<p>This check looks for procedures (functions returning no value) with <tt class="docutils literal"><span class="pre">return</span></tt>
+statements at the end of the function. Such <tt class="docutils literal"><span class="pre">return</span></tt> statements are redundant.</p>
+<p>Loop statements (<tt class="docutils literal"><span class="pre">for</span></tt>, <tt class="docutils literal"><span class="pre">while</span></tt>, <tt class="docutils literal"><span class="pre">do</span> <span class="pre">while</span></tt>) are checked for redundant
+<tt class="docutils literal"><span class="pre">continue</span></tt> statements at the end of the loop body.</p>
+<p>Examples:</p>
+<p>The following function <cite>f</cite> contains a redundant <tt class="docutils literal"><span class="pre">return</span></tt> statement:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">extern</span> <span class="kt">void</span> <span class="n">g</span><span class="p">();</span>
+<span class="kt">void</span> <span class="n">f</span><span class="p">()</span> <span class="p">{</span>
+ <span class="n">g</span><span class="p">();</span>
+ <span class="k">return</span><span class="p">;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>becomes</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">extern</span> <span class="kt">void</span> <span class="n">g</span><span class="p">();</span>
+<span class="kt">void</span> <span class="n">f</span><span class="p">()</span> <span class="p">{</span>
+ <span class="n">g</span><span class="p">();</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The following function <cite>k</cite> contains a redundant <tt class="docutils literal"><span class="pre">continue</span></tt> statement:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">k</span><span class="p">()</span> <span class="p">{</span>
+ <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">continue</span><span class="p">;</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>becomes</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">void</span> <span class="n">k</span><span class="p">()</span> <span class="p">{</span>
+ <span class="k">for</span> <span class="p">(</span><span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> <span class="n">i</span> <span class="o"><</span> <span class="mi">10</span><span class="p">;</span> <span class="o">++</span><span class="n">i</span><span class="p">)</span> <span class="p">{</span>
+ <span class="p">}</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-non-const-parameter.html">readability-non-const-parameter</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-declaration.html">readability-redundant-declaration</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-declaration.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-declaration.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-declaration.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-declaration.html Thu May 10 06:54:16 2018
@@ -0,0 +1,98 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-declaration — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-function-ptr-dereference" href="readability-redundant-function-ptr-dereference.html" />
+ <link rel="prev" title="readability-redundant-control-flow" href="readability-redundant-control-flow.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-declaration</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-control-flow.html">readability-redundant-control-flow</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-function-ptr-dereference.html">readability-redundant-function-ptr-dereference</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-declaration">
+<h1>readability-redundant-declaration<a class="headerlink" href="#readability-redundant-declaration" title="Permalink to this headline">¶</a></h1>
+<p>Finds redundant variable and function declarations.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">extern</span> <span class="kt">int</span> <span class="n">X</span><span class="p">;</span>
+<span class="k">extern</span> <span class="kt">int</span> <span class="n">X</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>becomes</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">extern</span> <span class="kt">int</span> <span class="n">X</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>Such redundant declarations can be removed without changing program behaviour.
+They can for instance be unintentional left overs from previous refactorings
+when code has been moved around. Having redundant declarations could in worst
+case mean that there are typos in the code that cause bugs.</p>
+<p>Normally the code can be automatically fixed, <strong class="program">clang-tidy</strong> can remove
+the second declaration. However there are 2 cases when you need to fix the code
+manually:</p>
+<ul class="simple">
+<li>When the declarations are in different header files;</li>
+<li>When multiple variables are declared together.</li>
+</ul>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-control-flow.html">readability-redundant-control-flow</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-function-ptr-dereference.html">readability-redundant-function-ptr-dereference</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-function-ptr-dereference.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-function-ptr-dereference.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-function-ptr-dereference.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-function-ptr-dereference.html Thu May 10 06:54:16 2018
@@ -0,0 +1,93 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-function-ptr-dereference — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-member-init" href="readability-redundant-member-init.html" />
+ <link rel="prev" title="readability-redundant-declaration" href="readability-redundant-declaration.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-function-ptr-dereference</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-declaration.html">readability-redundant-declaration</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-member-init.html">readability-redundant-member-init</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-function-ptr-dereference">
+<h1>readability-redundant-function-ptr-dereference<a class="headerlink" href="#readability-redundant-function-ptr-dereference" title="Permalink to this headline">¶</a></h1>
+<p>Finds redundant dereferences of a function pointer.</p>
+<p>Before:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">int</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">);</span>
+<span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">p</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">)</span> <span class="o">=</span> <span class="o">&</span><span class="n">f</span><span class="p">;</span>
+
+<span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="o">**</span><span class="n">p</span><span class="p">)(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">50</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>After:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="kt">int</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span><span class="p">,</span><span class="kt">int</span><span class="p">);</span>
+<span class="kt">int</span> <span class="p">(</span><span class="o">*</span><span class="n">p</span><span class="p">)(</span><span class="kt">int</span><span class="p">,</span> <span class="kt">int</span><span class="p">)</span> <span class="o">=</span> <span class="o">&</span><span class="n">f</span><span class="p">;</span>
+
+<span class="kt">int</span> <span class="n">i</span> <span class="o">=</span> <span class="p">(</span><span class="o">*</span><span class="n">p</span><span class="p">)(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">50</span><span class="p">);</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-declaration.html">readability-redundant-declaration</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-member-init.html">readability-redundant-member-init</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-member-init.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-member-init.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-member-init.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-member-init.html Thu May 10 06:54:16 2018
@@ -0,0 +1,91 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-member-init — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-smartptr-get" href="readability-redundant-smartptr-get.html" />
+ <link rel="prev" title="readability-redundant-function-ptr-dereference" href="readability-redundant-function-ptr-dereference.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-member-init</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-function-ptr-dereference.html">readability-redundant-function-ptr-dereference</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-smartptr-get.html">readability-redundant-smartptr-get</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-member-init">
+<h1>readability-redundant-member-init<a class="headerlink" href="#readability-redundant-member-init" title="Permalink to this headline">¶</a></h1>
+<p>Finds member initializations that are unnecessary because the same default
+constructor would be called if they were not present.</p>
+<p>Example:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// Explicitly initializing the member s is unnecessary.</span>
+<span class="k">class</span> <span class="nc">Foo</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+ <span class="n">Foo</span><span class="p">()</span> <span class="o">:</span> <span class="n">s</span><span class="p">()</span> <span class="p">{}</span>
+
+<span class="k">private</span><span class="o">:</span>
+ <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">s</span><span class="p">;</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-function-ptr-dereference.html">readability-redundant-function-ptr-dereference</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-smartptr-get.html">readability-redundant-smartptr-get</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-smartptr-get.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-smartptr-get.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-smartptr-get.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-smartptr-get.html Thu May 10 06:54:16 2018
@@ -0,0 +1,87 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-smartptr-get — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-string-cstr" href="readability-redundant-string-cstr.html" />
+ <link rel="prev" title="readability-redundant-member-init" href="readability-redundant-member-init.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-smartptr-get</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-member-init.html">readability-redundant-member-init</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-string-cstr.html">readability-redundant-string-cstr</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-smartptr-get">
+<h1>readability-redundant-smartptr-get<a class="headerlink" href="#readability-redundant-smartptr-get" title="Permalink to this headline">¶</a></h1>
+<p><cite>google-readability-redundant-smartptr-get</cite> redirects here as an alias for this
+check.</p>
+<p>Find and remove redundant calls to smart pointer’s <tt class="docutils literal"><span class="pre">.get()</span></tt> method.</p>
+<p>Examples:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">ptr</span><span class="p">.</span><span class="n">get</span><span class="p">()</span><span class="o">-></span><span class="n">Foo</span><span class="p">()</span> <span class="o">==></span> <span class="n">ptr</span><span class="o">-></span><span class="n">Foo</span><span class="p">()</span>
+<span class="o">*</span><span class="n">ptr</span><span class="p">.</span><span class="n">get</span><span class="p">()</span> <span class="o">==></span> <span class="o">*</span><span class="n">ptr</span>
+<span class="o">*</span><span class="n">ptr</span><span class="o">-></span><span class="n">get</span><span class="p">()</span> <span class="o">==></span> <span class="o">**</span><span class="n">ptr</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-member-init.html">readability-redundant-member-init</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-string-cstr.html">readability-redundant-string-cstr</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-cstr.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-cstr.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-cstr.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-cstr.html Thu May 10 06:54:16 2018
@@ -0,0 +1,79 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-string-cstr — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-redundant-string-init" href="readability-redundant-string-init.html" />
+ <link rel="prev" title="readability-redundant-smartptr-get" href="readability-redundant-smartptr-get.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-string-cstr</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-smartptr-get.html">readability-redundant-smartptr-get</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-string-init.html">readability-redundant-string-init</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-string-cstr">
+<h1>readability-redundant-string-cstr<a class="headerlink" href="#readability-redundant-string-cstr" title="Permalink to this headline">¶</a></h1>
+<p>Finds unnecessary calls to <tt class="docutils literal"><span class="pre">std::string::c_str()</span></tt> and <tt class="docutils literal"><span class="pre">std::string::data()</span></tt>.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-smartptr-get.html">readability-redundant-smartptr-get</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-redundant-string-init.html">readability-redundant-string-init</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-init.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-init.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-init.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-redundant-string-init.html Thu May 10 06:54:16 2018
@@ -0,0 +1,90 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-redundant-string-init — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-simplify-boolean-expr" href="readability-simplify-boolean-expr.html" />
+ <link rel="prev" title="readability-redundant-string-cstr" href="readability-redundant-string-cstr.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-redundant-string-init</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-string-cstr.html">readability-redundant-string-cstr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-simplify-boolean-expr.html">readability-simplify-boolean-expr</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-redundant-string-init">
+<h1>readability-redundant-string-init<a class="headerlink" href="#readability-redundant-string-init" title="Permalink to this headline">¶</a></h1>
+<p>Finds unnecessary string initializations.</p>
+<p>Examples:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// Initializing string with empty string literal is unnecessary.</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span> <span class="o">=</span> <span class="s">""</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">b</span><span class="p">(</span><span class="s">""</span><span class="p">);</span>
+
+<span class="c1">// becomes</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">a</span><span class="p">;</span>
+<span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">b</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-string-cstr.html">readability-redundant-string-cstr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-simplify-boolean-expr.html">readability-simplify-boolean-expr</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-simplify-boolean-expr.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-simplify-boolean-expr.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-simplify-boolean-expr.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-simplify-boolean-expr.html Thu May 10 06:54:16 2018
@@ -0,0 +1,205 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-simplify-boolean-expr — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-static-definition-in-anonymous-namespace" href="readability-static-definition-in-anonymous-namespace.html" />
+ <link rel="prev" title="readability-redundant-string-init" href="readability-redundant-string-init.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-simplify-boolean-expr</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-redundant-string-init.html">readability-redundant-string-init</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-static-definition-in-anonymous-namespace.html">readability-static-definition-in-anonymous-namespace</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-simplify-boolean-expr">
+<h1>readability-simplify-boolean-expr<a class="headerlink" href="#readability-simplify-boolean-expr" title="Permalink to this headline">¶</a></h1>
+<p>Looks for boolean expressions involving boolean constants and simplifies
+them to use the appropriate boolean expression directly.</p>
+<p>Examples:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="73%" />
+<col width="27%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Initial expression</td>
+<td>Result</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b</span> <span class="pre">==</span> <span class="pre">true)</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b)</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b</span> <span class="pre">==</span> <span class="pre">false)</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(!b)</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b</span> <span class="pre">&&</span> <span class="pre">true)</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b)</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b</span> <span class="pre">&&</span> <span class="pre">false)</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(false)</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b</span> <span class="pre">||</span> <span class="pre">true)</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(true)</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b</span> <span class="pre">||</span> <span class="pre">false)</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(b)</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">e</span> <span class="pre">?</span> <span class="pre">true</span> <span class="pre">:</span> <span class="pre">false</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">e</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">e</span> <span class="pre">?</span> <span class="pre">false</span> <span class="pre">:</span> <span class="pre">true</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">!e</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(true)</span> <span class="pre">t();</span> <span class="pre">else</span> <span class="pre">f();</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">t();</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(false)</span> <span class="pre">t();</span> <span class="pre">else</span> <span class="pre">f();</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">f();</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(e)</span> <span class="pre">return</span> <span class="pre">true;</span> <span class="pre">else</span> <span class="pre">return</span> <span class="pre">false;</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">return</span> <span class="pre">e;</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(e)</span> <span class="pre">return</span> <span class="pre">false;</span> <span class="pre">else</span> <span class="pre">return</span> <span class="pre">true;</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">return</span> <span class="pre">!e;</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(e)</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">true;</span> <span class="pre">else</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">false;</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">b</span> <span class="pre">=</span> <span class="pre">e;</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(e)</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">false;</span> <span class="pre">else</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">true;</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">b</span> <span class="pre">=</span> <span class="pre">!e;</span></tt></td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(e)</span> <span class="pre">return</span> <span class="pre">true;</span> <span class="pre">return</span> <span class="pre">false;</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">return</span> <span class="pre">e;</span></tt></td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">if</span> <span class="pre">(e)</span> <span class="pre">return</span> <span class="pre">false;</span> <span class="pre">return</span> <span class="pre">true;</span></tt></td>
+<td><tt class="docutils literal"><span class="pre">return</span> <span class="pre">!e;</span></tt></td>
+</tr>
+</tbody>
+</table>
+<dl class="docutils">
+<dt>The resulting expression <tt class="docutils literal"><span class="pre">e</span></tt> is modified as follows:</dt>
+<dd><ol class="first last arabic simple">
+<li>Unnecessary parentheses around the expression are removed.</li>
+<li>Negated applications of <tt class="docutils literal"><span class="pre">!</span></tt> are eliminated.</li>
+<li>Negated applications of comparison operators are changed to use the
+opposite condition.</li>
+<li>Implicit conversions of pointers, including pointers to members, to
+<tt class="docutils literal"><span class="pre">bool</span></tt> are replaced with explicit comparisons to <tt class="docutils literal"><span class="pre">nullptr</span></tt> in C++11
+or <tt class="docutils literal"><span class="pre">NULL</span></tt> in C++98/03.</li>
+<li>Implicit casts to <tt class="docutils literal"><span class="pre">bool</span></tt> are replaced with explicit casts to <tt class="docutils literal"><span class="pre">bool</span></tt>.</li>
+<li>Object expressions with <tt class="docutils literal"><span class="pre">explicit</span> <span class="pre">operator</span> <span class="pre">bool</span></tt> conversion operators
+are replaced with explicit casts to <tt class="docutils literal"><span class="pre">bool</span></tt>.</li>
+<li>Implicit conversions of integral types to <tt class="docutils literal"><span class="pre">bool</span></tt> are replaced with
+explicit comparisons to <tt class="docutils literal"><span class="pre">0</span></tt>.</li>
+</ol>
+</dd>
+<dt>Examples:</dt>
+<dd><ol class="first last arabic">
+<li><p class="first">The ternary assignment <tt class="docutils literal"><span class="pre">bool</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">(i</span> <span class="pre"><</span> <span class="pre">0)</span> <span class="pre">?</span> <span class="pre">true</span> <span class="pre">:</span> <span class="pre">false;</span></tt> has redundant
+parentheses and becomes <tt class="docutils literal"><span class="pre">bool</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">i</span> <span class="pre"><</span> <span class="pre">0;</span></tt>.</p>
+</li>
+<li><p class="first">The conditional return <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(!b)</span> <span class="pre">return</span> <span class="pre">false;</span> <span class="pre">return</span> <span class="pre">true;</span></tt> has an
+implied double negation and becomes <tt class="docutils literal"><span class="pre">return</span> <span class="pre">b;</span></tt>.</p>
+</li>
+<li><p class="first">The conditional return <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(i</span> <span class="pre"><</span> <span class="pre">0)</span> <span class="pre">return</span> <span class="pre">false;</span> <span class="pre">return</span> <span class="pre">true;</span></tt> becomes
+<tt class="docutils literal"><span class="pre">return</span> <span class="pre">i</span> <span class="pre">>=</span> <span class="pre">0;</span></tt>.</p>
+<p>The conditional return <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(i</span> <span class="pre">!=</span> <span class="pre">0)</span> <span class="pre">return</span> <span class="pre">false;</span> <span class="pre">return</span> <span class="pre">true;</span></tt> becomes
+<tt class="docutils literal"><span class="pre">return</span> <span class="pre">i</span> <span class="pre">==</span> <span class="pre">0;</span></tt>.</p>
+</li>
+<li><p class="first">The conditional return <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(p)</span> <span class="pre">return</span> <span class="pre">true;</span> <span class="pre">return</span> <span class="pre">false;</span></tt> has an
+implicit conversion of a pointer to <tt class="docutils literal"><span class="pre">bool</span></tt> and becomes
+<tt class="docutils literal"><span class="pre">return</span> <span class="pre">p</span> <span class="pre">!=</span> <span class="pre">nullptr;</span></tt>.</p>
+<p>The ternary assignment <tt class="docutils literal"><span class="pre">bool</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">(i</span> <span class="pre">&</span> <span class="pre">1)</span> <span class="pre">?</span> <span class="pre">true</span> <span class="pre">:</span> <span class="pre">false;</span></tt> has an
+implicit conversion of <tt class="docutils literal"><span class="pre">i</span> <span class="pre">&</span> <span class="pre">1</span></tt> to <tt class="docutils literal"><span class="pre">bool</span></tt> and becomes
+<tt class="docutils literal"><span class="pre">bool</span> <span class="pre">b</span> <span class="pre">=</span> <span class="pre">(i</span> <span class="pre">&</span> <span class="pre">1)</span> <span class="pre">!=</span> <span class="pre">0;</span></tt>.</p>
+</li>
+<li><p class="first">The conditional return <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(i</span> <span class="pre">&</span> <span class="pre">1)</span> <span class="pre">return</span> <span class="pre">true;</span> <span class="pre">else</span> <span class="pre">return</span> <span class="pre">false;</span></tt> has
+an implicit conversion of an integer quantity <tt class="docutils literal"><span class="pre">i</span> <span class="pre">&</span> <span class="pre">1</span></tt> to <tt class="docutils literal"><span class="pre">bool</span></tt> and
+becomes <tt class="docutils literal"><span class="pre">return</span> <span class="pre">(i</span> <span class="pre">&</span> <span class="pre">1)</span> <span class="pre">!=</span> <span class="pre">0;</span></tt></p>
+</li>
+<li><p class="first">Given <tt class="docutils literal"><span class="pre">struct</span> <span class="pre">X</span> <span class="pre">{</span> <span class="pre">explicit</span> <span class="pre">operator</span> <span class="pre">bool();</span> <span class="pre">};</span></tt>, and an instance <tt class="docutils literal"><span class="pre">x</span></tt> of
+<tt class="docutils literal"><span class="pre">struct</span> <span class="pre">X</span></tt>, the conditional return <tt class="docutils literal"><span class="pre">if</span> <span class="pre">(x)</span> <span class="pre">return</span> <span class="pre">true;</span> <span class="pre">return</span> <span class="pre">false;</span></tt>
+becomes <tt class="docutils literal"><span class="pre">return</span> <span class="pre">static_cast<bool>(x);</span></tt></p>
+</li>
+</ol>
+</dd>
+</dl>
+<div class="section" id="options">
+<h2>Options<a class="headerlink" href="#options" title="Permalink to this headline">¶</a></h2>
+<dl class="option">
+<dt>
+<tt class="descname">ChainedConditionalReturn</tt></dt>
+<dd><p>If non-zero, conditional boolean return statements at the end of an
+<tt class="docutils literal"><span class="pre">if/else</span> <span class="pre">if</span></tt> chain will be transformed. Default is <cite>0</cite>.</p>
+</dd></dl>
+
+<dl class="option">
+<dt>
+<tt class="descname">ChainedConditionalAssignment</tt></dt>
+<dd><p>If non-zero, conditional boolean assignments at the end of an <tt class="docutils literal"><span class="pre">if/else</span>
+<span class="pre">if</span></tt> chain will be transformed. Default is <cite>0</cite>.</p>
+</dd></dl>
+
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-redundant-string-init.html">readability-redundant-string-init</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-static-definition-in-anonymous-namespace.html">readability-static-definition-in-anonymous-namespace</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-static-definition-in-anonymous-namespace.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-static-definition-in-anonymous-namespace.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-static-definition-in-anonymous-namespace.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-static-definition-in-anonymous-namespace.html Thu May 10 06:54:16 2018
@@ -0,0 +1,88 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-static-definition-in-anonymous-namespace — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="readability-uniqueptr-delete-release" href="readability-uniqueptr-delete-release.html" />
+ <link rel="prev" title="readability-simplify-boolean-expr" href="readability-simplify-boolean-expr.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-static-definition-in-anonymous-namespace</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-simplify-boolean-expr.html">readability-simplify-boolean-expr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-uniqueptr-delete-release.html">readability-uniqueptr-delete-release</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-static-definition-in-anonymous-namespace">
+<h1>readability-static-definition-in-anonymous-namespace<a class="headerlink" href="#readability-static-definition-in-anonymous-namespace" title="Permalink to this headline">¶</a></h1>
+<p>Finds static function and variable definitions in anonymous namespace.</p>
+<p>In this case, <tt class="docutils literal"><span class="pre">static</span></tt> is redundant, because anonymous namespace limits the
+visibility of definitions to a single translation unit.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">namespace</span> <span class="p">{</span>
+ <span class="k">static</span> <span class="kt">int</span> <span class="n">a</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// Warning.</span>
+ <span class="k">static</span> <span class="k">const</span> <span class="n">b</span> <span class="o">=</span> <span class="mi">1</span><span class="p">;</span> <span class="c1">// Warning.</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>The check will apply a fix by removing the redundant <tt class="docutils literal"><span class="pre">static</span></tt> qualifier.</p>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-simplify-boolean-expr.html">readability-simplify-boolean-expr</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="readability-uniqueptr-delete-release.html">readability-uniqueptr-delete-release</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-uniqueptr-delete-release.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-uniqueptr-delete-release.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-uniqueptr-delete-release.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/checks/readability-uniqueptr-delete-release.html Thu May 10 06:54:16 2018
@@ -0,0 +1,89 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>clang-tidy - readability-uniqueptr-delete-release — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../../_static/jquery.js"></script>
+ <script type="text/javascript" src="../../_static/underscore.js"></script>
+ <script type="text/javascript" src="../../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../../index.html" />
+ <link rel="up" title="Clang-Tidy Checks" href="list.html" />
+ <link rel="next" title="Clang-Include-Fixer" href="../../include-fixer.html" />
+ <link rel="prev" title="readability-static-definition-in-anonymous-namespace" href="readability-static-definition-in-anonymous-namespace.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>clang-tidy - readability-uniqueptr-delete-release</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="readability-static-definition-in-anonymous-namespace.html">readability-static-definition-in-anonymous-namespace</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="../../include-fixer.html">Clang-Include-Fixer</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="readability-uniqueptr-delete-release">
+<h1>readability-uniqueptr-delete-release<a class="headerlink" href="#readability-uniqueptr-delete-release" title="Permalink to this headline">¶</a></h1>
+<p>Replace <tt class="docutils literal"><span class="pre">delete</span> <span class="pre"><unique_ptr>.release()</span></tt> with <tt class="docutils literal"><span class="pre"><unique_ptr></span> <span class="pre">=</span> <span class="pre">nullptr</span></tt>.
+The latter is shorter, simpler and does not require use of raw pointer APIs.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">P</span><span class="p">;</span>
+<span class="k">delete</span> <span class="n">P</span><span class="p">.</span><span class="n">release</span><span class="p">();</span>
+
+<span class="c1">// becomes</span>
+
+<span class="n">std</span><span class="o">::</span><span class="n">unique_ptr</span><span class="o"><</span><span class="kt">int</span><span class="o">></span> <span class="n">P</span><span class="p">;</span>
+<span class="n">P</span> <span class="o">=</span> <span class="n">nullptr</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="readability-static-definition-in-anonymous-namespace.html">readability-static-definition-in-anonymous-namespace</a>
+ ::
+ <a class="uplink" href="../../index.html">Contents</a>
+ ::
+ <a href="../../include-fixer.html">Clang-Include-Fixer</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/index.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/index.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/index.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clang-tidy/index.html Thu May 10 06:54:16 2018
@@ -0,0 +1,699 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Clang-Tidy — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="../_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="../_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '../',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="../_static/jquery.js"></script>
+ <script type="text/javascript" src="../_static/underscore.js"></script>
+ <script type="text/javascript" src="../_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="../_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="../index.html" />
+ <link rel="next" title="Clang-Tidy Checks" href="checks/list.html" />
+ <link rel="prev" title="Extra Clang Tools 5.0.0 Release Notes" href="../ReleaseNotes.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="../index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Clang-Tidy</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="../ReleaseNotes.html">Extra Clang Tools 5.0.0 Release Notes</a>
+ ::
+ <a class="uplink" href="../index.html">Contents</a>
+ ::
+ <a href="checks/list.html">Clang-Tidy Checks</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="clang-tidy">
+<h1><a class="toc-backref" href="#id2">Clang-Tidy</a><a class="headerlink" href="#clang-tidy" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#clang-tidy" id="id2">Clang-Tidy</a><ul>
+<li><a class="reference internal" href="#using-clang-tidy" id="id3">Using clang-tidy</a></li>
+<li><a class="reference internal" href="#getting-involved" id="id4">Getting Involved</a><ul>
+<li><a class="reference internal" href="#choosing-the-right-place-for-your-check" id="id5">Choosing the Right Place for your Check</a></li>
+<li><a class="reference internal" href="#preparing-your-workspace" id="id6">Preparing your Workspace</a></li>
+<li><a class="reference internal" href="#the-directory-structure" id="id7">The Directory Structure</a></li>
+<li><a class="reference internal" href="#writing-a-clang-tidy-check" id="id8">Writing a clang-tidy Check</a></li>
+<li><a class="reference internal" href="#registering-your-check" id="id9">Registering your Check</a></li>
+<li><a class="reference internal" href="#configuring-checks" id="id10">Configuring Checks</a></li>
+<li><a class="reference internal" href="#testing-checks" id="id11">Testing Checks</a></li>
+<li><a class="reference internal" href="#running-clang-tidy-on-llvm" id="id12">Running clang-tidy on LLVM</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<p>See also:</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="checks/list.html">The list of clang-tidy checks</a></li>
+</ul>
+</div>
+<p><strong class="program">clang-tidy</strong> is a clang-based C++ “linter” tool. Its purpose is to
+provide an extensible framework for diagnosing and fixing typical programming
+errors, like style violations, interface misuse, or bugs that can be deduced via
+static analysis. <strong class="program">clang-tidy</strong> is modular and provides a convenient
+interface for writing new checks.</p>
+<div class="section" id="using-clang-tidy">
+<h2><a class="toc-backref" href="#id3">Using clang-tidy</a><a class="headerlink" href="#using-clang-tidy" title="Permalink to this headline">¶</a></h2>
+<p><strong class="program">clang-tidy</strong> is a <a class="reference external" href="http://clang.llvm.org/docs/LibTooling.html">LibTooling</a>-based tool, and it’s easier to work
+with if you set up a compile command database for your project (for an example
+of how to do this see <a class="reference external" href="http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html">How To Setup Tooling For LLVM</a>). You can also specify
+compilation options on the command line after <tt class="docutils literal"><span class="pre">--</span></tt>:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> clang-tidy test.cpp -- -Imy_project/include -DMY_DEFINES ...
+</pre></div>
+</div>
+<p><strong class="program">clang-tidy</strong> has its own checks and can also run Clang static analyzer
+checks. Each check has a name and the checks to run can be chosen using the
+<tt class="docutils literal"><span class="pre">-checks=</span></tt> option, which specifies a comma-separated list of positive and
+negative (prefixed with <tt class="docutils literal"><span class="pre">-</span></tt>) globs. Positive globs add subsets of checks,
+negative globs remove them. For example,</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> clang-tidy test.cpp -checks<span class="o">=</span>-*,clang-analyzer-*,-clang-analyzer-cplusplus*
+</pre></div>
+</div>
+<p>will disable all default checks (<tt class="docutils literal"><span class="pre">-*</span></tt>) and enable all <tt class="docutils literal"><span class="pre">clang-analyzer-*</span></tt>
+checks except for <tt class="docutils literal"><span class="pre">clang-analyzer-cplusplus*</span></tt> ones.</p>
+<p>The <tt class="docutils literal"><span class="pre">-list-checks</span></tt> option lists all the enabled checks. When used without
+<tt class="docutils literal"><span class="pre">-checks=</span></tt>, it shows checks enabled by default. Use <tt class="docutils literal"><span class="pre">-checks=*</span></tt> to see all
+available checks or with any other value of <tt class="docutils literal"><span class="pre">-checks=</span></tt> to see which checks are
+enabled by this value.</p>
+<p id="checks-groups-table">There are currently the following groups of checks:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="28%" />
+<col width="72%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Name prefix</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">android-</span></tt></td>
+<td>Checks related to Android.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">boost-</span></tt></td>
+<td>Checks related to Boost library.</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">bugprone-</span></tt></td>
+<td>Checks that target bugprone code constructs.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">cert-</span></tt></td>
+<td>Checks related to CERT Secure Coding Guidelines.</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">cppcoreguidelines-</span></tt></td>
+<td>Checks related to C++ Core Guidelines.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">clang-analyzer-</span></tt></td>
+<td>Clang Static Analyzer checks.</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">google-</span></tt></td>
+<td>Checks related to Google coding conventions.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">hicpp-</span></tt></td>
+<td>Checks related to High Integrity C++ Coding Standard.</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">llvm-</span></tt></td>
+<td>Checks related to the LLVM coding conventions.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">misc-</span></tt></td>
+<td>Checks that we didn’t have a better category for.</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">modernize-</span></tt></td>
+<td>Checks that advocate usage of modern (currently “modern”
+means “C++11”) language constructs.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">mpi-</span></tt></td>
+<td>Checks related to MPI (Message Passing Interface).</td>
+</tr>
+<tr class="row-even"><td><tt class="docutils literal"><span class="pre">performance-</span></tt></td>
+<td>Checks that target performance-related issues.</td>
+</tr>
+<tr class="row-odd"><td><tt class="docutils literal"><span class="pre">readability-</span></tt></td>
+<td>Checks that target readability-related issues that don’t
+relate to any particular coding style.</td>
+</tr>
+</tbody>
+</table>
+<p>Clang diagnostics are treated in a similar way as check diagnostics. Clang
+diagnostics are displayed by <strong class="program">clang-tidy</strong> and can be filtered out using
+<tt class="docutils literal"><span class="pre">-checks=</span></tt> option. However, the <tt class="docutils literal"><span class="pre">-checks=</span></tt> option does not affect
+compilation arguments, so it can not turn on Clang warnings which are not
+already turned on in build configuration. The <tt class="docutils literal"><span class="pre">-warnings-as-errors=</span></tt> option
+upgrades any warnings emitted under the <tt class="docutils literal"><span class="pre">-checks=</span></tt> flag to errors (but it
+does not enable any checks itself).</p>
+<p>Clang diagnostics have check names starting with <tt class="docutils literal"><span class="pre">clang-diagnostic-</span></tt>.
+Diagnostics which have a corresponding warning option, are named
+<tt class="docutils literal"><span class="pre">clang-diagnostic-<warning-option></span></tt>, e.g. Clang warning controlled by
+<tt class="docutils literal"><span class="pre">-Wliteral-conversion</span></tt> will be reported with check name
+<tt class="docutils literal"><span class="pre">clang-diagnostic-literal-conversion</span></tt>.</p>
+<p>The <tt class="docutils literal"><span class="pre">-fix</span></tt> flag instructs <strong class="program">clang-tidy</strong> to fix found errors if
+supported by corresponding checks.</p>
+<p>An overview of all the command-line options:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> clang-tidy -help
+<span class="go">USAGE: clang-tidy [options] <source0> [... <sourceN>]</span>
+
+<span class="go">OPTIONS:</span>
+
+<span class="go">Generic Options:</span>
+
+<span class="go"> -help - Display available options (-help-hidden for more)</span>
+<span class="go"> -help-list - Display list of available options (-help-list-hidden for more)</span>
+<span class="go"> -version - Display the version of this program</span>
+
+<span class="go">clang-tidy options:</span>
+
+<span class="go"> -analyze-temporary-dtors -</span>
+<span class="go"> Enable temporary destructor-aware analysis in</span>
+<span class="go"> clang-analyzer- checks.</span>
+<span class="go"> This option overrides the value read from a</span>
+<span class="go"> .clang-tidy file.</span>
+<span class="go"> -checks=<string> -</span>
+<span class="go"> Comma-separated list of globs with optional '-'</span>
+<span class="go"> prefix. Globs are processed in order of</span>
+<span class="go"> appearance in the list. Globs without '-'</span>
+<span class="go"> prefix add checks with matching names to the</span>
+<span class="go"> set, globs with the '-' prefix remove checks</span>
+<span class="go"> with matching names from the set of enabled</span>
+<span class="go"> checks. This option's value is appended to the</span>
+<span class="go"> value of the 'Checks' option in .clang-tidy</span>
+<span class="go"> file, if any.</span>
+<span class="go"> -config=<string> -</span>
+<span class="go"> Specifies a configuration in YAML/JSON format:</span>
+<span class="go"> -config="{Checks: '*',</span>
+<span class="go"> CheckOptions: [{key: x,</span>
+<span class="go"> value: y}]}"</span>
+<span class="go"> When the value is empty, clang-tidy will</span>
+<span class="go"> attempt to find a file named .clang-tidy for</span>
+<span class="go"> each source file in its parent directories.</span>
+<span class="go"> -dump-config -</span>
+<span class="go"> Dumps configuration in the YAML format to</span>
+<span class="go"> stdout. This option can be used along with a</span>
+<span class="go"> file name (and '--' if the file is outside of a</span>
+<span class="go"> project with configured compilation database).</span>
+<span class="go"> The configuration used for this file will be</span>
+<span class="go"> printed.</span>
+<span class="go"> Use along with -checks=* to include</span>
+<span class="go"> configuration of all checks.</span>
+<span class="go"> -enable-check-profile -</span>
+<span class="go"> Enable per-check timing profiles, and print a</span>
+<span class="go"> report to stderr.</span>
+<span class="go"> -explain-config -</span>
+<span class="go"> For each enabled check explains, where it is</span>
+<span class="go"> enabled, i.e. in clang-tidy binary, command</span>
+<span class="go"> line or a specific configuration file.</span>
+<span class="go"> -export-fixes=<filename> -</span>
+<span class="go"> YAML file to store suggested fixes in. The</span>
+<span class="go"> stored fixes can be applied to the input source</span>
+<span class="go"> code with clang-apply-replacements.</span>
+<span class="go"> -extra-arg=<string> - Additional argument to append to the compiler command line</span>
+<span class="go"> -extra-arg-before=<string> - Additional argument to prepend to the compiler command line</span>
+<span class="go"> -fix -</span>
+<span class="go"> Apply suggested fixes. Without -fix-errors</span>
+<span class="go"> clang-tidy will bail out if any compilation</span>
+<span class="go"> errors were found.</span>
+<span class="go"> -fix-errors -</span>
+<span class="go"> Apply suggested fixes even if compilation</span>
+<span class="go"> errors were found. If compiler errors have</span>
+<span class="go"> attached fix-its, clang-tidy will apply them as</span>
+<span class="go"> well.</span>
+<span class="go"> -format-style=<string> -</span>
+<span class="go"> Style for formatting code around applied fixes:</span>
+<span class="go"> - 'none' (default) turns off formatting</span>
+<span class="go"> - 'file' (literally 'file', not a placeholder)</span>
+<span class="go"> uses .clang-format file in the closest parent</span>
+<span class="go"> directory</span>
+<span class="go"> - '{ <json> }' specifies options inline, e.g.</span>
+<span class="go"> -format-style='{BasedOnStyle: llvm, IndentWidth: 8}'</span>
+<span class="go"> - 'llvm', 'google', 'webkit', 'mozilla'</span>
+<span class="go"> See clang-format documentation for the up-to-date</span>
+<span class="go"> information about formatting styles and options.</span>
+<span class="go"> This option overrides the 'FormatStyle` option in</span>
+<span class="go"> .clang-tidy file, if any.</span>
+<span class="go"> -header-filter=<string> -</span>
+<span class="go"> Regular expression matching the names of the</span>
+<span class="go"> headers to output diagnostics from. Diagnostics</span>
+<span class="go"> from the main file of each translation unit are</span>
+<span class="go"> always displayed.</span>
+<span class="go"> Can be used together with -line-filter.</span>
+<span class="go"> This option overrides the 'HeaderFilter' option</span>
+<span class="go"> in .clang-tidy file, if any.</span>
+<span class="go"> -line-filter=<string> -</span>
+<span class="go"> List of files with line ranges to filter the</span>
+<span class="go"> warnings. Can be used together with</span>
+<span class="go"> -header-filter. The format of the list is a</span>
+<span class="go"> JSON array of objects:</span>
+<span class="go"> [</span>
+<span class="go"> {"name":"file1.cpp","lines":[[1,3],[5,7]]},</span>
+<span class="go"> {"name":"file2.h"}</span>
+<span class="go"> ]</span>
+<span class="go"> -list-checks -</span>
+<span class="go"> List all enabled checks and exit. Use with</span>
+<span class="go"> -checks=* to list all available checks.</span>
+<span class="go"> -p=<string> - Build path</span>
+<span class="go"> -quiet -</span>
+<span class="go"> Run clang-tidy in quiet mode. This suppresses</span>
+<span class="go"> printing statistics about ignored warnings and</span>
+<span class="go"> warnings treated as errors if the respective</span>
+<span class="go"> options are specified.</span>
+<span class="go"> -system-headers - Display the errors from system headers.</span>
+<span class="go"> -warnings-as-errors=<string> -</span>
+<span class="go"> Upgrades warnings to errors. Same format as</span>
+<span class="go"> '-checks'.</span>
+<span class="go"> This option's value is appended to the value of</span>
+<span class="go"> the 'WarningsAsErrors' option in .clang-tidy</span>
+<span class="go"> file, if any.</span>
+
+<span class="go">-p <build-path> is used to read a compile command database.</span>
+
+<span class="go"> For example, it can be a CMake build directory in which a file named</span>
+<span class="go"> compile_commands.json exists (use -DCMAKE_EXPORT_COMPILE_COMMANDS=ON</span>
+<span class="go"> CMake option to get this output). When no build path is specified,</span>
+<span class="go"> a search for compile_commands.json will be attempted through all</span>
+<span class="go"> parent paths of the first input file . See:</span>
+<span class="go"> http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html for an</span>
+<span class="go"> example of setting up Clang Tooling on a source tree.</span>
+
+<span class="go"><source0> ... specify the paths of source files. These paths are</span>
+<span class="go"> looked up in the compile command database. If the path of a file is</span>
+<span class="go"> absolute, it needs to point into CMake's source tree. If the path is</span>
+<span class="go"> relative, the current working directory needs to be in the CMake</span>
+<span class="go"> source tree and the file must be in a subdirectory of the current</span>
+<span class="go"> working directory. "./" prefixes in the relative files will be</span>
+<span class="go"> automatically removed, but the rest of a relative path must be a</span>
+<span class="go"> suffix of a path in the compile command database.</span>
+
+
+<span class="go">Configuration files:</span>
+<span class="go"> clang-tidy attempts to read configuration for each source file from a</span>
+<span class="go"> .clang-tidy file located in the closest parent directory of the source</span>
+<span class="go"> file. If any configuration options have a corresponding command-line</span>
+<span class="go"> option, command-line option takes precedence. The effective</span>
+<span class="go"> configuration can be inspected using -dump-config:</span>
+
+<span class="go"> $ clang-tidy -dump-config</span>
+<span class="go"> ---</span>
+<span class="go"> Checks: '-*,some-check'</span>
+<span class="go"> WarningsAsErrors: ''</span>
+<span class="go"> HeaderFilterRegex: ''</span>
+<span class="go"> AnalyzeTemporaryDtors: false</span>
+<span class="go"> FormatStyle: none</span>
+<span class="go"> User: user</span>
+<span class="go"> CheckOptions:</span>
+<span class="go"> - key: some-check.SomeOption</span>
+<span class="go"> value: 'some value'</span>
+<span class="go"> ...</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="getting-involved">
+<h2><a class="toc-backref" href="#id4">Getting Involved</a><a class="headerlink" href="#getting-involved" title="Permalink to this headline">¶</a></h2>
+<p><strong class="program">clang-tidy</strong> has several own checks and can run Clang static analyzer
+checks, but its power is in the ability to easily write custom checks.</p>
+<p>Checks are organized in modules, which can be linked into <strong class="program">clang-tidy</strong>
+with minimal or no code changes in <strong class="program">clang-tidy</strong>.</p>
+<p>Checks can plug into the analysis on the preprocessor level using <a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html">PPCallbacks</a>
+or on the AST level using <a class="reference external" href="http://clang.llvm.org/docs/LibASTMatchers.html">AST Matchers</a>. When an error is found, checks can
+report them in a way similar to how Clang diagnostics work. A fix-it hint can be
+attached to a diagnostic message.</p>
+<p>The interface provided by <strong class="program">clang-tidy</strong> makes it easy to write useful
+and precise checks in just a few lines of code. If you have an idea for a good
+check, the rest of this document explains how to do this.</p>
+<dl class="docutils">
+<dt>There are a few tools particularly useful when developing clang-tidy checks:</dt>
+<dd><ul class="first last simple">
+<li><tt class="docutils literal"><span class="pre">add_new_check.py</span></tt> is a script to automate the process of adding a new
+check, it will create the check, update the CMake file and create a test;</li>
+<li><tt class="docutils literal"><span class="pre">rename_check.py</span></tt> does what the script name suggests, renames an existing
+check;</li>
+<li><strong class="program">clang-query</strong> is invaluable for interactive prototyping of AST
+matchers and exploration of the Clang AST;</li>
+<li><a class="reference external" href="http://clang.llvm.org/docs/ClangCheck.html">clang-check</a> with the <tt class="docutils literal"><span class="pre">-ast-dump</span></tt> (and optionally <tt class="docutils literal"><span class="pre">-ast-dump-filter</span></tt>)
+provides a convenient way to dump AST of a C++ program.</li>
+</ul>
+</dd>
+</dl>
+<div class="section" id="choosing-the-right-place-for-your-check">
+<h3><a class="toc-backref" href="#id5">Choosing the Right Place for your Check</a><a class="headerlink" href="#choosing-the-right-place-for-your-check" title="Permalink to this headline">¶</a></h3>
+<p>If you have an idea of a check, you should decide whether it should be
+implemented as a:</p>
+<ul class="simple">
+<li><em>Clang diagnostic</em>: if the check is generic enough, targets code patterns that
+most probably are bugs (rather than style or readability issues), can be
+implemented effectively and with extremely low false positive rate, it may
+make a good Clang diagnostic.</li>
+<li><em>Clang static analyzer check</em>: if the check requires some sort of control flow
+analysis, it should probably be implemented as a static analyzer check.</li>
+<li><em>clang-tidy check</em> is a good choice for linter-style checks, checks that are
+related to a certain coding style, checks that address code readability, etc.</li>
+</ul>
+</div>
+<div class="section" id="preparing-your-workspace">
+<h3><a class="toc-backref" href="#id6">Preparing your Workspace</a><a class="headerlink" href="#preparing-your-workspace" title="Permalink to this headline">¶</a></h3>
+<p>If you are new to LLVM development, you should read the <a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting Started with
+the LLVM System</a>, <a class="reference external" href="http://clang.llvm.org/docs/ClangTools.html">Using Clang Tools</a> and <a class="reference external" href="http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html">How To Setup Tooling For LLVM</a>
+documents to check out and build LLVM, Clang and Clang Extra Tools with CMake.</p>
+<p>Once you are done, change to the <tt class="docutils literal"><span class="pre">llvm/tools/clang/tools/extra</span></tt> directory, and
+let’s start!</p>
+</div>
+<div class="section" id="the-directory-structure">
+<h3><a class="toc-backref" href="#id7">The Directory Structure</a><a class="headerlink" href="#the-directory-structure" title="Permalink to this headline">¶</a></h3>
+<p><strong class="program">clang-tidy</strong> source code resides in the
+<tt class="docutils literal"><span class="pre">llvm/tools/clang/tools/extra</span></tt> directory and is structured as follows:</p>
+<div class="highlight-python"><pre>clang-tidy/ # Clang-tidy core.
+|-- ClangTidy.h # Interfaces for users and checks.
+|-- ClangTidyModule.h # Interface for clang-tidy modules.
+|-- ClangTidyModuleRegistry.h # Interface for registering of modules.
+ ...
+|-- google/ # Google clang-tidy module.
+|-+
+ |-- GoogleTidyModule.cpp
+ |-- GoogleTidyModule.h
+ ...
+|-- llvm/ # LLVM clang-tidy module.
+|-+
+ |-- LLVMTidyModule.cpp
+ |-- LLVMTidyModule.h
+ ...
+|-- tool/ # Sources of the clang-tidy binary.
+ ...
+test/clang-tidy/ # Integration tests.
+ ...
+unittests/clang-tidy/ # Unit tests.
+|-- ClangTidyTest.h
+|-- GoogleModuleTest.cpp
+|-- LLVMModuleTest.cpp
+ ...</pre>
+</div>
+</div>
+<div class="section" id="writing-a-clang-tidy-check">
+<h3><a class="toc-backref" href="#id8">Writing a clang-tidy Check</a><a class="headerlink" href="#writing-a-clang-tidy-check" title="Permalink to this headline">¶</a></h3>
+<p>So you have an idea of a useful check for <strong class="program">clang-tidy</strong>.</p>
+<p>First, if you’re not familiar with LLVM development, read through the <a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting
+Started with LLVM</a> document for instructions on setting up your workflow and
+the <a class="reference external" href="http://llvm.org/docs/CodingStandards.html">LLVM Coding Standards</a> document to familiarize yourself with the coding
+style used in the project. For code reviews we mostly use <a class="reference external" href="http://llvm.org/docs/Phabricator.html">LLVM Phabricator</a>.</p>
+<p>Next, you need to decide which module the check belongs to. Modules
+are located in subdirectories of <a class="reference external" href="http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/clang-tidy/">clang-tidy/</a>
+and contain checks targeting a certain aspect of code quality (performance,
+readability, etc.), certain coding style or standard (Google, LLVM, CERT, etc.)
+or a widely used API (e.g. MPI). Their names are same as user-facing check
+groups names described <a class="reference internal" href="#checks-groups-table"><em>above</em></a>.</p>
+<p>After choosing the module and the name for the check, run the
+<tt class="docutils literal"><span class="pre">clang-tidy/add_new_check.py</span></tt> script to create the skeleton of the check and
+plug it to <strong class="program">clang-tidy</strong>. It’s the recommended way of adding new checks.</p>
+<p>If we want to create a <cite>readability-awesome-function-names</cite>, we would run:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> clang-tidy/add_new_check.py readability awesome-function-names
+</pre></div>
+</div>
+<dl class="docutils">
+<dt>The <tt class="docutils literal"><span class="pre">add_new_check.py</span></tt> script will:</dt>
+<dd><ul class="first last simple">
+<li>create the class for your check inside the specified module’s directory and
+register it in the module and in the build system;</li>
+<li>create a lit test file in the <tt class="docutils literal"><span class="pre">test/clang-tidy/</span></tt> directory;</li>
+<li>create a documentation file and include it into the
+<tt class="docutils literal"><span class="pre">docs/clang-tidy/checks/list.rst</span></tt>.</li>
+</ul>
+</dd>
+</dl>
+<p>Let’s see in more detail at the check class definition:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="p">...</span>
+
+<span class="cp">#include "../ClangTidy.h"</span>
+
+<span class="k">namespace</span> <span class="n">clang</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">tidy</span> <span class="p">{</span>
+<span class="k">namespace</span> <span class="n">readability</span> <span class="p">{</span>
+
+<span class="p">...</span>
+<span class="k">class</span> <span class="nc">AwesomeFunctionNamesCheck</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ClangTidyCheck</span> <span class="p">{</span>
+<span class="k">public</span><span class="o">:</span>
+ <span class="n">AwesomeFunctionNamesCheck</span><span class="p">(</span><span class="n">StringRef</span> <span class="n">Name</span><span class="p">,</span> <span class="n">ClangTidyContext</span> <span class="o">*</span><span class="n">Context</span><span class="p">)</span>
+ <span class="o">:</span> <span class="n">ClangTidyCheck</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="n">Context</span><span class="p">)</span> <span class="p">{}</span>
+ <span class="kt">void</span> <span class="n">registerMatchers</span><span class="p">(</span><span class="n">ast_matchers</span><span class="o">::</span><span class="n">MatchFinder</span> <span class="o">*</span><span class="n">Finder</span><span class="p">)</span> <span class="n">override</span><span class="p">;</span>
+ <span class="kt">void</span> <span class="n">check</span><span class="p">(</span><span class="k">const</span> <span class="n">ast_matchers</span><span class="o">::</span><span class="n">MatchFinder</span><span class="o">::</span><span class="n">MatchResult</span> <span class="o">&</span><span class="n">Result</span><span class="p">)</span> <span class="n">override</span><span class="p">;</span>
+<span class="p">};</span>
+
+<span class="p">}</span> <span class="c1">// namespace readability</span>
+<span class="p">}</span> <span class="c1">// namespace tidy</span>
+<span class="p">}</span> <span class="c1">// namespace clang</span>
+
+<span class="p">...</span>
+</pre></div>
+</div>
+<p>Constructor of the check receives the <tt class="docutils literal"><span class="pre">Name</span></tt> and <tt class="docutils literal"><span class="pre">Context</span></tt> parameters, and
+must forward them to the <tt class="docutils literal"><span class="pre">ClangTidyCheck</span></tt> constructor.</p>
+<p>In our case the check needs to operate on the AST level and it overrides the
+<tt class="docutils literal"><span class="pre">registerMatchers</span></tt> and <tt class="docutils literal"><span class="pre">check</span></tt> methods. If we wanted to analyze code on the
+preprocessor level, we’d need instead to override the <tt class="docutils literal"><span class="pre">registerPPCallbacks</span></tt>
+method.</p>
+<p>In the <tt class="docutils literal"><span class="pre">registerMatchers</span></tt> method we create an AST Matcher (see <a class="reference external" href="http://clang.llvm.org/docs/LibASTMatchers.html">AST Matchers</a>
+for more information) that will find the pattern in the AST that we want to
+inspect. The results of the matching are passed to the <tt class="docutils literal"><span class="pre">check</span></tt> method, which
+can further inspect them and report diagnostics.</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">using</span> <span class="k">namespace</span> <span class="n">ast_matchers</span><span class="p">;</span>
+
+<span class="kt">void</span> <span class="n">AwesomeFunctionNamesCheck</span><span class="o">::</span><span class="n">registerMatchers</span><span class="p">(</span><span class="n">MatchFinder</span> <span class="o">*</span><span class="n">Finder</span><span class="p">)</span> <span class="p">{</span>
+ <span class="n">Finder</span><span class="o">-></span><span class="n">addMatcher</span><span class="p">(</span><span class="n">functionDecl</span><span class="p">().</span><span class="n">bind</span><span class="p">(</span><span class="s">"x"</span><span class="p">),</span> <span class="k">this</span><span class="p">);</span>
+<span class="p">}</span>
+
+<span class="kt">void</span> <span class="n">AwesomeFunctionNamesCheck</span><span class="o">::</span><span class="n">check</span><span class="p">(</span><span class="k">const</span> <span class="n">MatchFinder</span><span class="o">::</span><span class="n">MatchResult</span> <span class="o">&</span><span class="n">Result</span><span class="p">)</span> <span class="p">{</span>
+ <span class="k">const</span> <span class="k">auto</span> <span class="o">*</span><span class="n">MatchedDecl</span> <span class="o">=</span> <span class="n">Result</span><span class="p">.</span><span class="n">Nodes</span><span class="p">.</span><span class="n">getNodeAs</span><span class="o"><</span><span class="n">FunctionDecl</span><span class="o">></span><span class="p">(</span><span class="s">"x"</span><span class="p">);</span>
+ <span class="k">if</span> <span class="p">(</span><span class="n">MatchedDecl</span><span class="o">-></span><span class="n">getName</span><span class="p">().</span><span class="n">startswith</span><span class="p">(</span><span class="s">"awesome_"</span><span class="p">))</span>
+ <span class="k">return</span><span class="p">;</span>
+ <span class="n">diag</span><span class="p">(</span><span class="n">MatchedDecl</span><span class="o">-></span><span class="n">getLocation</span><span class="p">(),</span> <span class="s">"function %0 is insufficiently awesome"</span><span class="p">)</span>
+ <span class="o"><<</span> <span class="n">MatchedDecl</span>
+ <span class="o"><<</span> <span class="n">FixItHint</span><span class="o">::</span><span class="n">CreateInsertion</span><span class="p">(</span><span class="n">MatchedDecl</span><span class="o">-></span><span class="n">getLocation</span><span class="p">(),</span> <span class="s">"awesome_"</span><span class="p">);</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>(If you want to see an example of a useful check, look at
+<a class="reference external" href="http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/clang-tidy/google/ExplicitConstructorCheck.h">clang-tidy/google/ExplicitConstructorCheck.h</a>
+and <a class="reference external" href="http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/clang-tidy/google/ExplicitConstructorCheck.cpp">clang-tidy/google/ExplicitConstructorCheck.cpp</a>).</p>
+</div>
+<div class="section" id="registering-your-check">
+<h3><a class="toc-backref" href="#id9">Registering your Check</a><a class="headerlink" href="#registering-your-check" title="Permalink to this headline">¶</a></h3>
+<p>(The <tt class="docutils literal"><span class="pre">add_new_check.py</span></tt> takes care of registering the check in an existing
+module. If you want to create a new module or know the details, read on.)</p>
+<p>The check should be registered in the corresponding module with a distinct name:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">class</span> <span class="nc">MyModule</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ClangTidyModule</span> <span class="p">{</span>
+ <span class="k">public</span><span class="o">:</span>
+ <span class="kt">void</span> <span class="n">addCheckFactories</span><span class="p">(</span><span class="n">ClangTidyCheckFactories</span> <span class="o">&</span><span class="n">CheckFactories</span><span class="p">)</span> <span class="n">override</span> <span class="p">{</span>
+ <span class="n">CheckFactories</span><span class="p">.</span><span class="n">registerCheck</span><span class="o"><</span><span class="n">ExplicitConstructorCheck</span><span class="o">></span><span class="p">(</span>
+ <span class="s">"my-explicit-constructor"</span><span class="p">);</span>
+ <span class="p">}</span>
+<span class="p">};</span>
+</pre></div>
+</div>
+<p>Now we need to register the module in the <tt class="docutils literal"><span class="pre">ClangTidyModuleRegistry</span></tt> using a
+statically initialized variable:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">static</span> <span class="n">ClangTidyModuleRegistry</span><span class="o">::</span><span class="n">Add</span><span class="o"><</span><span class="n">MyModule</span><span class="o">></span> <span class="n">X</span><span class="p">(</span><span class="s">"my-module"</span><span class="p">,</span>
+ <span class="s">"Adds my lint checks."</span><span class="p">);</span>
+</pre></div>
+</div>
+<p>When using LLVM build system, we need to use the following hack to ensure the
+module is linked into the <strong class="program">clang-tidy</strong> binary:</p>
+<p>Add this near the <tt class="docutils literal"><span class="pre">ClangTidyModuleRegistry::Add<MyModule></span></tt> variable:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// This anchor is used to force the linker to link in the generated object file</span>
+<span class="c1">// and thus register the MyModule.</span>
+<span class="k">volatile</span> <span class="kt">int</span> <span class="n">MyModuleAnchorSource</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span>
+</pre></div>
+</div>
+<p>And this to the main translation unit of the <strong class="program">clang-tidy</strong> binary (or
+the binary you link the <tt class="docutils literal"><span class="pre">clang-tidy</span></tt> library in)
+<tt class="docutils literal"><span class="pre">clang-tidy/tool/ClangTidyMain.cpp</span></tt>:</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// This anchor is used to force the linker to link the MyModule.</span>
+<span class="k">extern</span> <span class="k">volatile</span> <span class="kt">int</span> <span class="n">MyModuleAnchorSource</span><span class="p">;</span>
+<span class="k">static</span> <span class="kt">int</span> <span class="n">MyModuleAnchorDestination</span> <span class="o">=</span> <span class="n">MyModuleAnchorSource</span><span class="p">;</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="configuring-checks">
+<h3><a class="toc-backref" href="#id10">Configuring Checks</a><a class="headerlink" href="#configuring-checks" title="Permalink to this headline">¶</a></h3>
+<p>If a check needs configuration options, it can access check-specific options
+using the <tt class="docutils literal"><span class="pre">Options.get<Type>("SomeOption",</span> <span class="pre">DefaultValue)</span></tt> call in the check
+constructor. In this case the check should also override the
+<tt class="docutils literal"><span class="pre">ClangTidyCheck::storeOptions</span></tt> method to make the options provided by the
+check discoverable. This method lets <strong class="program">clang-tidy</strong> know which options
+the check implements and what the current values are (e.g. for the
+<tt class="docutils literal"><span class="pre">-dump-config</span></tt> command line option).</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="k">class</span> <span class="nc">MyCheck</span> <span class="o">:</span> <span class="k">public</span> <span class="n">ClangTidyCheck</span> <span class="p">{</span>
+ <span class="k">const</span> <span class="kt">unsigned</span> <span class="n">SomeOption1</span><span class="p">;</span>
+ <span class="k">const</span> <span class="n">std</span><span class="o">::</span><span class="n">string</span> <span class="n">SomeOption2</span><span class="p">;</span>
+
+<span class="k">public</span><span class="o">:</span>
+ <span class="n">MyCheck</span><span class="p">(</span><span class="n">StringRef</span> <span class="n">Name</span><span class="p">,</span> <span class="n">ClangTidyContext</span> <span class="o">*</span><span class="n">Context</span><span class="p">)</span>
+ <span class="o">:</span> <span class="n">ClangTidyCheck</span><span class="p">(</span><span class="n">Name</span><span class="p">,</span> <span class="n">Context</span><span class="p">),</span>
+ <span class="n">SomeOption</span><span class="p">(</span><span class="n">Options</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">"SomeOption1"</span><span class="p">,</span> <span class="o">-</span><span class="mi">1U</span><span class="p">)),</span>
+ <span class="n">SomeOption</span><span class="p">(</span><span class="n">Options</span><span class="p">.</span><span class="n">get</span><span class="p">(</span><span class="s">"SomeOption2"</span><span class="p">,</span> <span class="s">"some default"</span><span class="p">))</span> <span class="p">{}</span>
+
+ <span class="kt">void</span> <span class="n">storeOptions</span><span class="p">(</span><span class="n">ClangTidyOptions</span><span class="o">::</span><span class="n">OptionMap</span> <span class="o">&</span><span class="n">Opts</span><span class="p">)</span> <span class="n">override</span> <span class="p">{</span>
+ <span class="n">Options</span><span class="p">.</span><span class="n">store</span><span class="p">(</span><span class="n">Opts</span><span class="p">,</span> <span class="s">"SomeOption1"</span><span class="p">,</span> <span class="n">SomeOption1</span><span class="p">);</span>
+ <span class="n">Options</span><span class="p">.</span><span class="n">store</span><span class="p">(</span><span class="n">Opts</span><span class="p">,</span> <span class="s">"SomeOption2"</span><span class="p">,</span> <span class="n">SomeOption2</span><span class="p">);</span>
+ <span class="p">}</span>
+ <span class="p">...</span>
+</pre></div>
+</div>
+<p>Assuming the check is registered with the name “my-check”, the option can then
+be set in a <tt class="docutils literal"><span class="pre">.clang-tidy</span></tt> file in the following way:</p>
+<div class="highlight-yaml"><div class="highlight"><pre><span class="l-Scalar-Plain">CheckOptions</span><span class="p-Indicator">:</span>
+ <span class="p-Indicator">-</span> <span class="l-Scalar-Plain">key</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">my-check.SomeOption1</span>
+ <span class="l-Scalar-Plain">value</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">123</span>
+ <span class="p-Indicator">-</span> <span class="l-Scalar-Plain">key</span><span class="p-Indicator">:</span> <span class="l-Scalar-Plain">my-check.SomeOption2</span>
+ <span class="l-Scalar-Plain">value</span><span class="p-Indicator">:</span> <span class="s">'some</span><span class="nv"> </span><span class="s">other</span><span class="nv"> </span><span class="s">value'</span>
+</pre></div>
+</div>
+<p>If you need to specify check options on a command line, you can use the inline
+YAML format:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> clang-tidy -config<span class="o">=</span><span class="s2">"{CheckOptions: [{key: a, value: b}, {key: x, value: y}]}"</span> ...
+</pre></div>
+</div>
+</div>
+<div class="section" id="testing-checks">
+<h3><a class="toc-backref" href="#id11">Testing Checks</a><a class="headerlink" href="#testing-checks" title="Permalink to this headline">¶</a></h3>
+<p>To run tests for <strong class="program">clang-tidy</strong> use the command:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> ninja check-clang-tools
+</pre></div>
+</div>
+<p><strong class="program">clang-tidy</strong> checks can be tested using either unit tests or
+<a class="reference external" href="http://llvm.org/docs/CommandGuide/lit.html">lit</a> tests. Unit tests may be more convenient to test complex replacements
+with strict checks. <a class="reference external" href="http://llvm.org/docs/CommandGuide/lit.html">Lit</a> tests allow using partial text matching and regular
+expressions which makes them more suitable for writing compact tests for
+diagnostic messages.</p>
+<p>The <tt class="docutils literal"><span class="pre">check_clang_tidy.py</span></tt> script provides an easy way to test both
+diagnostic messages and fix-its. It filters out <tt class="docutils literal"><span class="pre">CHECK</span></tt> lines from the test
+file, runs <strong class="program">clang-tidy</strong> and verifies messages and fixes with two
+separate <a class="reference external" href="http://llvm.org/docs/CommandGuide/FileCheck.html">FileCheck</a> invocations: once with FileCheck’s directive
+prefix set to <tt class="docutils literal"><span class="pre">CHECK-MESSAGES</span></tt>, validating the diagnostic messages,
+and once with the directive prefix set to <tt class="docutils literal"><span class="pre">CHECK-FIXES</span></tt>, running
+against the fixed code (i.e., the code after generated fix-its are
+applied). In particular, <tt class="docutils literal"><span class="pre">CHECK-FIXES:</span></tt> can be used to check
+that code was not modified by fix-its, by checking that it is present
+unchanged in the fixed code. The full set of <a class="reference external" href="http://llvm.org/docs/CommandGuide/FileCheck.html">FileCheck</a> directives
+is available (e.g., <tt class="docutils literal"><span class="pre">CHECK-MESSAGES-SAME:</span></tt>, <tt class="docutils literal"><span class="pre">CHECK-MESSAGES-NOT:</span></tt>), though
+typically the basic <tt class="docutils literal"><span class="pre">CHECK</span></tt> forms (<tt class="docutils literal"><span class="pre">CHECK-MESSAGES</span></tt> and <tt class="docutils literal"><span class="pre">CHECK-FIXES</span></tt>)
+are sufficient for clang-tidy tests. Note that the <a class="reference external" href="http://llvm.org/docs/CommandGuide/FileCheck.html">FileCheck</a>
+documentation mostly assumes the default prefix (<tt class="docutils literal"><span class="pre">CHECK</span></tt>), and hence
+describes the directive as <tt class="docutils literal"><span class="pre">CHECK:</span></tt>, <tt class="docutils literal"><span class="pre">CHECK-SAME:</span></tt>, <tt class="docutils literal"><span class="pre">CHECK-NOT:</span></tt>, etc.
+Replace <tt class="docutils literal"><span class="pre">CHECK</span></tt> by either <tt class="docutils literal"><span class="pre">CHECK-FIXES</span></tt> or <tt class="docutils literal"><span class="pre">CHECK-MESSAGES</span></tt> for
+clang-tidy tests.</p>
+<p>An additional check enabled by <tt class="docutils literal"><span class="pre">check_clang_tidy.py</span></tt> ensures that
+if <cite>CHECK-MESSAGES:</cite> is used in a file then every warning or error
+must have an associated CHECK in that file.</p>
+<p>To use the <tt class="docutils literal"><span class="pre">check_clang_tidy.py</span></tt> script, put a .cpp file with the
+appropriate <tt class="docutils literal"><span class="pre">RUN</span></tt> line in the <tt class="docutils literal"><span class="pre">test/clang-tidy</span></tt> directory. Use
+<tt class="docutils literal"><span class="pre">CHECK-MESSAGES:</span></tt> and <tt class="docutils literal"><span class="pre">CHECK-FIXES:</span></tt> lines to write checks against
+diagnostic messages and fixed code.</p>
+<p>It’s advised to make the checks as specific as possible to avoid checks matching
+to incorrect parts of the input. Use <tt class="docutils literal"><span class="pre">[[@LINE+X]]</span></tt>/<tt class="docutils literal"><span class="pre">[[@LINE-X]]</span></tt>
+substitutions and distinct function and variable names in the test code.</p>
+<p>Here’s an example of a test using the <tt class="docutils literal"><span class="pre">check_clang_tidy.py</span></tt> script (the full
+source code is at <a class="reference external" href="http://reviews.llvm.org/diffusion/L/browse/clang-tools-extra/trunk/test/clang-tidy/google-readability-casting.cpp">test/clang-tidy/google-readability-casting.cpp</a>):</p>
+<div class="highlight-c++"><div class="highlight"><pre><span class="c1">// RUN: %check_clang_tidy %s google-readability-casting %t</span>
+
+<span class="kt">void</span> <span class="n">f</span><span class="p">(</span><span class="kt">int</span> <span class="n">a</span><span class="p">)</span> <span class="p">{</span>
+ <span class="kt">int</span> <span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="kt">int</span><span class="p">)</span><span class="n">a</span><span class="p">;</span>
+ <span class="c1">// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: redundant cast to the same type [google-readability-casting]</span>
+ <span class="c1">// CHECK-FIXES: int b = a;</span>
+<span class="p">}</span>
+</pre></div>
+</div>
+<p>There are many dark corners in the C++ language, and it may be difficult to make
+your check work perfectly in all cases, especially if it issues fix-it hints. The
+most frequent pitfalls are macros and templates:</p>
+<ol class="arabic simple">
+<li>code written in a macro body/template definition may have a different meaning
+depending on the macro expansion/template instantiation;</li>
+<li>multiple macro expansions/template instantiations may result in the same code
+being inspected by the check multiple times (possibly, with different
+meanings, see 1), and the same warning (or a slightly different one) may be
+issued by the check multiple times; <strong class="program">clang-tidy</strong> will deduplicate
+_identical_ warnings, but if the warnings are slightly different, all of them
+will be shown to the user (and used for applying fixes, if any);</li>
+<li>making replacements to a macro body/template definition may be fine for some
+macro expansions/template instantiations, but easily break some other
+expansions/instantiations.</li>
+</ol>
+</div>
+<div class="section" id="running-clang-tidy-on-llvm">
+<h3><a class="toc-backref" href="#id12">Running clang-tidy on LLVM</a><a class="headerlink" href="#running-clang-tidy-on-llvm" title="Permalink to this headline">¶</a></h3>
+<p>To test a check it’s best to try it out on a larger code base. LLVM and Clang
+are the natural targets as you already have the source code around. The most
+convenient way to run <strong class="program">clang-tidy</strong> is with a compile command database;
+CMake can automatically generate one, for a description of how to enable it see
+<a class="reference external" href="http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html">How To Setup Tooling For LLVM</a>. Once <tt class="docutils literal"><span class="pre">compile_commands.json</span></tt> is in place and
+a working version of <strong class="program">clang-tidy</strong> is in <tt class="docutils literal"><span class="pre">PATH</span></tt> the entire code base
+can be analyzed with <tt class="docutils literal"><span class="pre">clang-tidy/tool/run-clang-tidy.py</span></tt>. The script executes
+<strong class="program">clang-tidy</strong> with the default set of checks on every translation unit
+in the compile command database and displays the resulting warnings and errors.
+The script provides multiple configuration flags.</p>
+<ul class="simple">
+<li>The default set of checks can be overridden using the <tt class="docutils literal"><span class="pre">-checks</span></tt> argument,
+taking the identical format as <strong class="program">clang-tidy</strong> does. For example
+<tt class="docutils literal"><span class="pre">-checks=-*,modernize-use-override</span></tt> will run the <tt class="docutils literal"><span class="pre">modernize-use-override</span></tt>
+check only.</li>
+<li>To restrict the files examined you can provide one or more regex arguments
+that the file names are matched against.
+<tt class="docutils literal"><span class="pre">run-clang-tidy.py</span> <span class="pre">clang-tidy/.*Check\.cpp</span></tt> will only analyze clang-tidy
+checks. It may also be necessary to restrict the header files warnings are
+displayed from using the <tt class="docutils literal"><span class="pre">-header-filter</span></tt> flag. It has the same behavior
+as the corresponding <strong class="program">clang-tidy</strong> flag.</li>
+<li>To apply suggested fixes <tt class="docutils literal"><span class="pre">-fix</span></tt> can be passed as an argument. This gathers
+all changes in a temporary directory and applies them. Passing <tt class="docutils literal"><span class="pre">-format</span></tt>
+will run clang-format over changed lines.</li>
+</ul>
+</div>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="../ReleaseNotes.html">Extra Clang Tools 5.0.0 Release Notes</a>
+ ::
+ <a class="uplink" href="../index.html">Contents</a>
+ ::
+ <a href="checks/list.html">Clang-Tidy Checks</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clangd.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clangd.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clangd.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/clangd.html Thu May 10 06:54:16 2018
@@ -0,0 +1,229 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Clangd — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ <link rel="prev" title="Clang-Rename" href="clang-rename.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Clangd</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="clang-rename.html">Clang-Rename</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="clangd">
+<h1><a class="toc-backref" href="#id2">Clangd</a><a class="headerlink" href="#clangd" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#clangd" id="id2">Clangd</a><ul>
+<li><a class="reference internal" href="#using-clangd" id="id3">Using Clangd</a></li>
+<li><a class="reference internal" href="#building-clangd" id="id4">Building Clangd</a></li>
+<li><a class="reference internal" href="#current-status" id="id5">Current Status</a></li>
+<li><a class="reference internal" href="#getting-involved" id="id6">Getting Involved</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="toctree-wrapper compound">
+<ul class="simple">
+</ul>
+</div>
+<p><strong class="program">Clangd</strong> is an implementation of the <a class="reference external" href="https://github.com/Microsoft/language-server-protocol">Language Server Protocol</a> leveraging Clang.
+Clangd’s goal is to provide language “smartness” features like code completion,
+find references, etc. for clients such as C/C++ Editors.</p>
+<div class="section" id="using-clangd">
+<h2><a class="toc-backref" href="#id3">Using Clangd</a><a class="headerlink" href="#using-clangd" title="Permalink to this headline">¶</a></h2>
+<p><strong class="program">Clangd</strong> is not meant to be used by C/C++ developers directly but
+rather from a client implementing the protocol. A client would be typically
+implemented in an IDE or an editor.</p>
+<p>At the moment, <a class="reference external" href="https://code.visualstudio.com/">Visual Studio Code</a> is mainly
+used in order to test <strong class="program">Clangd</strong> but more clients are likely to make
+use of <strong class="program">Clangd</strong> in the future as it matures and becomes a production
+quality tool. If you are interested in trying <strong class="program">Clangd</strong> in combination
+with Visual Studio Code, you can start by <a class="reference internal" href="#building-clangd">building Clangd</a>, then open Visual
+Studio Code in the clangd-vscode folder and launch the extension.</p>
+</div>
+<div class="section" id="building-clangd">
+<h2><a class="toc-backref" href="#id4">Building Clangd</a><a class="headerlink" href="#building-clangd" title="Permalink to this headline">¶</a></h2>
+<p>You can follow the instructions for <a class="reference external" href="https://clang.llvm.org/get_started.html">building Clang</a> but “extra Clang tools” is <strong>not</strong>
+optional.</p>
+</div>
+<div class="section" id="current-status">
+<h2><a class="toc-backref" href="#id5">Current Status</a><a class="headerlink" href="#current-status" title="Permalink to this headline">¶</a></h2>
+<p>Many features could be implemented in <strong class="program">Clangd</strong>.
+Here is a list of features that could be useful with the status of whether or
+not they are already implemented in <strong class="program">Clangd</strong> and specified in the
+Language Server Protocol. Note that for some of the features, it is not clear
+whether or not they should be part of the Language Server Protocol, so those
+features might be eventually developed outside <strong class="program">Clangd</strong>.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="63%" />
+<col width="20%" />
+<col width="17%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">C/C++ Editor feature</th>
+<th class="head">LSP</th>
+<th class="head">Clangd</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Formatting</td>
+<td>Yes</td>
+<td>Yes</td>
+</tr>
+<tr class="row-odd"><td>Completion</td>
+<td>Yes</td>
+<td>Yes</td>
+</tr>
+<tr class="row-even"><td>Diagnostics</td>
+<td>Yes</td>
+<td>Yes</td>
+</tr>
+<tr class="row-odd"><td>Fix-its</td>
+<td>Yes</td>
+<td>Yes</td>
+</tr>
+<tr class="row-even"><td>Go to Definition</td>
+<td>Yes</td>
+<td>Yes</td>
+</tr>
+<tr class="row-odd"><td>Source hover</td>
+<td>Yes</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Signature Help</td>
+<td>Yes</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Find References</td>
+<td>Yes</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Document Highlights</td>
+<td>Yes</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Rename</td>
+<td>Yes</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Code Lens</td>
+<td>Yes</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Syntax and Semantic Coloring</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Code folding</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Call hierarchy</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Type hierarchy</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Organize Includes</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Quick Assist</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Extract Local Variable</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Extract Function/Method</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Hide Method</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-even"><td>Implement Method</td>
+<td>No</td>
+<td>No</td>
+</tr>
+<tr class="row-odd"><td>Gen. Getters/Setters</td>
+<td>No</td>
+<td>No</td>
+</tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="getting-involved">
+<h2><a class="toc-backref" href="#id6">Getting Involved</a><a class="headerlink" href="#getting-involved" title="Permalink to this headline">¶</a></h2>
+<p>A good place for interested contributors is the <a class="reference external" href="http://lists.llvm.org/mailman/listinfo/cfe-dev">Clang developer mailing list</a>.
+If you’re also interested in contributing patches to <strong class="program">Clangd</strong>, take a
+look at the <a class="reference external" href="http://llvm.org/docs/DeveloperPolicy.html">LLVM Developer Policy</a> and <a class="reference external" href="http://llvm.org/docs/Phabricator.html">Code Reviews</a> page. Contributions of new features
+to the <a class="reference external" href="https://github.com/Microsoft/language-server-protocol">Language Server Protocol</a> itself would also be
+very useful, so that <strong class="program">Clangd</strong> can eventually implement them in a
+conforming way.</p>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="clang-rename.html">Clang-Rename</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/cpp11-migrate.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/cpp11-migrate.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/cpp11-migrate.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/cpp11-migrate.html Thu May 10 06:54:16 2018
@@ -0,0 +1,66 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title><no title> — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span><no title></span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <p>All <strong class="program">clang-modernize</strong> transforms have moved to <a class="reference internal" href="clang-tidy/index.html"><em>Clang-Tidy</em></a>
+(see the <tt class="docutils literal"><span class="pre">modernize</span></tt> module).</p>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/genindex.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/genindex.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/genindex.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/genindex.html Thu May 10 06:54:16 2018
@@ -0,0 +1,267 @@
+
+
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Index — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Index</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+ <div class="content">
+
+
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#Symbols"><strong>Symbols</strong></a>
+ | <a href="#C"><strong>C</strong></a>
+ | <a href="#M"><strong>M</strong></a>
+ | <a href="#P"><strong>P</strong></a>
+
+</div>
+<h2 id="Symbols">Symbols</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt>
+ -block-check-header-list-only
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-block-check-header-list-only">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -coverage-check-only
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-coverage-check-only">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -display-file-lists
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-display-file-lists">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -ignore <callback-name-list>
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="pp-trace.html#cmdoption-ignore">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -module-map-path=<module-map-path>
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-module-map-path">command line option</a>
+ </dt>
+
+ </dl></dd>
+ </dl></td>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt>
+ -no-coverage-check
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-no-coverage-check">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -output <output-file>
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="pp-trace.html#cmdoption-output">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -prefix=<header-path>
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-prefix">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -problem-files-list=<problem-files-list-file-name>
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-problem-files-list">command line option</a>
+ </dt>
+
+ </dl></dd>
+
+ <dt>
+ -root-module=<root-name>
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-root-module">command line option</a>
+ </dt>
+
+ </dl></dd>
+ </dl></td>
+</tr></table>
+
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt>
+ command line option
+ </dt>
+
+ <dd><dl>
+
+ <dt><a href="ModularizeUsage.html#cmdoption-block-check-header-list-only">-block-check-header-list-only</a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-coverage-check-only">-coverage-check-only</a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-display-file-lists">-display-file-lists</a>
+ </dt>
+
+
+ <dt><a href="pp-trace.html#cmdoption-ignore">-ignore <callback-name-list></a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-module-map-path">-module-map-path=<module-map-path></a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-no-coverage-check">-no-coverage-check</a>
+ </dt>
+
+
+ <dt><a href="pp-trace.html#cmdoption-output">-output <output-file></a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-prefix">-prefix=<header-path></a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-problem-files-list">-problem-files-list=<problem-files-list-file-name></a>
+ </dt>
+
+
+ <dt><a href="ModularizeUsage.html#cmdoption-root-module">-root-module=<root-name></a>
+ </dt>
+
+ </dl></dd>
+ </dl></td>
+</tr></table>
+
+<h2 id="M">M</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="modularize.html#index-0">modularize</a>
+ </dt>
+
+ </dl></td>
+</tr></table>
+
+<h2 id="P">P</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="pp-trace.html#index-0">pp-trace</a>
+ </dt>
+
+ </dl></td>
+</tr></table>
+
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/include-fixer.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/include-fixer.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/include-fixer.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/include-fixer.html Thu May 10 06:54:16 2018
@@ -0,0 +1,220 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Clang-Include-Fixer — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ <link rel="next" title="Modularize Userâs Manual" href="modularize.html" />
+ <link rel="prev" title="readability-uniqueptr-delete-release" href="clang-tidy/checks/readability-uniqueptr-delete-release.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Clang-Include-Fixer</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="clang-tidy/checks/readability-uniqueptr-delete-release.html">readability-uniqueptr-delete-release</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ ::
+ <a href="modularize.html">Modularize User’s Manual</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="clang-include-fixer">
+<h1><a class="toc-backref" href="#id1">Clang-Include-Fixer</a><a class="headerlink" href="#clang-include-fixer" title="Permalink to this headline">¶</a></h1>
+<div class="contents topic" id="contents">
+<p class="topic-title first">Contents</p>
+<ul class="simple">
+<li><a class="reference internal" href="#clang-include-fixer" id="id1">Clang-Include-Fixer</a><ul>
+<li><a class="reference internal" href="#setup" id="id2">Setup</a><ul>
+<li><a class="reference internal" href="#creating-a-symbol-index-from-a-compilation-database" id="id3">Creating a Symbol Index From a Compilation Database</a></li>
+<li><a class="reference internal" href="#integrate-with-vim" id="id4">Integrate with Vim</a></li>
+<li><a class="reference internal" href="#integrate-with-emacs" id="id5">Integrate with Emacs</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#how-it-works" id="id6">How it Works</a></li>
+</ul>
+</li>
+</ul>
+</div>
+<p>One of the major nuisances of C++ compared to other languages is the manual
+management of <tt class="docutils literal"><span class="pre">#include</span></tt> directives in any file.
+<strong class="program">clang-include-fixer</strong> addresses one aspect of this problem by providing
+an automated way of adding <tt class="docutils literal"><span class="pre">#include</span></tt> directives for missing symbols in one
+translation unit.</p>
+<p>While inserting missing <tt class="docutils literal"><span class="pre">#include</span></tt>, <strong class="program">clang-include-fixer</strong> adds
+missing namespace qualifiers to all instances of an unidentified symbol if
+the symbol is missing some prefix namespace qualifiers.</p>
+<div class="section" id="setup">
+<h2><a class="toc-backref" href="#id2">Setup</a><a class="headerlink" href="#setup" title="Permalink to this headline">¶</a></h2>
+<p>To use <strong class="program">clang-include-fixer</strong> two databases are required. Both can be
+generated with existing tools.</p>
+<ul class="simple">
+<li>Compilation database. Contains the compiler commands for any given file in a
+project and can be generated by CMake, see <a class="reference external" href="http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html">How To Setup Tooling For LLVM</a>.</li>
+<li>Symbol index. Contains all symbol information in a project to match a given
+identifier to a header file.</li>
+</ul>
+<p>Ideally both databases (<tt class="docutils literal"><span class="pre">compile_commands.json</span></tt> and
+<tt class="docutils literal"><span class="pre">find_all_symbols_db.yaml</span></tt>) are linked into the root of the source tree they
+correspond to. Then the <strong class="program">clang-include-fixer</strong> can automatically pick
+them up if called with a source file from that tree. Note that by default
+<tt class="docutils literal"><span class="pre">compile_commands.json</span></tt> as generated by CMake does not include header files,
+so only implementation files can be handled by tools.</p>
+<div class="section" id="creating-a-symbol-index-from-a-compilation-database">
+<h3><a class="toc-backref" href="#id3">Creating a Symbol Index From a Compilation Database</a><a class="headerlink" href="#creating-a-symbol-index-from-a-compilation-database" title="Permalink to this headline">¶</a></h3>
+<p>The include fixer contains <strong class="program">find-all-symbols</strong>, a tool to create a
+symbol database in YAML format from a compilation database by parsing all
+source files listed in it. The following list of commands shows how to set up a
+database for LLVM, any project built by CMake should follow similar steps.</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> <span class="nb">cd </span>path/to/llvm-build
+<span class="gp">$</span> ninja find-all-symbols // build find-all-symbols tool.
+<span class="gp">$</span> ninja clang-include-fixer // build clang-include-fixer tool.
+<span class="gp">$</span> ls compile_commands.json <span class="c"># Make sure compile_commands.json exists.</span>
+<span class="go"> compile_commands.json</span>
+<span class="gp">$</span> path/to/llvm/source/tools/clang/tools/extra/include-fixer/find-all-symbols/tool/run-find-all-symbols.py
+<span class="go"> ... wait as clang indexes the code base ...</span>
+<span class="gp">$</span> ln -s <span class="nv">$PWD</span>/find_all_symbols_db.yaml path/to/llvm/source/ <span class="c"># Link database into the source tree.</span>
+<span class="gp">$</span> ln -s <span class="nv">$PWD</span>/compile_commands.json path/to/llvm/source/ <span class="c"># Also link compilation database if it's not there already.</span>
+<span class="gp">$</span> <span class="nb">cd </span>path/to/llvm/source
+<span class="gp">$</span> /path/to/clang-include-fixer -db<span class="o">=</span>yaml path/to/file/with/missing/include.cpp
+<span class="go"> Added #include "foo.h"</span>
+</pre></div>
+</div>
+</div>
+<div class="section" id="integrate-with-vim">
+<h3><a class="toc-backref" href="#id4">Integrate with Vim</a><a class="headerlink" href="#integrate-with-vim" title="Permalink to this headline">¶</a></h3>
+<p>To run <cite>clang-include-fixer</cite> on a potentially unsaved buffer in Vim. Add the
+following key binding to your <tt class="docutils literal"><span class="pre">.vimrc</span></tt>:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="go">noremap <leader>cf :pyf path/to/llvm/source/tools/clang/tools/extra/include-fixer/tool/clang-include-fixer.py<cr></span>
+</pre></div>
+</div>
+<p>This enables <cite>clang-include-fixer</cite> for NORMAL and VISUAL mode. Change
+<cite><leader>cf</cite> to another binding if you need clang-include-fixer on a different
+key. The <a class="reference external" href="http://vim.wikia.com/wiki/Mapping_keys_in_Vim_-_Tutorial_(Part_3)#Map_leader"><leader> key</a>
+is a reference to a specific key defined by the mapleader variable and is bound
+to backslash by default.</p>
+<p>Make sure vim can find <strong class="program">clang-include-fixer</strong>:</p>
+<ul class="simple">
+<li>Add the path to <strong class="program">clang-include-fixer</strong> to the PATH environment variable.</li>
+<li>Or set <tt class="docutils literal"><span class="pre">g:clang_include_fixer_path</span></tt> in vimrc: <tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_path=path/to/clang-include-fixer</span></tt></li>
+</ul>
+<p>You can customize the number of headers being shown by setting
+<tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_maximum_suggested_headers=5</span></tt></p>
+<p>Customized settings in <cite>.vimrc</cite>:</p>
+<ul>
+<li><p class="first"><tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_path</span> <span class="pre">=</span> <span class="pre">"clang-include-fixer"</span></tt></p>
+<p>Set clang-include-fixer binary file path.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_maximum_suggested_headers</span> <span class="pre">=</span> <span class="pre">3</span></tt></p>
+<p>Set the maximum number of <tt class="docutils literal"><span class="pre">#includes</span></tt> to show. Default is 3.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_increment_num</span> <span class="pre">=</span> <span class="pre">5</span></tt></p>
+<p>Set the increment number of #includes to show every time when pressing <tt class="docutils literal"><span class="pre">m</span></tt>.
+Default is 5.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_jump_to_include</span> <span class="pre">=</span> <span class="pre">0</span></tt></p>
+<p>Set to 1 if you want to jump to the new inserted <tt class="docutils literal"><span class="pre">#include</span></tt> line. Default is
+0.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">let</span> <span class="pre">g:clang_include_fixer_query_mode</span> <span class="pre">=</span> <span class="pre">0</span></tt></p>
+<p>Set to 1 if you want to insert <tt class="docutils literal"><span class="pre">#include</span></tt> for the symbol under the cursor.
+Default is 0. Compared to normal mode, this mode won’t parse the source file
+and only search the sysmbol from database, which is faster than normal mode.</p>
+</li>
+</ul>
+<p>See <tt class="docutils literal"><span class="pre">clang-include-fixer.py</span></tt> for more details.</p>
+</div>
+<div class="section" id="integrate-with-emacs">
+<h3><a class="toc-backref" href="#id5">Integrate with Emacs</a><a class="headerlink" href="#integrate-with-emacs" title="Permalink to this headline">¶</a></h3>
+<p>To run <cite>clang-include-fixer</cite> on a potentially unsaved buffer in Emacs.
+Ensure that Emacs finds <tt class="docutils literal"><span class="pre">clang-include-fixer.el</span></tt> by adding the directory
+containing the file to the <tt class="docutils literal"><span class="pre">load-path</span></tt> and requiring the <cite>clang-include-fixer</cite>
+in your <tt class="docutils literal"><span class="pre">.emacs</span></tt>:</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="go">(add-to-list 'load-path "path/to/llvm/source/tools/clang/tools/extra/include-fixer/tool/"</span>
+<span class="go">(require 'clang-include-fixer)</span>
+</pre></div>
+</div>
+<p>Within Emacs the tool can be invoked with the command
+<tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">clang-include-fixer</span></tt>. This will insert the header that defines the
+first undefined symbol; if there is more than one header that would define the
+symbol, the user is prompted to select one.</p>
+<p>To include the header that defines the symbol at point, run
+<tt class="docutils literal"><span class="pre">M-x</span> <span class="pre">clang-include-fixer-at-point</span></tt>.</p>
+<p>Make sure Emacs can find <strong class="program">clang-include-fixer</strong>:</p>
+<ul class="simple">
+<li>Either add the parent directory of <strong class="program">clang-include-fixer</strong> to the PATH
+environment variable, or customize the Emacs user option
+<tt class="docutils literal"><span class="pre">clang-include-fixer-executable</span></tt> to point to the file name of the program.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="how-it-works">
+<h2><a class="toc-backref" href="#id6">How it Works</a><a class="headerlink" href="#how-it-works" title="Permalink to this headline">¶</a></h2>
+<p>To get the most information out of Clang at parse time,
+<strong class="program">clang-include-fixer</strong> runs in tandem with the parse and receives
+callbacks from Clang’s semantic analysis. In particular it reuses the existing
+support for typo corrections. Whenever Clang tries to correct a potential typo
+it emits a callback to the include fixer which then looks for a corresponding
+file. At this point rich lookup information is still available, which is not
+available in the AST at a later stage.</p>
+<p>The identifier that should be typo corrected is then sent to the database, if a
+header file is returned it is added as an include directive at the top of the
+file.</p>
+<p>Currently <strong class="program">clang-include-fixer</strong> only inserts a single include at a
+time to avoid getting caught in follow-up errors. If multiple <cite>#include</cite>
+additions are desired the program can be rerun until a fix-point is reached.</p>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="clang-tidy/checks/readability-uniqueptr-delete-release.html">readability-uniqueptr-delete-release</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ ::
+ <a href="modularize.html">Modularize User’s Manual</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/index.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/index.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/index.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/index.html Thu May 10 06:54:16 2018
@@ -0,0 +1,130 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Welcome to Extra Clang Toolsâs documentation! — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="#" />
+ <link rel="next" title="Extra Clang Tools 5.0.0 Release Notes" href="ReleaseNotes.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="#">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Welcome to Extra Clang Toolsâs documentation!</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ <a class="uplink" href="#">Contents</a>
+ ::
+ <a href="ReleaseNotes.html">Extra Clang Tools 5.0.0 Release Notes</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="introduction">
+<h1>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h1>
+<p>Welcome to the clang-tools-extra project which contains extra tools built using
+Clang’s tooling API’s.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="ReleaseNotes.html">Extra Clang Tools 5.0.0 Release Notes</a></li>
+</ul>
+</div>
+</div>
+<div class="section" id="contents">
+<h1>Contents<a class="headerlink" href="#contents" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="clang-tidy/index.html">Clang-Tidy</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="clang-tidy/checks/list.html">The list of clang-tidy checks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clang-tidy/index.html#using-clang-tidy">Using clang-tidy</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clang-tidy/index.html#getting-involved">Getting Involved</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="include-fixer.html">Clang-Include-Fixer</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="include-fixer.html#setup">Setup</a></li>
+<li class="toctree-l2"><a class="reference internal" href="include-fixer.html#how-it-works">How it Works</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="modularize.html">Modularize User’s Manual</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="modularize.html#getting-started">Getting Started</a></li>
+<li class="toctree-l2"><a class="reference internal" href="modularize.html#what-modularize-checks">What Modularize Checks</a></li>
+<li class="toctree-l2"><a class="reference internal" href="modularize.html#module-map-coverage-check">Module Map Coverage Check</a></li>
+<li class="toctree-l2"><a class="reference internal" href="modularize.html#module-map-generation">Module Map Generation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="pp-trace.html">pp-trace User’s Manual</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="pp-trace.html#pp-trace-usage">pp-trace Usage</a></li>
+<li class="toctree-l2"><a class="reference internal" href="pp-trace.html#pp-trace-output-format">pp-trace Output Format</a></li>
+<li class="toctree-l2"><a class="reference internal" href="pp-trace.html#building-pp-trace">Building pp-trace</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="clang-rename.html">Clang-Rename</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="clang-rename.html#using-clang-rename">Using Clang-Rename</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clang-rename.html#vim-integration">Vim Integration</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clang-rename.html#emacs-integration">Emacs Integration</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="clangd.html">Clangd</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="clangd.html#using-clangd">Using Clangd</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clangd.html#building-clangd">Building Clangd</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clangd.html#current-status">Current Status</a></li>
+<li class="toctree-l2"><a class="reference internal" href="clangd.html#getting-involved">Getting Involved</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="indices-and-tables">
+<h1>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h1>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ <a class="uplink" href="#">Contents</a>
+ ::
+ <a href="ReleaseNotes.html">Extra Clang Tools 5.0.0 Release Notes</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/modularize.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/modularize.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/modularize.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/modularize.html Thu May 10 06:54:16 2018
@@ -0,0 +1,306 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Modularize Userâs Manual — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ <link rel="next" title="Modularize Usage" href="ModularizeUsage.html" />
+ <link rel="prev" title="Clang-Include-Fixer" href="include-fixer.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Modularize Userâs Manual</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="include-fixer.html">Clang-Include-Fixer</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ ::
+ <a href="ModularizeUsage.html">Modularize Usage</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="modularize-user-s-manual">
+<span id="index-0"></span><h1>Modularize User’s Manual<a class="headerlink" href="#modularize-user-s-manual" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+</div>
+<p><strong class="program">modularize</strong> is a standalone tool that checks whether a set of headers
+provides the consistent definitions required to use modules. For example, it
+detects whether the same entity (say, a NULL macro or size_t typedef) is
+defined in multiple headers or whether a header produces different definitions
+under different circumstances. These conditions cause modules built from the
+headers to behave poorly, and should be fixed before introducing a module
+map.</p>
+<p><strong class="program">modularize</strong> also has an assistant mode option for generating
+a module map file based on the provided header list. The generated file
+is a functional module map that can be used as a starting point for a
+module.map file.</p>
+<div class="section" id="getting-started">
+<h2>Getting Started<a class="headerlink" href="#getting-started" title="Permalink to this headline">¶</a></h2>
+<p>To build from source:</p>
+<ol class="arabic simple">
+<li>Read <a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting Started with the LLVM System</a> and <a class="reference external" href="http://clang.llvm.org/docs/ClangTools.html">Clang Tools
+Documentation</a> for information on getting sources for LLVM, Clang, and
+Clang Extra Tools.</li>
+<li><a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting Started with the LLVM System</a> and <a class="reference external" href="http://llvm.org/docs/CMake.html">Building LLVM with CMake</a> give
+directions for how to build. With sources all checked out into the
+right place the LLVM build will build Clang Extra Tools and their
+dependencies automatically.<ul>
+<li>If using CMake, you can also use the <tt class="docutils literal"><span class="pre">modularize</span></tt> target to build
+just the modularize tool and its dependencies.</li>
+</ul>
+</li>
+</ol>
+<p>Before continuing, take a look at <a class="reference internal" href="ModularizeUsage.html"><em>Modularize Usage</em></a> to see how to invoke
+modularize.</p>
+</div>
+<div class="section" id="what-modularize-checks">
+<h2>What Modularize Checks<a class="headerlink" href="#what-modularize-checks" title="Permalink to this headline">¶</a></h2>
+<p>Modularize will check for the following:</p>
+<ul class="simple">
+<li>Duplicate global type and variable definitions</li>
+<li>Duplicate macro definitions</li>
+<li>Macro instances, ‘defined(macro)’, or #if, #elif, #ifdef, #ifndef conditions
+that evaluate differently in a header</li>
+<li>#include directives inside ‘extern “C/C++” {}’ or ‘namespace (name) {}’ blocks</li>
+<li>Module map header coverage completeness (in the case of a module map input
+only)</li>
+</ul>
+<p>Modularize will do normal C/C++ parsing, reporting normal errors and warnings,
+but will also report special error messages like the following:</p>
+<div class="highlight-python"><pre>error: '(symbol)' defined at multiple locations:
+ (file):(row):(column)
+ (file):(row):(column)
+
+error: header '(file)' has different contents depending on how it was included</pre>
+</div>
+<p>The latter might be followed by messages like the following:</p>
+<div class="highlight-python"><pre>note: '(symbol)' in (file) at (row):(column) not always provided</pre>
+</div>
+<p>Checks will also be performed for macro expansions, defined(macro)
+expressions, and preprocessor conditional directives that evaluate
+inconsistently, and can produce error messages like the following:</p>
+<div class="highlight-python"><pre> (...)/SubHeader.h:11:5:
+#if SYMBOL == 1
+ ^
+error: Macro instance 'SYMBOL' has different values in this header,
+ depending on how it was included.
+ 'SYMBOL' expanded to: '1' with respect to these inclusion paths:
+ (...)/Header1.h
+ (...)/SubHeader.h
+(...)/SubHeader.h:3:9:
+#define SYMBOL 1
+ ^
+Macro defined here.
+ 'SYMBOL' expanded to: '2' with respect to these inclusion paths:
+ (...)/Header2.h
+ (...)/SubHeader.h
+(...)/SubHeader.h:7:9:
+#define SYMBOL 2
+ ^
+Macro defined here.</pre>
+</div>
+<p>Checks will also be performed for ‘#include’ directives that are
+nested inside ‘extern “C/C++” {}’ or ‘namespace (name) {}’ blocks,
+and can produce error message like the following:</p>
+<div class="highlight-python"><pre>IncludeInExtern.h:2:3:
+#include "Empty.h"
+^
+error: Include directive within extern "C" {}.
+IncludeInExtern.h:1:1:
+extern "C" {
+^
+The "extern "C" {}" block is here.</pre>
+</div>
+</div>
+<div class="section" id="module-map-coverage-check">
+<span id="module-map-coverage"></span><h2>Module Map Coverage Check<a class="headerlink" href="#module-map-coverage-check" title="Permalink to this headline">¶</a></h2>
+<p>The coverage check uses the Clang library to read and parse the
+module map file. Starting at the module map file directory, or just the
+include paths, if specified, it will collect the names of all the files it
+considers headers (no extension, .h, or .inc–if you need more, modify the
+isHeader function). It then compares the headers against those referenced
+in the module map, either explicitly named, or implicitly named via an
+umbrella directory or umbrella file, as parsed by the ModuleMap object.
+If headers are found which are not referenced or covered by an umbrella
+directory or file, warning messages will be produced, and this program
+will return an error code of 1. If no problems are found, an error code of
+0 is returned.</p>
+<p>Note that in the case of umbrella headers, this tool invokes the compiler
+to preprocess the file, and uses a callback to collect the header files
+included by the umbrella header or any of its nested includes. If any
+front end options are needed for these compiler invocations, these
+can be included on the command line after the module map file argument.</p>
+<p>Warning message have the form:</p>
+<blockquote>
+<div>warning: module.modulemap does not account for file: Level3A.h</div></blockquote>
+<p>Note that for the case of the module map referencing a file that does
+not exist, the module map parser in Clang will (at the time of this
+writing) display an error message.</p>
+<p>To limit the checks <strong class="program">modularize</strong> does to just the module
+map coverage check, use the <tt class="docutils literal"><span class="pre">-coverage-check-only</span> <span class="pre">option</span></tt>.</p>
+<p>For example:</p>
+<div class="highlight-python"><pre>modularize -coverage-check-only module.modulemap</pre>
+</div>
+</div>
+<div class="section" id="module-map-generation">
+<span id="id1"></span><h2>Module Map Generation<a class="headerlink" href="#module-map-generation" title="Permalink to this headline">¶</a></h2>
+<p>If you specify the <tt class="docutils literal"><span class="pre">-module-map-path=<module</span> <span class="pre">map</span> <span class="pre">file></span></tt>,
+<strong class="program">modularize</strong> will output a module map based on the input header list.
+A module will be created for each header. Also, if the header in the header
+list is a partial path, a nested module hierarchy will be created in which a
+module will be created for each subdirectory component in the header path,
+with the header itself represented by the innermost module. If other headers
+use the same subdirectories, they will be enclosed in these same modules also.</p>
+<p>For example, for the header list:</p>
+<div class="highlight-python"><div class="highlight"><pre><span class="n">SomeTypes</span><span class="o">.</span><span class="n">h</span>
+<span class="n">SomeDecls</span><span class="o">.</span><span class="n">h</span>
+<span class="n">SubModule1</span><span class="o">/</span><span class="n">Header1</span><span class="o">.</span><span class="n">h</span>
+<span class="n">SubModule1</span><span class="o">/</span><span class="n">Header2</span><span class="o">.</span><span class="n">h</span>
+<span class="n">SubModule2</span><span class="o">/</span><span class="n">Header3</span><span class="o">.</span><span class="n">h</span>
+<span class="n">SubModule2</span><span class="o">/</span><span class="n">Header4</span><span class="o">.</span><span class="n">h</span>
+<span class="n">SubModule2</span><span class="o">.</span><span class="n">h</span>
+</pre></div>
+</div>
+<p>The following module map will be generated:</p>
+<div class="highlight-python"><pre>// Output/NoProblemsAssistant.txt
+// Generated by: modularize -module-map-path=Output/NoProblemsAssistant.txt \
+ -root-module=Root NoProblemsAssistant.modularize
+
+module SomeTypes {
+ header "SomeTypes.h"
+ export *
+}
+module SomeDecls {
+ header "SomeDecls.h"
+ export *
+}
+module SubModule1 {
+ module Header1 {
+ header "SubModule1/Header1.h"
+ export *
+ }
+ module Header2 {
+ header "SubModule1/Header2.h"
+ export *
+ }
+}
+module SubModule2 {
+ module Header3 {
+ header "SubModule2/Header3.h"
+ export *
+ }
+ module Header4 {
+ header "SubModule2/Header4.h"
+ export *
+ }
+ header "SubModule2.h"
+ export *
+}</pre>
+</div>
+<p>An optional <tt class="docutils literal"><span class="pre">-root-module=<root-name></span></tt> option can be used to cause a root module
+to be created which encloses all the modules.</p>
+<p>An optional <tt class="docutils literal"><span class="pre">-problem-files-list=<problem-file-name></span></tt> can be used to input
+a list of files to be excluded, perhaps as a temporary stop-gap measure until
+problem headers can be fixed.</p>
+<p>For example, with the same header list from above:</p>
+<div class="highlight-python"><pre>// Output/NoProblemsAssistant.txt
+// Generated by: modularize -module-map-path=Output/NoProblemsAssistant.txt \
+ -root-module=Root NoProblemsAssistant.modularize
+
+module Root {
+ module SomeTypes {
+ header "SomeTypes.h"
+ export *
+ }
+ module SomeDecls {
+ header "SomeDecls.h"
+ export *
+ }
+ module SubModule1 {
+ module Header1 {
+ header "SubModule1/Header1.h"
+ export *
+ }
+ module Header2 {
+ header "SubModule1/Header2.h"
+ export *
+ }
+ }
+ module SubModule2 {
+ module Header3 {
+ header "SubModule2/Header3.h"
+ export *
+ }
+ module Header4 {
+ header "SubModule2/Header4.h"
+ export *
+ }
+ header "SubModule2.h"
+ export *
+ }
+}</pre>
+</div>
+<p>Note that headers with dependents will be ignored with a warning, as the
+Clang module mechanism doesn’t support headers the rely on other headers
+to be included first.</p>
+<p>The module map format defines some keywords which can’t be used in module
+names. If a header has one of these names, an underscore (‘_’) will be
+prepended to the name. For example, if the header name is <tt class="docutils literal"><span class="pre">header.h</span></tt>,
+because <tt class="docutils literal"><span class="pre">header</span></tt> is a keyword, the module name will be <tt class="docutils literal"><span class="pre">_header</span></tt>.
+For a list of the module map keywords, please see:
+<a class="reference external" href="http://clang.llvm.org/docs/Modules.html#lexical-structure">Lexical structure</a></p>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="include-fixer.html">Clang-Include-Fixer</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ ::
+ <a href="ModularizeUsage.html">Modularize Usage</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/objects.inv
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/objects.inv?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/objects.inv
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/pp-trace.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/pp-trace.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/pp-trace.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/pp-trace.html Thu May 10 06:54:16 2018
@@ -0,0 +1,1484 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>pp-trace Userâs Manual — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ <link rel="next" title="Clang-Rename" href="clang-rename.html" />
+ <link rel="prev" title="Modularize Usage" href="ModularizeUsage.html" />
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>pp-trace Userâs Manual</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ « <a href="ModularizeUsage.html">Modularize Usage</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ ::
+ <a href="clang-rename.html">Clang-Rename</a> »
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <div class="section" id="pp-trace-user-s-manual">
+<span id="index-0"></span><h1>pp-trace User’s Manual<a class="headerlink" href="#pp-trace-user-s-manual" title="Permalink to this headline">¶</a></h1>
+<div class="toctree-wrapper compound">
+</div>
+<p><strong class="program">pp-trace</strong> is a standalone tool that traces preprocessor
+activity. It’s also used as a test of Clang’s PPCallbacks interface.
+It runs a given source file through the Clang preprocessor, displaying
+selected information from callback functions overridden in a
+<a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html">PPCallbacks</a>
+derivation. The output is in a high-level YAML format, described in
+<a class="reference internal" href="#outputformat"><em>pp-trace Output Format</em></a>.</p>
+<div class="section" id="pp-trace-usage">
+<span id="usage"></span><h2>pp-trace Usage<a class="headerlink" href="#pp-trace-usage" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="command-line-format">
+<h3>Command Line Format<a class="headerlink" href="#command-line-format" title="Permalink to this headline">¶</a></h3>
+<p><tt class="docutils literal"><span class="pre">pp-trace</span> <span class="pre">[<pp-trace-options>]</span> <span class="pre"><source-file></span> <span class="pre">[<front-end-options>]</span></tt></p>
+<p><tt class="docutils literal"><span class="pre"><pp-trace-options></span></tt> is a place-holder for options
+specific to pp-trace, which are described below in
+<a class="reference internal" href="#commandlineoptions"><em>Command Line Options</em></a>.</p>
+<p><tt class="docutils literal"><span class="pre"><source-file></span></tt> specifies the source file to run through the preprocessor.</p>
+<p><tt class="docutils literal"><span class="pre"><front-end-options></span></tt> is a place-holder for regular
+<a class="reference external" href="http://clang.llvm.org/docs/UsersManual.html#command-line-options">Clang Compiler Options</a>,
+which must follow the <source-file>.</p>
+</div>
+<div class="section" id="command-line-options">
+<span id="commandlineoptions"></span><h3>Command Line Options<a class="headerlink" href="#command-line-options" title="Permalink to this headline">¶</a></h3>
+<dl class="option">
+<dt id="cmdoption-ignore">
+<tt class="descname">-ignore</tt><tt class="descclassname"> <callback-name-list></tt><a class="headerlink" href="#cmdoption-ignore" title="Permalink to this definition">¶</a></dt>
+<dd><p>This option specifies a comma-separated list of names of callbacks
+that shouldn’t be traced. It can be used to eliminate unwanted
+trace output. The callback names are the name of the actual
+callback function names in the PPCallbacks class:</p>
+<ul class="simple">
+<li>FileChanged</li>
+<li>FileSkipped</li>
+<li>FileNotFound</li>
+<li>InclusionDirective</li>
+<li>moduleImport</li>
+<li>EndOfMainFile</li>
+<li>Ident</li>
+<li>PragmaDirective</li>
+<li>PragmaComment</li>
+<li>PragmaDetectMismatch</li>
+<li>PragmaDebug</li>
+<li>PragmaMessage</li>
+<li>PragmaDiagnosticPush</li>
+<li>PragmaDiagnosticPop</li>
+<li>PragmaDiagnostic</li>
+<li>PragmaOpenCLExtension</li>
+<li>PragmaWarning</li>
+<li>PragmaWarningPush</li>
+<li>PragmaWarningPop</li>
+<li>MacroExpands</li>
+<li>MacroDefined</li>
+<li>MacroUndefined</li>
+<li>Defined</li>
+<li>SourceRangeSkipped</li>
+<li>If</li>
+<li>Elif</li>
+<li>Ifdef</li>
+<li>Ifndef</li>
+<li>Else</li>
+<li>Endif</li>
+</ul>
+</dd></dl>
+
+<dl class="option">
+<dt id="cmdoption-output">
+<tt class="descname">-output</tt><tt class="descclassname"> <output-file></tt><a class="headerlink" href="#cmdoption-output" title="Permalink to this definition">¶</a></dt>
+<dd><p>By default, pp-trace outputs the trace information to stdout. Use this
+option to output the trace information to a file.</p>
+</dd></dl>
+
+</div>
+</div>
+<div class="section" id="pp-trace-output-format">
+<span id="outputformat"></span><h2>pp-trace Output Format<a class="headerlink" href="#pp-trace-output-format" title="Permalink to this headline">¶</a></h2>
+<p>The pp-trace output is formatted as YAML. See <a class="reference external" href="http://yaml.org/">http://yaml.org/</a> for general
+YAML information. It’s arranged as a sequence of information about the
+callback call, including the callback name and argument information, for
+example::</p>
+<div class="highlight-python"><pre>---
+- Callback: Name
+ Argument1: Value1
+ Argument2: Value2
+(etc.)
+...</pre>
+</div>
+<p>With real data::</p>
+<div class="highlight-python"><pre>---
+- Callback: FileChanged
+ Loc: "c:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-include.cpp:1:1"
+ Reason: EnterFile
+ FileType: C_User
+ PrevFID: (invalid)
+ (etc.)
+- Callback: FileChanged
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-include.cpp:5:1"
+ Reason: ExitFile
+ FileType: C_User
+ PrevFID: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/Input/Level1B.h"
+- Callback: EndOfMainFile
+...</pre>
+</div>
+<p>In all but one case (MacroDirective) the “Argument” scalars have the same
+name as the argument in the corresponding PPCallbacks callback function.</p>
+<div class="section" id="callback-details">
+<h3>Callback Details<a class="headerlink" href="#callback-details" title="Permalink to this headline">¶</a></h3>
+<p>The following sections describe the pupose and output format for each callback.</p>
+<p>Click on the callback name in the section heading to see the Doxygen
+documentation for the callback.</p>
+<p>The argument descriptions table describes the callback argument information
+displayed.</p>
+<p>The Argument Name field in most (but not all) cases is the same name as the
+callback function parameter.</p>
+<p>The Argument Value Syntax field describes the values that will be displayed
+for the argument value. It uses an ad hoc representation that mixes literal
+and symbolic representations. Enumeration member symbols are shown as the
+actual enum member in a (member1|member2|...) form. A name in parentheses
+can either represent a place holder for the described value, or confusingly,
+it might be a literal, such as (null), for a null pointer.
+Locations are shown as quoted only to avoid confusing the documentation generator.</p>
+<p>The Clang C++ Type field is the type from the callback function declaration.</p>
+<p>The description describes the argument or what is displayed for it.</p>
+<p>Note that in some cases, such as when a structure pointer is an argument
+value, only some key member or members are shown to represent the value,
+instead of trying to display all members of the structure.</p>
+<div class="section" id="filechanged-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a7cc8cfaf34114fc65e92af621cd6464e">FileChanged</a> Callback<a class="headerlink" href="#filechanged-callback" title="Permalink to this headline">¶</a></h4>
+<p>FileChanged is called when the preprocessor enters or exits a file, both the
+top level file being compiled, as well as any #include directives. It will
+also be called as a result of a system header pragma or in internal renaming
+of a file.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Reason</td>
+<td>(EnterFile|ExitFile|SystemHeaderPragma|RenameFile)</td>
+<td>PPCallbacks::FileChangeReason</td>
+<td>Reason for change.</td>
+</tr>
+<tr class="row-even"><td>FileType</td>
+<td>(C_User|C_System|C_ExternCSystem)</td>
+<td>SrcMgr::CharacteristicKind</td>
+<td>Include type.</td>
+</tr>
+<tr class="row-odd"><td>PrevFID</td>
+<td>((file)|(invalid))</td>
+<td>FileID</td>
+<td>Previous file, if any.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: FileChanged
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-include.cpp:1:1"
+ Reason: EnterFile
+ FileType: C_User
+ PrevFID: (invalid)</pre>
+</div>
+</div>
+<div class="section" id="fileskipped-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ab5b338a0670188eb05fa7685bbfb5128">FileSkipped</a> Callback<a class="headerlink" href="#fileskipped-callback" title="Permalink to this headline">¶</a></h4>
+<p>FileSkipped is called when a source file is skipped as the result of header
+guard optimization.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="33%" />
+<col width="20%" />
+<col width="37%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ParentFile</td>
+<td>(“(file)” or (null))</td>
+<td>const FileEntry</td>
+<td>The file that #included the skipped file.</td>
+</tr>
+<tr class="row-odd"><td>FilenameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The token in ParentFile that indicates the skipped file.</td>
+</tr>
+<tr class="row-even"><td>FileType</td>
+<td>(C_User|C_System|C_ExternCSystem)</td>
+<td>SrcMgr::CharacteristicKind</td>
+<td>The file type.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: FileSkipped
+ ParentFile: "/path/filename.h"
+ FilenameTok: "filename.h"
+ FileType: C_User</pre>
+</div>
+</div>
+<div class="section" id="filenotfound-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a3045151545f987256bfa8d978916ef00">FileNotFound</a> Callback<a class="headerlink" href="#filenotfound-callback" title="Permalink to this headline">¶</a></h4>
+<p>FileNotFound is called when an inclusion directive results in a file-not-found error.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="6%" />
+<col width="22%" />
+<col width="13%" />
+<col width="59%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>FileName</td>
+<td>“(file)”</td>
+<td>StringRef</td>
+<td>The name of the file being included, as written in the source code.</td>
+</tr>
+<tr class="row-odd"><td>RecoveryPath</td>
+<td>(path)</td>
+<td>SmallVectorImpl<char></td>
+<td>If this client indicates that it can recover from this missing file, the client should set this as an additional header search patch.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: FileNotFound
+ FileName: "/path/filename.h"
+ RecoveryPath:</pre>
+</div>
+</div>
+<div class="section" id="inclusiondirective-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a557d9738c329793513a6f57d6b60de52">InclusionDirective</a> Callback<a class="headerlink" href="#inclusiondirective-callback" title="Permalink to this headline">¶</a></h4>
+<p>InclusionDirective is called when an inclusion directive of any kind (#include</code>, #import</code>, etc.) has been processed, regardless of whether the inclusion will actually result in an inclusion.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="7%" />
+<col width="25%" />
+<col width="15%" />
+<col width="53%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>HashLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the ‘#’ that starts the inclusion directive.</td>
+</tr>
+<tr class="row-odd"><td>IncludeTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The token that indicates the kind of inclusion directive, e.g., ‘include’ or ‘import’.</td>
+</tr>
+<tr class="row-even"><td>FileName</td>
+<td>“(file)”</td>
+<td>StringRef</td>
+<td>The name of the file being included, as written in the source code.</td>
+</tr>
+<tr class="row-odd"><td>IsAngled</td>
+<td>(true|false)</td>
+<td>bool</td>
+<td>Whether the file name was enclosed in angle brackets; otherwise, it was enclosed in quotes.</td>
+</tr>
+<tr class="row-even"><td>FilenameRange</td>
+<td>“(file)”</td>
+<td>CharSourceRange</td>
+<td>The character range of the quotes or angle brackets for the written file name.</td>
+</tr>
+<tr class="row-odd"><td>File</td>
+<td>“(file)”</td>
+<td>const FileEntry</td>
+<td>The actual file that may be included by this inclusion directive.</td>
+</tr>
+<tr class="row-even"><td>SearchPath</td>
+<td>“(path)”</td>
+<td>StringRef</td>
+<td>Contains the search path which was used to find the file in the file system.</td>
+</tr>
+<tr class="row-odd"><td>RelativePath</td>
+<td>“(path)”</td>
+<td>StringRef</td>
+<td>The path relative to SearchPath, at which the include file was found.</td>
+</tr>
+<tr class="row-even"><td>Imported</td>
+<td>((module name)|(null))</td>
+<td>const Module</td>
+<td>The module, whenever an inclusion directive was automatically turned into a module import or null otherwise.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: InclusionDirective
+ IncludeTok: include
+ FileName: "Input/Level1B.h"
+ IsAngled: false
+ FilenameRange: "Input/Level1B.h"
+ File: "D:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace/Input/Level1B.h"
+ SearchPath: "D:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace"
+ RelativePath: "Input/Level1B.h"
+ Imported: (null)</pre>
+</div>
+</div>
+<div class="section" id="moduleimport-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#af32dcf1b8b7c179c7fcd3e24e89830fe">moduleImport</a> Callback<a class="headerlink" href="#moduleimport-callback" title="Permalink to this headline">¶</a></h4>
+<p>moduleImport is called when there was an explicit module-import syntax.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="33%" />
+<col width="20%" />
+<col width="39%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>ImportLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of import directive token.</td>
+</tr>
+<tr class="row-odd"><td>Path</td>
+<td>“(path)”</td>
+<td>ModuleIdPath</td>
+<td>The identifiers (and their locations) of the module “path”.</td>
+</tr>
+<tr class="row-even"><td>Imported</td>
+<td>((module name)|(null))</td>
+<td>const Module</td>
+<td>The imported module; can be null if importing failed.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: moduleImport
+ ImportLoc: "d:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-modules.cpp:4:2"
+ Path: [{Name: Level1B, Loc: "d:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace/pp-trace-modules.cpp:4:9"}, {Name: Level2B, Loc: "d:/Clang/llvmnewmod/tools/clang/tools/extra/test/pp-trace/pp-trace-modules.cpp:4:17"}]
+ Imported: Level2B</pre>
+</div>
+</div>
+<div class="section" id="endofmainfile-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a63e170d069e99bc1c9c7ea0f3bed8bcc">EndOfMainFile</a> Callback<a class="headerlink" href="#endofmainfile-callback" title="Permalink to this headline">¶</a></h4>
+<p>EndOfMainFile is called when the end of the main file is reached.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="12%" />
+<col width="43%" />
+<col width="26%" />
+<col width="19%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>(no arguments)</td>
+<td> </td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: EndOfMainFile</pre>
+</div>
+</div>
+<div class="section" id="ident-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a3683f1d1fa513e9b6193d446a5cc2b66">Ident</a> Callback<a class="headerlink" href="#ident-callback" title="Permalink to this headline">¶</a></h4>
+<p>Ident is called when a #ident or #sccs directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>str</td>
+<td>(name)</td>
+<td>const std::string</td>
+<td>The text of the directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Ident
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-ident.cpp:3:1"
+ str: "$Id$"</pre>
+</div>
+</div>
+<div class="section" id="pragmadirective-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a0a2d7a72c62184b3cbde31fb62c6f2f7">PragmaDirective</a> Callback<a class="headerlink" href="#pragmadirective-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaDirective is called when start reading any pragma directive.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="39%" />
+<col width="24%" />
+<col width="26%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Introducer</td>
+<td>(PIK_HashPragma|PIK__Pragma|PIK___pragma)</td>
+<td>PragmaIntroducerKind</td>
+<td>The type of the pragma directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaDirective
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Introducer: PIK_HashPragma</pre>
+</div>
+</div>
+<div class="section" id="pragmacomment-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ace0d940fc2c12ab76441466aab58dc37">PragmaComment</a> Callback<a class="headerlink" href="#pragmacomment-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaComment is called when a #pragma comment directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Kind</td>
+<td>((name)|(null))</td>
+<td>const IdentifierInfo</td>
+<td>The comment kind symbol.</td>
+</tr>
+<tr class="row-even"><td>Str</td>
+<td>(message directive)</td>
+<td>const std::string</td>
+<td>The comment message directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaComment
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Kind: library
+ Str: kernel32.lib</pre>
+</div>
+</div>
+<div class="section" id="pragmadetectmismatch-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ab11158c9149fb8ad8af1903f4a6cd65d">PragmaDetectMismatch</a> Callback<a class="headerlink" href="#pragmadetectmismatch-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaDetectMismatch is called when a #pragma detect_mismatch directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Name</td>
+<td>“(name)”</td>
+<td>const std::string</td>
+<td>The name.</td>
+</tr>
+<tr class="row-even"><td>Value</td>
+<td>(string)</td>
+<td>const std::string</td>
+<td>The value.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaDetectMismatch
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Name: name
+ Value: value</pre>
+</div>
+</div>
+<div class="section" id="pragmadebug-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a57cdccb6dcc07e926513ac3d5b121466">PragmaDebug</a> Callback<a class="headerlink" href="#pragmadebug-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaDebug is called when a #pragma clang __debug directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="25%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>DebugType</td>
+<td>(string)</td>
+<td>StringRef</td>
+<td>Indicates type of debug message.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaDebug
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ DebugType: warning</pre>
+</div>
+</div>
+<div class="section" id="pragmamessage-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#abb42935d9a9fd8e2c4f51cfdc4ea2ae1">PragmaMessage</a> Callback<a class="headerlink" href="#pragmamessage-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaMessage is called when a #pragma message directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="38%" />
+<col width="23%" />
+<col width="29%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Namespace</td>
+<td>(name)</td>
+<td>StringRef</td>
+<td>The namespace of the message directive.</td>
+</tr>
+<tr class="row-even"><td>Kind</td>
+<td>(PMK_Message|PMK_Warning|PMK_Error)</td>
+<td>PPCallbacks::PragmaMessageKind</td>
+<td>The type of the message directive.</td>
+</tr>
+<tr class="row-odd"><td>Str</td>
+<td>(string)</td>
+<td>StringRef</td>
+<td>The text of the message directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaMessage
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Namespace: "GCC"
+ Kind: PMK_Message
+ Str: The message text.</pre>
+</div>
+</div>
+<div class="section" id="pragmadiagnosticpush-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a0f3ff19762baa38fe6c5c58022d32979">PragmaDiagnosticPush</a> Callback<a class="headerlink" href="#pragmadiagnosticpush-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaDiagnosticPush is called when a #pragma gcc dianostic push directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Namespace</td>
+<td>(name)</td>
+<td>StringRef</td>
+<td>Namespace name.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaDiagnosticPush
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Namespace: "GCC"</pre>
+</div>
+</div>
+<div class="section" id="pragmadiagnosticpop-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ac94d789873122221fba8d76f6c5ea45e">PragmaDiagnosticPop</a> Callback<a class="headerlink" href="#pragmadiagnosticpop-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaDiagnosticPop is called when a #pragma gcc dianostic pop directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Namespace</td>
+<td>(name)</td>
+<td>StringRef</td>
+<td>Namespace name.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaDiagnosticPop
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Namespace: "GCC"</pre>
+</div>
+</div>
+<div class="section" id="pragmadiagnostic-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#afe7938f38a83cb7b4b25a13edfdd7bdd">PragmaDiagnostic</a> Callback<a class="headerlink" href="#pragmadiagnostic-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaDiagnostic is called when a #pragma gcc dianostic directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Namespace</td>
+<td>(name)</td>
+<td>StringRef</td>
+<td>Namespace name.</td>
+</tr>
+<tr class="row-even"><td>mapping</td>
+<td>(0|MAP_IGNORE|MAP_WARNING|MAP_ERROR|MAP_FATAL)</td>
+<td>diag::Severity</td>
+<td>Mapping type.</td>
+</tr>
+<tr class="row-odd"><td>Str</td>
+<td>(string)</td>
+<td>StringRef</td>
+<td>Warning/error name.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaDiagnostic
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Namespace: "GCC"
+ mapping: MAP_WARNING
+ Str: WarningName</pre>
+</div>
+</div>
+<div class="section" id="pragmaopenclextension-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a92a20a21fadbab4e2c788f4e27fe07e7">PragmaOpenCLExtension</a> Callback<a class="headerlink" href="#pragmaopenclextension-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaOpenCLExtension is called when OpenCL extension is either disabled or enabled with a pragma.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="12%" />
+<col width="42%" />
+<col width="25%" />
+<col width="22%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>NameLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the name.</td>
+</tr>
+<tr class="row-odd"><td>Name</td>
+<td>(name)</td>
+<td>const IdentifierInfo</td>
+<td>Name symbol.</td>
+</tr>
+<tr class="row-even"><td>StateLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the state.</td>
+</tr>
+<tr class="row-odd"><td>State</td>
+<td>(1|0)</td>
+<td>unsigned</td>
+<td>Enabled/disabled state.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaOpenCLExtension
+ NameLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:10"
+ Name: Name
+ StateLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:18"
+ State: 1</pre>
+</div>
+</div>
+<div class="section" id="pragmawarning-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#aa17169d25fa1cf0a6992fc944d1d8730">PragmaWarning</a> Callback<a class="headerlink" href="#pragmawarning-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaWarning is called when a #pragma warning directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>WarningSpec</td>
+<td>(string)</td>
+<td>StringRef</td>
+<td>The warning specifier.</td>
+</tr>
+<tr class="row-even"><td>Ids</td>
+<td>[(number)[, ...]]</td>
+<td>ArrayRef<int></td>
+<td>The warning numbers.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaWarning
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ WarningSpec: disable
+ Ids: 1,2,3</pre>
+</div>
+</div>
+<div class="section" id="pragmawarningpush-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ae5626ef70502687a859f323a809ed0b6">PragmaWarningPush</a> Callback<a class="headerlink" href="#pragmawarningpush-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaWarningPush is called when a #pragma warning(push) directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>Level</td>
+<td>(number)</td>
+<td>int</td>
+<td>Warning level.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaWarningPush
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"
+ Level: 1</pre>
+</div>
+</div>
+<div class="section" id="pragmawarningpop-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ac98d502af8811b8a6e7342d7cd2b3b95">PragmaWarningPop</a> Callback<a class="headerlink" href="#pragmawarningpop-callback" title="Permalink to this headline">¶</a></h4>
+<p>PragmaWarningPop is called when a #pragma warning(pop) directive is read.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="40%" />
+<col width="24%" />
+<col width="24%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: PragmaWarningPop
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-pragma.cpp:3:1"</pre>
+</div>
+</div>
+<div class="section" id="macroexpands-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a9bc725209d3a071ea649144ab996d515">MacroExpands</a> Callback<a class="headerlink" href="#macroexpands-callback" title="Permalink to this headline">¶</a></h4>
+<p>MacroExpands is called when ::HandleMacroExpandedIdentifier when a macro invocation is found.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="7%" />
+<col width="26%" />
+<col width="15%" />
+<col width="52%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MacroNameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The macro name token.</td>
+</tr>
+<tr class="row-odd"><td>MacroDirective</td>
+<td>(MD_Define|MD_Undefine|MD_Visibility)</td>
+<td>const MacroDirective</td>
+<td>The kind of macro directive from the MacroDirective structure.</td>
+</tr>
+<tr class="row-even"><td>Range</td>
+<td>[“(file):(line):(col)”, “(file):(line):(col)”]</td>
+<td>SourceRange</td>
+<td>The source range for the expansion.</td>
+</tr>
+<tr class="row-odd"><td>Args</td>
+<td>[(name)|(number)|<(token name)>[, ...]]</td>
+<td>const MacroArgs</td>
+<td>The argument tokens. Names and numbers are literal, everything else is of the form ‘<’ tokenName ‘>’.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: MacroExpands
+ MacroNameTok: X_IMPL
+ MacroDirective: MD_Define
+ Range: [(nonfile), (nonfile)]
+ Args: [a <plus> y, b]</pre>
+</div>
+</div>
+<div class="section" id="macrodefined-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a8448fc9f96f22ad1b93ff393cffc5a76">MacroDefined</a> Callback<a class="headerlink" href="#macrodefined-callback" title="Permalink to this headline">¶</a></h4>
+<p>MacroDefined is called when a macro definition is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="32%" />
+<col width="19%" />
+<col width="40%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MacroNameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The macro name token.</td>
+</tr>
+<tr class="row-odd"><td>MacroDirective</td>
+<td>(MD_Define|MD_Undefine|MD_Visibility)</td>
+<td>const MacroDirective</td>
+<td>The kind of macro directive from the MacroDirective structure.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: MacroDefined
+ MacroNameTok: X_IMPL
+ MacroDirective: MD_Define</pre>
+</div>
+</div>
+<div class="section" id="macroundefined-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#acb80fc6171a839db8e290945bf2c9d7a">MacroUndefined</a> Callback<a class="headerlink" href="#macroundefined-callback" title="Permalink to this headline">¶</a></h4>
+<p>MacroUndefined is called when a macro #undef is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="32%" />
+<col width="19%" />
+<col width="40%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MacroNameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The macro name token.</td>
+</tr>
+<tr class="row-odd"><td>MacroDirective</td>
+<td>(MD_Define|MD_Undefine|MD_Visibility)</td>
+<td>const MacroDirective</td>
+<td>The kind of macro directive from the MacroDirective structure.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: MacroUndefined
+ MacroNameTok: X_IMPL
+ MacroDirective: MD_Define</pre>
+</div>
+</div>
+<div class="section" id="defined-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a3cc2a644533d0e4088a13d2baf90db94">Defined</a> Callback<a class="headerlink" href="#defined-callback" title="Permalink to this headline">¶</a></h4>
+<p>Defined is called when the ‘defined’ operator is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="32%" />
+<col width="19%" />
+<col width="40%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>MacroNameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The macro name token.</td>
+</tr>
+<tr class="row-odd"><td>MacroDirective</td>
+<td>(MD_Define|MD_Undefine|MD_Visibility)</td>
+<td>const MacroDirective</td>
+<td>The kind of macro directive from the MacroDirective structure.</td>
+</tr>
+<tr class="row-even"><td>Range</td>
+<td>[“(file):(line):(col)”, “(file):(line):(col)”]</td>
+<td>SourceRange</td>
+<td>The source range for the directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Defined
+ MacroNameTok: MACRO
+ MacroDirective: (null)
+ Range: ["D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:5", "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:19"]</pre>
+</div>
+</div>
+<div class="section" id="sourcerangeskipped-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#abdb4ebe11610f079ac33515965794b46">SourceRangeSkipped</a> Callback<a class="headerlink" href="#sourcerangeskipped-callback" title="Permalink to this headline">¶</a></h4>
+<p>SourceRangeSkipped is called when a source range is skipped.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="12%" />
+<col width="42%" />
+<col width="25%" />
+<col width="21%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Range</td>
+<td>[“(file):(line):(col)”, “(file):(line):(col)”]</td>
+<td>SourceRange</td>
+<td>The source range skipped.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: SourceRangeSkipped
+ Range: [":/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2", ":/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:9:2"]</pre>
+</div>
+</div>
+<div class="section" id="if-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a645edcb0d6becbc6f256f02fd1287778">If</a> Callback<a class="headerlink" href="#if-callback" title="Permalink to this headline">¶</a></h4>
+<p>If is called when an #if is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="39%" />
+<col width="23%" />
+<col width="27%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>ConditionRange</td>
+<td>[“(file):(line):(col)”, “(file):(line):(col)”]</td>
+<td>SourceRange</td>
+<td>The source range for the condition.</td>
+</tr>
+<tr class="row-even"><td>ConditionValue</td>
+<td>(true|false)</td>
+<td>bool</td>
+<td>The condition value.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: If
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"
+ ConditionRange: ["D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:4", "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:9:1"]
+ ConditionValue: false</pre>
+</div>
+</div>
+<div class="section" id="elif-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a180c9e106a28d60a6112e16b1bb8302a">Elif</a> Callback<a class="headerlink" href="#elif-callback" title="Permalink to this headline">¶</a></h4>
+<p>Elif is called when an #elif is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="39%" />
+<col width="23%" />
+<col width="27%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>ConditionRange</td>
+<td>[“(file):(line):(col)”, “(file):(line):(col)”]</td>
+<td>SourceRange</td>
+<td>The source range for the condition.</td>
+</tr>
+<tr class="row-even"><td>ConditionValue</td>
+<td>(true|false)</td>
+<td>bool</td>
+<td>The condition value.</td>
+</tr>
+<tr class="row-odd"><td>IfLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Elif
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:2"
+ ConditionRange: ["D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:4", "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:11:1"]
+ ConditionValue: false
+ IfLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"</pre>
+</div>
+</div>
+<div class="section" id="ifdef-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a0ce79575dda307784fd51a6dd4eec33d">Ifdef</a> Callback<a class="headerlink" href="#ifdef-callback" title="Permalink to this headline">¶</a></h4>
+<p>Ifdef is called when an #ifdef is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="32%" />
+<col width="19%" />
+<col width="40%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>MacroNameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The macro name token.</td>
+</tr>
+<tr class="row-even"><td>MacroDirective</td>
+<td>(MD_Define|MD_Undefine|MD_Visibility)</td>
+<td>const MacroDirective</td>
+<td>The kind of macro directive from the MacroDirective structure.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Ifdef
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-conditional.cpp:3:1"
+ MacroNameTok: MACRO
+ MacroDirective: MD_Define</pre>
+</div>
+</div>
+<div class="section" id="ifndef-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#a767af69f1cdcc4cd880fa2ebf77ad3ad">Ifndef</a> Callback<a class="headerlink" href="#ifndef-callback" title="Permalink to this headline">¶</a></h4>
+<p>Ifndef is called when an #ifndef is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="9%" />
+<col width="32%" />
+<col width="19%" />
+<col width="40%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the directive.</td>
+</tr>
+<tr class="row-odd"><td>MacroNameTok</td>
+<td>(token)</td>
+<td>const Token</td>
+<td>The macro name token.</td>
+</tr>
+<tr class="row-even"><td>MacroDirective</td>
+<td>(MD_Define|MD_Undefine|MD_Visibility)</td>
+<td>const MacroDirective</td>
+<td>The kind of macro directive from the MacroDirective structure.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Ifndef
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-conditional.cpp:3:1"
+ MacroNameTok: MACRO
+ MacroDirective: MD_Define</pre>
+</div>
+</div>
+<div class="section" id="else-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#ad57f91b6d9c3cbcca326a2bfb49e0314">Else</a> Callback<a class="headerlink" href="#else-callback" title="Permalink to this headline">¶</a></h4>
+<p>Else is called when an #else is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="39%" />
+<col width="23%" />
+<col width="27%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the else directive.</td>
+</tr>
+<tr class="row-odd"><td>IfLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the if directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Else
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:2"
+ IfLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"</pre>
+</div>
+</div>
+<div class="section" id="endif-callback">
+<h4><a class="reference external" href="http://clang.llvm.org/doxygen/classclang_1_1PPCallbacks.html#afc62ca1401125f516d58b1629a2093ce">Endif</a> Callback<a class="headerlink" href="#endif-callback" title="Permalink to this headline">¶</a></h4>
+<p>Endif is called when an #endif is seen.</p>
+<p>Argument descriptions:</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="11%" />
+<col width="38%" />
+<col width="23%" />
+<col width="28%" />
+</colgroup>
+<thead valign="bottom">
+<tr class="row-odd"><th class="head">Argument Name</th>
+<th class="head">Argument Value Syntax</th>
+<th class="head">Clang C++ Type</th>
+<th class="head">Description</th>
+</tr>
+</thead>
+<tbody valign="top">
+<tr class="row-even"><td>Loc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the endif directive.</td>
+</tr>
+<tr class="row-odd"><td>IfLoc</td>
+<td>“(file):(line):(col)”</td>
+<td>SourceLocation</td>
+<td>The location of the if directive.</td>
+</tr>
+</tbody>
+</table>
+<p>Example::</p>
+<div class="highlight-python"><pre>- Callback: Endif
+ Loc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:10:2"
+ IfLoc: "D:/Clang/llvm/tools/clang/tools/extra/test/pp-trace/pp-trace-macro.cpp:8:2"</pre>
+</div>
+</div>
+</div>
+</div>
+<div class="section" id="building-pp-trace">
+<h2>Building pp-trace<a class="headerlink" href="#building-pp-trace" title="Permalink to this headline">¶</a></h2>
+<p>To build from source:</p>
+<ol class="arabic simple">
+<li>Read <a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting Started with the LLVM System</a> and <a class="reference external" href="http://clang.llvm.org/docs/ClangTools.html">Clang Tools
+Documentation</a> for information on getting sources for LLVM, Clang, and
+Clang Extra Tools.</li>
+<li><a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting Started with the LLVM System</a> and <a class="reference external" href="http://llvm.org/docs/CMake.html">Building LLVM with CMake</a> give
+directions for how to build. With sources all checked out into the
+right place the LLVM build will build Clang Extra Tools and their
+dependencies automatically.<ul>
+<li>If using CMake, you can also use the <tt class="docutils literal"><span class="pre">pp-trace</span></tt> target to build
+just the pp-trace tool and its dependencies.</li>
+</ul>
+</li>
+</ol>
+</div>
+</div>
+
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ « <a href="ModularizeUsage.html">Modularize Usage</a>
+ ::
+ <a class="uplink" href="index.html">Contents</a>
+ ::
+ <a href="clang-rename.html">Clang-Rename</a> »
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/search.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/search.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/search.html (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/search.html Thu May 10 06:54:16 2018
@@ -0,0 +1,92 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Search — Extra Clang Tools 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/haiku.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+ <link rel="stylesheet" href="_static/print.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
+ <script type="text/javascript" src="_static/searchtools.js"></script>
+ <script type="text/javascript" src="_static/theme_extras.js"></script>
+ <link rel="top" title="Extra Clang Tools 5 documentation" href="index.html" />
+ <script type="text/javascript">
+ jQuery(function() { Search.loadIndex("searchindex.js"); });
+ </script>
+
+
+ </head>
+ <body>
+ <div class="header"><h1 class="heading"><a href="index.html">
+ <span>Extra Clang Tools 5 documentation</span></a></h1>
+ <h2 class="heading"><span>Search</span></h2>
+ </div>
+ <div class="topnav">
+
+ <p>
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+ <div class="content">
+
+
+ <h1 id="search-documentation">Search</h1>
+ <div id="fallback" class="admonition warning">
+ <script type="text/javascript">$('#fallback').hide();</script>
+ <p>
+ Please activate JavaScript to enable the search
+ functionality.
+ </p>
+ </div>
+ <p>
+ From here you can search these documents. Enter your search
+ words into the box below and click "search". Note that the search
+ function will automatically search for all of the words. Pages
+ containing fewer words won't appear in the result list.
+ </p>
+ <form action="" method="get">
+ <input type="text" name="q" value="" />
+ <input type="submit" value="search" />
+ <span id="search-progress" style="padding-left: 10px"></span>
+ </form>
+
+ <div id="search-results">
+
+ </div>
+
+ </div>
+ <div class="bottomnav">
+
+ <p>
+ <a class="uplink" href="index.html">Contents</a>
+ </p>
+
+ </div>
+
+ <div class="footer">
+ © Copyright 2007-2018, The Clang Team.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/searchindex.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/searchindex.js?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/searchindex.js (added)
+++ www-releases/trunk/5.0.2/tools/clang/tools/extra/docs/searchindex.js Thu May 10 06:54:16 2018
@@ -0,0 +1 @@
+Search.setIndex({objects:{"":{"-problem-files-list":[83,0,1,"cmdoption-problem-files-list"],"-ignore":[163,0,1,"cmdoption-ignore"],"-block-check-header-list-only":[83,0,1,"cmdoption-block-check-header-list-only"],"-prefix":[83,0,1,"cmdoption-prefix"],"-display-file-lists":[83,0,1,"cmdoption-display-file-lists"],"-no-coverage-check":[83,0,1,"cmdoption-no-coverage-check"],"-module-map-path":[83,0,1,"cmdoption-module-map-path"],"-root-module":[83,0,1,"cmdoption-root-module"],"-output":[163,0,1,"cmdoption-output"],"-coverage-check-only":[83,0,1,"cmdoption-coverage-check-only"]}},terms:{poorli:28,prefix:[42,22,12,83,142,9,120,188,105],forget:[146,96,123],whose:17,integer_typ:42,"const":[123,133,122,54,5,60,8,10,105,107,15,161,51,163,167,21,117,80,146,24,173,77,124,79,176,29,178,120,81,127,38,145,184,87,92,41,90],swap:[168,86,79,177,70],under:[28,22,120],preprocess:28,spec:136,scoped_lock:34,idomat:58,everi:[0,22,120,185,40,160],risk:[183,29,161],"void":[43,94,137,184,60,54,55,136,8,10,105,15,158,159,16,51,19,70,167,75,119,76,146,120,77,25,124,79,178,31,81,82,182,39,185],clangtidymodul:120,clangtidytest:120,isangl:163,affect:[77,120,6,161],strcmpi:26,myptrtyp:15,vector:[161,146,0,166,35,186,99,2,79,132,176],verif:115,ast_match:120,initialis:97,unordered_multimap:[146,0],direct:[163,0,22,12,50,120,108,124,28,60],second:[17,49,146,2],aggreg:8,registercheck:120,even:[13,146,38,0,120],asin:179,hide:[54,35,162,16,64],neg:[183,13,120],err58:[89,79],err52:[141,79],importloc:163,elimin:[163,147],manipul:[3,107,35,153,79],submodule1:28,submodule2:28,never:[85,55,114],here:[123,2,5,58,62,106,161,17,162,19,170,120,28,81,35,126,24,142,88,93,187,189,172],"_strnicmp":26,undef:163,studio:162,path:[60,163,22,6,83,120,109,28,24],interpret:183,precis:[40,146,120,96],bitmask:88,portabl:48,map_warn:163,clangtidymain:120,characteristickind:163,strai:17,printf:55,txt:28,unit:[22,105,87,120,185,6,133],highli:6,describ:[35,163,83,0,120],would:[161,162,0,22,65,184,165,138,50,39,51,99,178,121,122,25,5,57,120],kernel32:163,call:[0,161,138,26,51,98,99,54,55,3,141,6,60,146,10,150,143,156,67,17,162,69,113,70,184,118,80,119,171,120,121,122,124,177,22,81,34,187,35,128,37,39,179,86,163,90],typo:[43,49,22],recommend:[183,145,120,25,59,6,109],get_ptr:124,type:[42,44,94,0,128,97,51,96,53,54,163,57,5,6,26,7,8,147,39,184,151,92,166,99,14,58,16,155,110,162,69,115,80,146,171,120,121,173,122,50,124,79,28,176,30,178,31,33,34,127,35,81,38,145,63,179,88,40,60,90],tell:83,relat:[10,120],warn:[43,94,97,52,2,54,56,26,183,8,184,5,105,153,60,158,16,17,51,163,166,167,117,73,80,76,146,120,122,50,28,176,177,81,127,35,179,123,96,145,39,87,185,88,131,132,90],exce:[106,96],macrodirect:163,loss:[40,96],explicitconstructorcheck:120,hold:60,must:[7,163,83,152,120,52],constrefer:184,word:0,setup:[61,22,6,120],work:[7,8,22,61,35,83,64,120,25,6,185],wors:13,verbos:99,root:[83,28,22],could:[162,156,0,167,49,99,53,54,131,5],overrid:[181,119,23,120,158,79],phabric:120,dtor:120,c145:119,give:[183,163,28,6,88],indic:[61,17,163,131],impair:0,liter:[110,67,8,69,164,58,35,70,123,177,1,44,107,24,163,182,79,16,120],want:[8,22,127,96,146,120,2,6,60],unsign:[42,163,19,70,123,120,88],end:[161,17,163,147,0,126,34,73,75,39,52,2,40,83,79,28],pragmadiagnosticpop:163,quot:[163,24],str2:[183,105],str1:183,how:[60,61,163,22,28,6,25,16,120],sever:[163,120],verifi:[10,115,94,120],config:120,collaps:39,dialect:16,open64:[35,165],openat:[35,165],after:[123,99,6,146,106,186,107,15,161,116,80,120,25,124,79,28,177,126,35,84,39,129,91],stdalign:160,befor:[60,29,43,146,160,19,70,34,116,126,120,166,99,6,2,15,89,28,59],wrong:[7,26,60,53,131,64],const_iter:0,attempt:[55,17,120,132,118],greet:146,exclud:[83,28],alias:35,maintain:[173,136,0],environ:22,enter:[34,163],exclus:146,worst:49,lambda:[55,35,79,31],order:[110,134,162,30,126,73,188,146,120,156,79,59],decl:[85,77,148,79,88],oper:[44,136,135,133,55,59,103,7,8,147,184,92,153,110,161,51,163,183,166,167,21,146,120,122,78,124,79,29,180,35,145,88,40,60,41,93],behav:[28,0],softwar:8,diagnos:[178,35,182,120,88,173],over:[161,49,120],becaus:[17,8,69,178,128,121,117,83,138,39,179,87,28,53,88,54,78,124,41,99],privileg:[57,165],systemheaderpragma:163,"37l":99,fit:[86,79],fix:[43,136,137,48,49,50,6,159,9,155,16,67,162,120,28,22,81,35,83,182,39,129,87,185,102,131,188,132],better:[10,54,120,6,109],hidden:[8,120,6,60],my_param:0,easier:[120,173,25,5,6,90],them:[42,43,162,0,22,126,35,21,83,183,51,107,120,88,159,124,147],thei:[51,43,162,22,122,34,49,117,83,138,80,146,107,58,88,77,28],expensivetocopi:51,safe:[161,51,69,0,184,128,139,99,53,173,122,5,79],trail:[9,12,105,43,142],my_ptr:[98,113],"break":[25,120,160],interrupt:25,nline:24,stdarg:160,ipsum:146,accommod:16,each:[132,161,51,163,81,83,120,122,28],debug:[163,117],side:[161,146,117,123,140,88,5,79],mean:[60,17,146,0,126,127,49,39,51,120,158,122,151,176],cppguid:[29,135,19,42,95,12,102,142,14,154,130],cppcoreguidelin:[128,30,53,46,119,35,21,38,50,139,63,129,120,156,69,92,151,79,132,155],forgot:[16,88],map_error:163,processlin:17,extract:[162,83],newli:161,content:[61,162,22,161,6,28,120],priu64:123,situat:[161,146,99,0,60],free:[91,132,31,93],standard:[45,0,48,60,141,56,58,146,62,10,152,115,118,89,120,25,33,35,145,39,160,93],identifierinfo:163,whitelisttyp:14,getvector:161,warnonlogicalnotcomparison:26,angl:163,s_other:146,filter:120,isn:[146,132,144],fd_cloexec:65,regress:99,subtl:8,confus:[54,163],rand:153,rang:[161,17,163,70,166,167,120,88,40,122,79,176],pragmadebug:163,getloc:120,system:[60,163,120,28,118],restrict:[48,120],instruct:[162,120],alreadi:[162,104,22,126,60,120],"__builtin_strcasecmp":26,rewritten:167,top:[77,163,83,22],sometim:39,master:[128,69,156,119,21,38,50,139,63,129,155,53,151],too:[167,6],memcmp:[8,26],shortstatementlin:126,chainedconditionalassign:147,my_point:0,namespac:[0,47,56,6,85,12,108,163,19,120,79,28,22,127,35,83,142,148,87,160,74,131,105],tool:[61,162,163,22,161,35,6,28,120],"0x8000":8,wchar:160,technic:5,reinterpret_cast:[63,151,0],target:[35,163,120,28],keyword:[15,8,82,28,126],provid:[132,162,136,22,155,35,50,16,182,28,120],expr:[44,79,147],"0xabcd":70,lvalu:[54,39,146,60],tree:[120,22],zero:[26,43,8,147,0,70,167,105,96,50,183,60,180,173,122,97,16,177],project:[61,185,22,6,120],matter:39,wchar_t:58,function_declarations_and_definit:154,prone:[173,146,91],uniniti:5,abov:[161,17,183,39,120,28],close:19,modern:[136,0,97,1,98,99,2,54,100,174,60,137,181,11,113,15,161,27,18,23,24,173,78,124,79,31,35,82,120,182,86,160,171,133],parenthes:[147,8,163,79,59],raw:[101,24,79],dedupl:120,seed:153,increment:[145,17,22],seen:[163,185],incompat:8,unnecessarycopy2:184,unnecessarycopy1:184,latter:[40,83,28,101],weak_ptr:146,deref:[79,94],simplifi:[183,8,79,16,147],functiontakingint:16,though:[173,146,120,0],usernam:95,glob:120,object:[98,60,53,3,58,145,8,62,4,152,143,113,156,119,146,89,120,79,28,147,29,31,34,35,37,84,132],what:[61,17,146,163,35,39,16,2,40,55,124,28,120],lexic:28,regular:[163,120,83],operator_overload:135,phase:123,everyth:163,don:[120,83,160],pointe:[8,178,0],pragmadiagnost:163,doc:[134,120,19],flow:[75,25,146,79,120],doe:[17,146,178,22,10,43,83,118,115,120,156,173,176,5,101,28,93],declar:[44,45,0,49,97,184,60,5,7,8,62,85,12,154,160,161,51,163,166,23,77,78,123,124,79,29,127,35,38,182,145,148,185,89,131,105],parentfil:163,enable_if_t:54,unchang:[124,24,120],pragma:163,opposit:147,whitelist:14,random:[35,177,79,153,2],codingstandard:[134,19],constcast:38,syntax:[76,162,163,83],rst:120,macroexpand:163,f_textless:182,bail:120,involv:[61,141,162,120,147],despit:[58,121],fill_valu:70,explain:[161,146,120],configur:[120,132,188],explicit_constructor:29,pragmawarningpop:163,num_of_end_cal:161,rich:22,folder:162,useassign:97,stop:28,rename_check:120,"new":[66,103,17,162,0,22,161,35,82,120,97,98,99,113,124,79,6,93],report:[10,6,16,102,28,120],smallvectorimpl:163,ratiothreshold:123,baz:[167,171],method:[67,162,183,120,158,127,73,50,51,184,86,99,52,130,122,187,90],twice:0,bad:77,tupletyp:[35,99],ban:151,bah:91,strncmp:26,ifdef:[163,28],datatyp:115,nul:[107,79],result:[0,26,99,3,56,143,59,146,147,186,153,16,17,163,120,173,176,178,31,81,35,96,88,40],respons:0,fail:[163,144],best:[120,60],awar:[54,161,120,2],checkfunctioncal:117,databas:[22,6,120],pragmadetectmismatch:163,posix_memalign:132,invalu:120,unordered_set:[166,146,0],warnonlargelength:177,accord:[46,16],extend:[35,6],newnam:6,were:[161,70,160,138,63,155,151,120],auto_ptr:[124,99],constexpr:[105,156],preprocessor:[123,163,120,28,59],c21:21,howev:[29,0,49,39,120,6],against:[132,120,28],includeinextern:28,filechangereason:163,logic:[8,26],fno:60,com:[128,69,156,119,21,38,50,139,63,129,155,53,151],col:163,widen:[79,96],foobar:136,push_back:[166,161,35,99,186],guid:[42,95,12,14,154,108],assum:[17,146,69,128,83,120,54,60],duplic:[171,28],my_contain:0,err34:[10,79],union:[128,79],three:[161,81,24,88],been:[161,146,163,35,49,39,129,174,176],accumul:40,trigger:[8,126,166,12,146,124,58],valu:[43,26,60,122,54,163,58,59,7,8,62,184,106,186,16,51,112,19,70,75,120,173,77,25,124,79,28,32,31,126,183,88,40,41],interest:[162,60],basic:120,quickli:83,suppress:[54,110,21,120],argument:[43,0,140,99,163,57,6,59,7,137,184,165,154,144,51,69,70,168,88,120,122,118,79,28,29,81,35,83,182,39,130,60],"catch":[112,58,32,79],emploi:[122,51],ident:[173,154,163,120],properti:153,aim:6,calcul:[96,59],depr:160,anchor:120,undeleg:[37,143,79],printabl:24,my_second_point:0,my_nul:82,sting:58,need:[44,22,49,83,50,120,2,173,28],dcl54:[66,79,93],dcl50:[45,79],dcl59:[47,79,142],dcl58:[35,56,79],moduleimport:163,incorrectli:123,perform:[60,67,51,120,161,10,167,35,179,50,166,79,184,16,2,122,151,6,28,176],suggest:[132,29,17,51,42,184,81,43,50,39,120,102,25,131,6],make:[0,51,98,60,5,144,8,184,64,113,16,161,17,162,108,146,120,25,124,79,22,34,35,90,99],transpar:[173,79],complex:[161,160,120,149],complet:[162,136,28,59],fragil:[128,69,53],raii:[34,79,132],hand:[146,88],action:6,rais:[161,17],ownership:124,handleclass:186,"2137ll":121,"_mbsnicmp_l":26,thu:[183,161,120,2],singlelin:24,pthread_mutex_t:62,client:[163,162,124],thi:[0,2,57,5,6,7,8,10,11,13,15,16,17,19,21,23,24,25,26,28,29,30,22,33,34,35,36,96,39,151,41,45,46,50,52,53,54,56,174,58,59,60,62,63,64,65,69,70,75,40,76,78,79,80,82,83,84,87,102,89,93,94,97,98,99,100,103,92,106,107,113,108,115,118,119,120,121,123,124,126,128,129,131,38,132,133,136,139,141,143,145,146,184,149,152,153,155,156,160,161,163,166,167,71,170,171,172,173,176,178,179,142,183,185,187,188],endif:163,programm:[17,8,69,177,128,13,123,76,54,16],unordered_map:[146,0],left:[146,49,50,39,60,24],identifi:[161,163,22,79,188,6],just:[161,163,58,28,120],iso646:160,explicit_make_pair:144,c_externcsystem:163,yet:[78,146,16],languag:[162,69,22,128,83,50,120,60],easi:[146,120,53],opencl:163,had:128,builtin:[0,50],todo_com:95,reiniti:[146,79],els:[146,163,147,126,10,64,25,79],save:6,opt:120,applic:[40,147,181,24,182],advis:[25,21,120],initializeobject:8,preserv:173,"_mbsnbicmp_l":26,background:[54,39,79],ineffici:[166,167,35,79,73],measur:28,specif:[17,163,0,22,35,83,114,120,188,6,136],filenam:[163,165,12,142,9,120,105,6],manual:[60,61,163,22,49,132,28,176],rvalu:[60,39,146,99,104],choic:[120,88],cplusplu:120,unnecessari:[51,147,166,35,138,150,184,99,175,79,164],underli:178,right:[43,30,31,12,128,99,88,69,163,28,120],deal:16,negat:[147,16],clang_include_fixer_maximum_suggested_head:22,intern:[105,163],signedtypeprefix:42,make_pair:[35,99,144],parameter_nam:43,registerppcallback:120,x_impl:163,multipli:8,pmk_messag:163,condit:[17,146,163,114,0,126,172,169,117,16,88,28,147],foo:[161,43,104,22,70,184,167,105,143,138,183,39,171,6,108,136,25,185,187,16,60],unordered_multiset:[146,0],core:[128,69,156,119,21,38,50,139,63,129,120,53,151,132,155],plu:163,promot:[79,179],nothrow:152,meyer:[54,99],plug:120,obj:161,slightli:[167,120],surround:59,unsav:22,"0abc":107,produc:[146,31,13,117,153,173,124,28],sometyp:28,"_strnicmp_l":26,"float":[33,13,96,179,160,121,40,79,16],encod:107,bound:[22,139,129,53,79,6],down:105,opportun:78,bool:[29,43,163,147,114,161,1,99,79,16,90],storag:50,suffici:[94,120],support:[22,35,120,6,2,78,188,28,99],includetok:163,transform:[161,27,136,0,82,1,171,99,18,173,147,25,132,60],avail:[22,86,120,108,2,188,6],reli:[128,69,28],editor:[162,6],overhead:167,indentwidth:120,analysi:[161,120,22],head:163,form:[43,163,92,160,83,24,28,120],offer:[48,6,70],forc:[120,6],styleguid:[29,135,19,42,95,12,102,142,14,154,130],"true":[29,43,163,136,39,180,161,1,107,88,16,147],reset:[146,98,79,113,104],removestar:0,arrays:8,maximum:[22,123],until:[28,22,126],assertmacro:117,inaccur:[52,79],rerun:22,unrel:[63,151,155],emit:[146,94,22,35,80,120],featur:[35,162,6,123],semicolon:[67,17,166,186,14,99,79,132],wctype:160,diagnost:[162,120,129],readnexttoken:17,exist:[22,35,83,6,131,175,28,120],check:[0,2,64,5,111,8,10,11,13,14,15,16,17,19,20,21,23,24,25,26,28,29,30,31,32,33,34,35,36,38,63,40,41,42,43,44,45,46,47,48,50,52,53,54,55,56,174,58,60,61,62,4,133,110,68,69,70,71,72,75,76,77,78,79,80,81,82,83,84,87,74,92,93,94,95,96,97,98,99,100,102,103,105,106,108,112,113,114,115,117,118,120,121,122,123,124,125,126,127,128,129,130,131,132,90,134,135,136,139,140,141,142,143,144,145,146,184,149,151,152,153,154,155,156,157,160,161,51,163,166,167,88,66,170,89,172,173,175,177,178,182,183,185,187,188],assembl:[48,79],readonli:60,awesomefunctionnamescheck:120,inclusiondirect:163,when:[43,136,0,161,49,26,184,52,5,59,60,8,10,151,105,64,16,67,17,163,167,21,119,146,23,120,173,122,124,177,178,22,34,99,96,39,185,88,93],refactor:[49,16,6,185],test:[162,163,177,34,123,120,6],shrink:[86,79],node:120,matur:162,extern:[8,105,49,83,75,120,156,28],benefici:60,shrink_to_fit:86,intent:[29,17,8,96,146,90],consid:[29,161,146,177,0,67,10,127,35,21,70,123,80,39,166,99,54,186,28],lorem:146,receiv:[8,120,22,2],faster:[183,67,79,22],furthermor:[146,132,90],interval:88,cmath:179,fact:[17,176],time:[0,22,105,160,120,123,172,6,88,28,90],push:163,chain:147,"2line3":123,global:[146,12,160,156,79,28],known:[13,124,79,0,60],customari:70,row:28,decid:[54,120],depend:[163,180,83,183,16,28,120],tokennam:163,debugtyp:163,intermedi:83,vec:[161,2],x03:107,compile_command:[120,22],sourc:[110,162,163,0,22,165,83,24,136,28,120],string:[42,0,138,26,184,98,99,142,58,60,8,186,10,105,150,9,107,6,113,65,110,67,51,163,164,167,170,80,146,24,121,173,77,123,124,79,176,177,81,127,35,182,183,39,129,160,91,12,132,120],enable_if:54,wunus:159,level:[161,163,35,106,83,120,77],did:[127,143,158],iter:[161,146,0,52,122,79,176],item:[54,99],env33:[79,118],team:35,quick:162,lexical_cast:[0,121],round:[13,79],increment_two:169,discover:120,sign:42,to_wstr:121,unprotect:34,appear:[161,160,120,176],current:[61,162,22,166,160,96,146,120,156,6,60],boost:[120,121,79,0,99],is_speci:54,strtol:10,deriv:[60,163,119,155,158,99],gener:[136,0,50,60,54,163,6,61,153,16,69,80,120,123,28,22,128,83,129,185,102,131,91,188,90],someopt:120,satisfi:0,explicitli:[138,11,21,96,26,98,83,113,78,144,100,28,99],modif:[124,56,35,5],address:[120,22],along:[82,120],optionmap:120,wait:22,ret_ptr:82,queue:0,def:107,extrem:120,forward_list:[146,0],semant:[161,162,22,146,60,173],regardless:[17,163,188],extra:[61,162,163,177,22,189,35,83,26,6,28,120],circumv:161,activ:[163,124],modul:[61,163,35,83,120,18,27,28],evaluat:172,prefer:[173,73],visibl:[87,16],instal:6,warnonsizeofconst:8,regex:[24,120],memori:[70,166,35,50,98,99,113,3,79,132],univers:99,"_mbscmp":26,pragmawarn:163,value2:163,value1:163,criteria:161,scope:[34,93],unsaf:[80,151],peopl:5,ctype:160,visual:[162,24,22],tandem:22,templat:[0,185,105,39,120,54,144,124,79,16,60],examin:120,easiest:176,array_of_str:127,strnicmp:26,emplace_back:[166,35,146,99],prepar:120,unsignedtypeprefix:42,uniqu:[79,113],descriptor:[57,65],can:[94,0,49,97,96,120,54,56,58,59,60,8,104,186,5,105,160,64,136,153,107,6,156,159,16,155,110,161,17,162,163,151,166,167,21,117,73,80,119,146,99,24,124,28,176,31,22,35,83,183,63,129,185,40,131,92,132,90],"0x800000":177,purpos:[120,6],predict:153,backslash:[22,6],critic:[50,2],checkthrowtemporari:58,occur:[8,146],alwai:[7,146,180,64,39,107,120,173,55,28,185],multipl:[146,0,22,166,105,49,169,149,123,28,185,79,6,120],otherwis:[43,44,163,0,96,160,124],arrayindex:129,write:[58,128,24,120,28,176],conditionvalu:163,global_mutex:34,map:[61,146,163,0,166,83,173,28,176],product:162,"_wcsicmp":26,makesmartptrfunct:[98,113],uint:[42,6],clang:[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189],mai:[123,60,56,59,8,106,64,108,16,161,163,166,146,89,120,50,124,180,35,99,39,90],shuffl:[35,79,2],underscor:[43,28],data:[163,165,166,105,150,53,5],strcasecmp:26,newlin:[24,83],double_express:13,inttyp:160,stdio:160,divid:8,explicit:[110,29,8,163,147,0,35,21,171,120,54,92,124,79,16,144],int_arrai:132,inform:[66,161,68,112,22,31,20,47,35,157,4,111,6,74,72,163,60,125,32,28,120],"switch":90,preced:[120,83],combin:[162,83],callabl:29,thread_loc:89,"_memicmp_l":26,file1:120,cstr:[79,150],lsp:162,size_t:[8,28,70],still:[22,21,83,186,156,16],pointer:[94,0,50,139,99,53,5,101,58,8,62,175,16,161,163,114,70,115,116,118,119,146,97,124,79,147,178,82,187],dynam:[35,136],entiti:[8,28],group:120,polici:162,yaml:[163,22,6,120],window:60,mail:162,main:[89,163,120],non:[136,0,26,96,54,50,8,62,184,5,105,4,14,156,16,51,117,146,173,122,97,124,79,147,177,83,88,93,60],within:[161,22,107,55,28,93],matcher:120,initi:[137,138,123,2,50,0,184,156,161,164,170,171,120,97,79,147,30,126,35,37,88,40,89],therebi:39,half:88,now:[60,31,12,120,35,55,105,99],introduct:[61,35],term:83,searchpath:163,name:[43,135,0,26,98,99,55,58,144,8,184,12,186,14,154,6,113,158,67,163,108,70,166,71,117,80,120,79,28,22,35,82,83,142,129,185,102,131,188,132],fio38:[79,62,4],didn:120,separ:[67,163,186,166,105,82,83,26,9,14,99,117,142,12,132,120],minconfid:[161,79],x12:107,confid:161,compil:[60,163,94,22,6,21,28,83,123,39,172,16,120,54,78,124,41,176],domain:[57,165],replac:[42,136,0,98,99,2,101,6,59,60,104,184,172,113,16,160,161,51,70,171,24,121,122,78,124,79,147,31,35,82,120,182,86,185,90],individu:146,continu:[75,25,28],ensur:[103,51,22,120,122,59],significantli:[106,64],warnonsizeofcomparetoconst:8,operand:8,happen:[146,81,26,119,6,40,185,58,60],shown:[161,163,120,22],"3rd":124,space:[83,19,64],profil:[128,69,156,21,38,50,139,63,129,120,53,151,155],correct:[103,134,69,22,46,64,183,185,16],do_incr:169,state:[39,163,60,50],migrat:124,string_view:186,org:[134,189,163,120,19],"byte":[8,107,70],care:[120,60],unbrac:169,wai:[60,17,162,0,22,167,64,171,24,2,114,6,120],badli:144,recov:163,thing:2,place:[43,162,163,92,96,83,123,39,146,16,2,28,120],createinsert:120,think:5,frequent:[120,0],first:[161,17,8,0,22,169,96,146,107,52,2,185,151,28,120],origin:[173,161,154,0],directli:[161,162,147,0,185,6,60],get_cwd:60,onc:[161,17,51,60,79,6,120],arrai:[161,94,0,166,127,50,139,186,76,129,120,53,123,79],yourself:120,stringref:[163,120],submit:6,oppos:6,getfoo:16,open:[162,165,35,57,79,109],lexicograph:183,size:[161,8,20,127,35,106,50,166,149,123,79,90],given:[8,163,22,31,83,130,147],const_cast:[151,38,0],convent:[120,185],matcheddecl:120,caught:[58,22],moduleidpath:163,silenc:146,howtosetuptoolingforllvm:120,conveni:120,friend:67,warnonsizeofthi:8,especi:[119,120,0],checkimplicitcast:96,copi:[29,161,44,62,119,184,180,35,21,51,170,152,86,60,54,122,124,79,176],specifi:[42,136,0,26,51,98,60,6,144,94,106,113,162,163,19,170,120,123,124,28,177,83,129,160,132,99],"short":[60,42,94,88],enclos:[163,83,28],mostli:120,holder:[163,83],than:[161,183,8,19,22,35,160,26,136,86,120,88,54,178,0,177,60],msc30:[72,79],wide:120,const_reverse_iter:0,f_t:137,posix:[35,56,62],fileskip:163,posit:[110,34,105,117,50,183,133,120],nuisanc:22,pre:16,fork:[57,165],sai:28,pro:[69,92,128,38,50,139,63,129,155,53,30,151,79],ani:[50,52,54,6,144,146,16,161,17,163,21,120,122,28,22,35,82,24,182,131,90,99],style:[134,42,45,0,95,98,60,124,12,9,14,154,113,51,69,108,170,120,151,35,129,102,188,132,99],mislead:[178,35,64,119,5,79],bitwis:88,srcmgr:163,destroi:[80,186],matchresult:120,note:[97,60,6,61,146,105,64,9,156,162,163,21,120,78,151,79,28,22,35,83,142,86,160,88,12],ideal:22,take:[60,29,162,73,50,39,153,146,16,28,120],clangtidyopt:120,noth:[54,107],begin:[161,0,83,64,89,73,2,40],sure:[58,22],trace:[61,163],normal:[83,49,28,22],track:107,clearer:90,pair:[115,144,99,93,79,6,176],err09:[58,32,79],renam:[61,162,163,120,174,6],later:[22,182],oop11:[68,79,170],quantiti:147,runtim:[42,135,70,35,26,80,14,79],pattern:[13,124,120,146,70],show:[183,120,22,90],cheap:60,hack:120,threshold:[177,123],corner:120,onli:[136,0,161,96,97,133,53,163,120,5,6,60,8,184,151,12,64,186,67,17,51,69,166,167,21,169,117,146,24,122,124,79,28,31,22,82,83,182,86,160,88,131,99],slow:13,ratio:123,sourcerangeskip:163,behind:16,wcscmp:26,fenv:160,analyz:[17,146,120],startswith:120,fileentri:163,variou:[106,88],get:[163,61,162,69,22,70,187,128,83,8,28,53,157,55,120,5,79,6,99],largelengththreshold:177,fubo:6,cannot:[173,161,128,69,41],"_mbsnicmp":26,gen:162,requir:[161,22,31,35,19,173,99,15,101,28,120],analyzetemporarydtor:120,find_all_symbols_db:22,fixithint:120,nullptr:[147,101,79,16,82],yield:8,filechang:163,through:[161,8,163,170,119,120,40,60],where:[44,0,60,181,175,13,152,107,155,16,161,21,186,89,120,173,122,25,124,176,31,33,35,185,88],int_ptr:[124,178],detect:[43,146,58,10,180,35,169,96,26,166,16,88,186,188,28],review:[162,120],enumer:[163,88],enough:[99,58,120],volatil:120,between:[8,21,123,183,88,16],"import":[50,163,64],across:[57,165],headerfileextens:[9,12,105,142],assumpt:185,parent:[120,22],nestingthreshold:[35,106],critical_sect:34,bitset:127,uncondition:169,come:[124,88],"__builtin_memcmp":26,stdbool:160,clj:31,copyabl:[51,62,81,184,4,122,79],quiet:120,inconsist:[79,28,185],mani:[162,35,146,120,5,188,60],improt:160,color:162,overview:120,unittest:120,pop:163,colon:83,"_memicmp":26,needlessli:[35,171],camelback:188,mark:[29,44,136,161,92,36,83,133,41],macroarg:163,wliter:120,derefer:[161,116,62,79],suscept:58,trailingspac:24,enterfil:163,llvmtidymodul:120,workspac:120,vimrc:22,dianost:163,those:[162,0,83,99,54,28,155],"case":[43,0,49,123,99,54,58,144,8,184,105,64,107,155,16,161,17,163,70,115,102,146,24,173,28,81,96,87,185,88,188,120],lstrcmpi:26,trick:86,cast:[110,8,147,0,63,155,92,38,26,1,96,120,102,176,151,79,16,99],invok:[51,22,184,50,122,28],invoc:[51,163,120,28],advantag:5,stdout:[163,120],metric:106,henc:120,destin:70,uncom:83,ascii:[24,70],memicmp:26,develop:[162,178,146,120,5,6],same:[44,163,0,160,2,37,83,64,146,6,120,88,158,131,138,28,93],binari:[120,31,22,59],html:[134,29,135,19,42,95,12,102,142,14,154,120,130],hxx:[9,12,105,142],clangd:[61,162],closest:120,nest:[17,35,28,106],assist:[162,83,28],driver:83,improv:[35,16,6,0],calloc:132,level2b:163,appropri:[110,147,120,132,16,136],supportedformat:123,macro:[8,163,136,120,34,35,169,82,97,140,16,117,106,79,28,59],get_ref:124,without:[94,0,165,95,12,49,50,9,120,57,142,105,16,136],argument2:163,argument1:163,dereferenc:[146,94],execut:[146,22,169,118,89,120],wmemcmp:26,rest:120,macrodefin:163,aspect:[120,22],speed:[180,99,60],dynamic_cast:[155,0],struct:[29,8,136,184,127,105,21,97,80,119,146,133,143,158,147,78,5,131,132,60],hint:[132,185,120,16,136],filecheck:120,except:[146,136,127,35,152,89,99,58,120],param:[77,51,79,16],setvalu:51,blob:[128,69,156,119,21,38,50,139,63,129,155,53,151],pow:88,vulner:8,real:[163,58,16,88],hover:162,around:[111,147,126,35,49,83,80,120,79],c_user:163,read:[60,69,31,128,64,120,173,163,28,99],get_str:60,dark:120,moo:91,world:[39,8,146,16],part:[139,161,162,69,53,128,155,35,21,38,64,84,63,129,120,156,54,50,151,92,60],oldnam:6,stranger:146,integ:[110,8,147,19,70,10,13,96,26,1,129,177,121,123,79,16,90],server:162,alexandrescu:58,either:[17,163,22,21,83,129,6,28,120],output:[61,146,163,83,120,55,28,24],strcmp:26,almostbitmask:88,consir:67,deduct:39,sync_with_stdio:1,vectorlikeclass:166,intend:[70,127,183,119,55,143,144],"_wcsicmp_l":26,slice:[119,79,58],definit:[7,162,45,19,127,105,21,50,87,6,171,131,185,163,79,28,120],protocol:162,exit:[17,163,25,120],complic:21,refer:[0,51,60,53,54,58,146,184,186,14,6,160,161,162,112,80,119,122,124,79,32,22,81,35,145,39,185,99],power:120,inspect:[131,120],llvmnewmod:163,broken:124,fulli:[132,6],"throw":[112,136,32,152,89,99,25,79,58],comparison:[183,29,147,16,26],warningnam:163,greatli:167,myfunctor:173,stand:107,wold:102,processor:118,effici:[67,167,172,90,6,99],wcscasecmp:26,your:[83,120,22,6,64],unconvent:[7,79],loc:163,log:161,area:70,aren:[124,50],overwrit:6,warnonallautocopi:122,strict:[5,120],interfac:[163,94,115,120,156,5,79,6],low:120,setfoo:16,"0x42":107,tupl:[35,99],regard:88,functor:[173,79],longer:[161,160,16,2],algorithm:[153,52,73,79],possibl:[161,8,173,0,70,166,151,35,39,76,146,120,54,25,5,90],"default":[42,43,130,136,0,161,138,97,98,96,54,100,174,58,26,8,147,186,11,12,106,9,14,6,113,16,67,51,163,19,166,167,21,117,170,120,173,122,78,50,124,79,177,22,126,123,82,83,142,129,132,88,40,60,105,41,99],sock_cloexec:[35,57],make_uniqu:113,unusu:76,stateloc:163,vararg:[69,79],creat:[177,22,35,106,188,80,186,120,79,28,109],certain:[161,105,120],bugtrack:6,deep:176,functiondecl:120,file:[105,62,17,163,31,22,165,12,49,83,142,9,129,6,120,57,185,35,28,24],level3a:28,fill:[177,70],incorrect:[161,13,26,183,120,79],again:146,makemytupl:99,googl:[42,135,102,47,98,60,144,12,106,111,14,154,113,95,51,108,19,20,130,170,80,120,124,79,29,157,126,35,142,129,74,187,92],o_cloexec:[35,109,165],prepend:[83,188,28,6,120],field:[60,51,163,99,50],valid:[17,44,10,26,107,99,65,120],ignor:[7,43,8,163,161,34,6,106,83,16,105,28,120],you:[17,49,163,22,179,127,143,21,96,83,64,162,28,108,2,158,167,6,120],genuin:153,sequenc:[153,146,163],symbol:[163,28,22,6,160],multidimension:94,reduc:[34,25,86,97],assert:[125,35,117,182,172,79,160],directori:[83,28,22,120],descript:[54,163,120,83],macronametok:163,construtor:143,to_str:[110,121],potenti:[146,22,70,105,168,99,131,35,16],includestyl:[51,170,129,98,60,113,124],cpp:[45,47,112,141,56,58,152,153,6,66,68,163,72,170,89,120,79,22,32,35,142,145,185,93],escap:[107,24,79],dst:8,represent:[13,163],all:[44,45,0,128,50,139,27,133,53,163,141,6,146,186,152,154,143,108,16,155,69,18,115,21,89,120,151,28,22,81,127,35,126,96,183,63,129,160,88,131,38,52],skeleton:120,illustr:[25,60],selinux:[57,165],exitfil:163,scc:163,scalar:163,abil:120,follow:[0,26,51,60,120,54,6,8,147,92,166,154,108,16,110,161,162,163,19,70,115,21,75,76,146,24,173,122,25,123,151,28,178,22,83,182,88,40,132,90],parameterthreshold:[35,106],ptr:[161,136,178,187,116,98,99,113,124,79],comparearrai:8,init:[68,30,164,170,35,138,50,171,60,156,40,97,79],program:[22,155,49,120,63,6,151,28,24],skip:[115,163,82],introduc:[163,136,0,35,24,113,173,124,28],"__builtin_strncasecmp":26,consum:146,fals:[110,161,44,163,136,120,34,180,105,117,50,1,133,147,16,99],subcommand:6,shortnamespacelin:19,mpi:[115,79,120,94],util:[51,124,60],mechan:28,fall:188,veri:[34,158,162,6],condition:146,induct:33,md_visibl:163,list:[0,50,99,6,59,61,146,137,186,12,9,14,67,162,163,166,117,171,120,123,79,28,22,35,82,83,142,183,160,105,132,60],stderr:[120,6],googletidymodul:120,"_wcsnicmp":26,sync:185,"_stricmp":26,past:180,rate:[105,120],pass:[60,67,146,69,62,120,81,115,128,83,39,51,107,99,54,5,79,94],further:120,deleg:[37,143],abc:[107,99],sub:146,diag:[163,120],section:[146,163,119,95,12,149,39,160],ast:[120,22],abl:[35,146,99,188],overload:[66,67,135,103,161,35,145,52,121,54,79,93],delet:[66,7,103,161,34,175,21,101,136,133,54,100,79,41,93],version:[185,120,6,50],headerfilt:120,"public":[105,16,138,60,54,41,120],full:[105,120,83],themselv:156,vtabl:119,pragmadiagnosticpush:163,behaviour:[161,121,49,59],modular:[61,83,28,120],shouldn:163,staticfunctiona:159,variad:45,dequ:[166,146,99,0],modifi:[60,161,147,56,38,120,124,28,99],functiontakingbool:16,search:[61,163,120,22],eras:[52,79],indetermin:39,popen:118,prior:6,pick:22,codebas:160,via:[120,99,28,50],warrai:129,readabl:[0,95,49,138,97,150,5,101,147,106,64,111,154,157,16,164,19,20,116,102,71,75,76,24,77,25,175,79,120,126,149,35,86,87,185,74,187,188,41,90],registermatch:120,vim:[61,22,6],deprec:[160,124,79,136],inappropri:52,heurist:[34,122,51],decrement:145,dangl:[80,186,79,64],select:[163,24,22],hexadecim:[107,24],x42:107,member_string_refer:80,distinct:120,regist:120,two:[146,22,70,2,123,183,24,53,88,120],coverag:[61,83,28],taken:[43,185],mpi_send:[115,94],more:[161,47,68,99,5,6,60,146,92,4,111,157,66,67,17,162,112,19,20,167,72,172,120,125,78,28,32,22,35,86,160,74,188,90],desir:[22,70,12,142,9,105,6],randomfun:2,canon:34,mozilla:120,add_new_check:120,flag:[44,45,50,139,99,53,57,141,58,60,146,62,10,12,106,152,155,156,161,51,69,165,21,118,119,89,120,170,151,33,35,128,38,145,63,129,88,40,93],particular:[146,120,22],webkit:120,multiset:[146,0],document:[61,162,163,0,189,35,120,28],"_popen":118,none:120,cloexec:[65,165,35,57,79,109],outlin:161,remain:[57,16,165],paragraph:24,"_mbsnbcmp":26,someobject:0,prompt:22,share:[98,79],accept:6,minimum:[161,123],explor:120,whichev:146,cours:115,goal:162,secur:[120,165],rather:[132,162,120,178],anoth:[22,128,37,83,88,131,188,90],clangtidycheck:120,simpl:31,needl:67,ios_bas:1,resourc:132,referenc:[60,28],reflect:17,buffer:[115,94,22,6,79],o_trunc:109,associ:[161,99,73,120],circumst:28,github:[42,135,95,50,139,53,102,12,14,154,155,156,69,19,21,119,151,29,128,38,142,63,129,130],postfix:[145,35],check_clang_tidi:120,caus:[146,155,0,166,151,35,49,117,63,24,40,56,105,28,99],callback:[163,28,22],hicpp:[103,30,46,11,35,36,71,149,79,84,23,120,92,100,48,143],help:[162,6,64,120,25,16,185],soon:186,pseudorandom:153,allowconditionalintegercast:16,scott:[54,99],hierarchi:[162,28],foo1:[6,64],foo2:[6,64],paramet:[43,8,163,177,185,35,179,71,106,51,14,154,120,146,54,77,159,5,79,58,60],typedef:[178,137,115,15,0,28],get_valu:124,mpi_short:94,spacesbeforecom:19,might:[162,163,105,83,6,40,78,5,28,99],alter:17,fool:8,wouldn:99,good:[7,162,83,153,120,88,77],"return":[0,26,52,5,7,8,147,105,186,153,107,16,161,183,75,171,120,25,124,79,28,176,29,31,22,81,34,127,35,82,96,145,185,40],pollut:[12,108],framework:[34,120],compound:[34,35,106],ninja:[120,22],funciton:179,bigger:[177,96],macroundefin:163,tuplemakefunct:[35,99],eventu:[162,146],misplac:[143,178,76,79,96],int_sz:8,unlik:[34,29],maxconcatenatedtoken:123,easili:[132,8,80,185,6,120],token:[17,163,123],take_ownership_fn:124,found:[163,6,120,2,131,28],unicod:58,truncat:[40,107,79,70],hard:31,idea:[120,6],procedur:75,heavi:[34,106],linkag:105,member1:163,expect:[146,106,64,39,107,40,16],member2:163,longjmp:141,beyond:50,todo:[95,79],safeti:[69,35,128,38,50,139,63,129,155,53,151],pragmacom:163,signitur:158,redeclar:185,print:[161,120,6],occurr:[146,107,16,2],qualifi:[51,22,178,184,87,6,122,132],trucat:40,emplac:[35,79,99],o_wronli:109,suspici:[17,8,177,70,35,26,88,123,79],fdelai:60,reason:[161,17,163,39,76,79],base:[60,161,106,114,22,166,155,170,37,120,50,119,6,158,122,176,79,28,99],somedecl:28,put:[17,96,83,77,6,120],thrown:89,mymoduleanchorsourc:120,launch:162,omit:64,conversionsfrombool:16,perhap:28,pragmamessag:163,nonfil:163,assign:[110,7,21,147,36,82,51,97,44,60,146,78,50,124,79,41],feed:24,major:[35,22],dont:119,obviou:24,prevent:[5,24],misc:[110,43,44,68,26,140,148,52,54,55,58,59,103,7,8,62,85,105,13,4,186,107,143,158,159,177,66,17,180,112,183,114,168,169,117,73,170,146,172,120,125,123,79,104,178,32,81,34,127,35,36,37,96,84,39,88,40,131,93],number:[8,163,19,22,126,10,95,13,106,117,183,34,153,88,123],placehold:120,lstrcmp:26,std_arrai:127,basic_string_view:186,done:[123,124,99,58,120],construct:[60,178,0,186,35,36,50,152,99,124,120],stdlib:[10,160],miss:[163,22,64,119,158,123,79,41,59],stage:[22,6],differ:[161,8,22,34,49,106,83,117,120,88,188,102,28,185],script:120,interact:120,conversionstobool:16,least:[96,50],header2:[83,28],header3:[83,28],header1:[83,28],statement:[7,17,146,111,147,126,34,167,35,169,106,64,75,166,79,171,183,107,175,48],store:[124,120,6,93],adher:9,map_ignor:163,option:[42,43,136,0,161,97,51,98,96,58,26,8,147,186,12,106,9,14,6,113,16,67,162,163,19,166,167,21,117,170,120,173,122,50,124,79,28,177,22,126,35,123,82,83,142,129,88,60,188,105,132,99],relationship:[183,21],similarli:161,getter:162,pars:[60,28,22,79],myclass:99,std:[0,138,1,98,99,2,54,56,101,146,104,150,186,153,107,113,110,67,51,163,164,166,167,73,80,120,121,173,124,177,31,81,127,35,179,183,39,129,40,91,132,60],kind:[161,146,163,166,2,188,90],grep:6,whenev:[90,163,22,88],stl:[127,44,99,73],remov:[161,17,160,136,0,81,35,49,181,96,97,87,52,120,137,147,187,99],riski:[161,79],reus:22,str:[67,146,163,177,105,80,107,60,121,91],arrang:163,comput:8,"_mbsnbcmp_l":26,msc50:[72,79,153],ppcallback:[163,120],narrow_cast:0,pik__pragma:163,dedic:161,"null":[17,163,147,115,82,118,16,88,175,79,28],unintend:70,built:[61,28,22,16,97],equival:[161,8,31,123,65,16],self:0,violat:[105,63,120,151,58,155],lit:120,also:[0,50,98,99,2,54,6,59,60,183,146,104,186,105,64,83,113,161,162,163,120,28,22,35,96,145,40,93,188,90],unintent:[29,49,5],build:[61,162,163,22,47,117,142,6,108,144,79,28,120],brace:[0,19,126,35,64,111,171,79],buff:10,exec:[57,165],previou:[35,49,163,160],reach:[146,163,22],chart:110,setjmp:[141,160],mpi_comm_world:[115,94],most:[161,17,8,163,22,127,37,120,88,185],plan:6,qualifiednam:6,clear:[162,146,16],cover:[28,70],charsourcerang:163,usual:[124,60,58,176],microsoft:60,awesom:120,strncasecmp:26,addmatch:120,tri:[43,132,22,188],recoverypath:163,particularli:120,fine:[120,41],find:[42,135,137,184,95,49,138,26,1,162,98,2,3,5,58,59,7,8,104,85,105,150,9,107,143,108,154,159,16,110,67,17,21,163,113,70,166,116,168,117,73,80,120,121,122,164,79,177,22,31,179,34,127,35,37,142,183,148,87,185,102,187],clang_include_fixer_query_mod:22,ineffect:96,less:[173,178,105,99,0],solut:176,unus:[34,85,148,131,79,159],strictmod:[167,43,88],linethreshold:106,express:[0,98,99,55,141,59,8,147,13,152,107,113,16,161,146,120,151,79,28,33,127,129,180],useheaderfileextens:105,wcsncmp:26,someoption2:120,someoption1:120,llvmmoduletest:120,common:[8,177,0,165,96,26,183,107,24,88,123,6],relativepath:163,handlemacroexpandedidentifi:163,arr:161,set:[161,173,146,163,0,22,166,21,82,73,97,83,129,6,120,136,65,50,28,99],cond1:64,dump:120,cond2:64,emac:[61,22,6],arg:[163,137,81,120,79,6],lower_cas:188,reserv:166,bark:91,horizont:24,someth:[55,25,136],smallest:13,nontrivi:128,subscript:129,experi:6,altern:[139,160,6],signatur:[103,162,94,46,158,77,90],bar2:6,syntact:64,numer:110,sole:21,disallow:178,solv:[17,16],level1b:163,both:[146,163,22,2,13,80,119,120,88,54,6],last:[128,146,126],sizethreshold:123,checkopt:120,context:[60,17,120,26],whole:128,load:[22,6],simpli:[17,8,16],smartpoint:[99,132],point:[8,22,33,124,28,96,6,121,40,131,5,79,16,120],instanti:[124,120,16],enumconst:88,header:[105,161,163,22,160,12,49,73,142,9,98,83,113,185,124,79,28,120],mistak:[8,177,70,35,26,183,107,123,5],becom:[0,49,97,51,98,133,57,101,59,147,113,65,159,67,162,164,19,165,73,75,76,24,78,109,29,179,39,91],static_cast:[110,147,0,1,155,151,16],due:[161,31,180,183,52,16,59],empti:[42,17,146,164,142,35,105,83,79,177,9,14,120,182,26,12,28,90],sinc:[29,0,161,166,60,124,132,160],va_arg:69,dmy_defin:[120,6],stdint:160,wcsicmp:26,reformat:35,nonexist:6,fire:99,buflen:8,pmk_warn:163,unnecessarili:13,gap:28,understand:[25,43,64],func:[10,158,161],funk:158,intergr:48,look:[17,162,147,22,34,168,37,75,24,54,91,28,120],noexcept:[35,36,44,79,136],erron:[161,146],durat:50,"while":[161,17,8,0,22,126,167,75,6,124,16],matchfind:120,"_mbsnbicmp":26,match:[161,43,0,22,115,83,97,120,54,176,124,90],behavior:[146,34,35,13,117,38,39,120,3,56],error:[8,163,177,22,10,180,83,123,146,58,173,124,28,120],"65536ll":40,anonym:[87,79,58,142],stricmp:26,loop:[161,17,146,0,33,166,35,126,75,122,79,176],subsect:146,earli:[183,25,6],malloc:[35,79,132],itself:[162,44,28,0,120],epxr:8,minim:[120,126],belong:[120,64],tgmath:160,shorter:101,octal:24,higher:[15,173,99],exaclti:16,optim:[67,78,163],mytyp:173,piec:25,unintention:35,moment:162,temporari:[58,34,37,80,186,99,143,28,120],user:[44,136,0,50,60,2,58,61,82,6,161,163,115,21,170,120,28,22,127,35,37,40,132],stack:[132,0],lower:[161,57,165,26],lib:163,older:[160,50],elem:161,person:54,expens:[122,176,51,2],gsl:[129,0],propos:[16,26],cout:[161,146],obscur:0,"21l":99,detect_mismatch:163,getinfo:0,prvalu:60,realloc:[166,35,132],input:[163,83,6,40,28,120],finder:120,vendor:24,format:[61,162,163,0,22,35,120,28],valuesonli:60,pragmadirect:163,bit:99,allowconditionalpointercast:16,es63:119,signal:160,collect:28,"boolean":[79,16,147],popular:6,encount:6,subhead:28,often:[13,178,58,185],creation:[98,37,113,177],some:[161,162,163,22,160,35,21,73,50,146,99,16,120,102,185,28,90],back:188,random_shuffl:[35,2],sizeof:[8,70,127,182,79,132],surpris:39,scale:6,per:120,typesuffix:42,substitut:120,mathemat:153,larg:[177,106,6,185],reproduc:6,addcheckfactori:120,stringcomparelikefunct:26,run:[163,22,173,153,120,15,6,99],unnecessarycopi:184,step:22,subtract:53,size_typ:90,manag:[35,132,22,60],block:[83,58,28],file2:120,storeopt:120,doubl:[147,179,13,96,97,94],unsequenc:[146,79],linter:120,prevfid:163,imy_project:[120,6],gslheader:129,contributor:162,chang:[161,163,147,22,34,124,49,121,6,2,185,5,16,120],"__func__":[55,35],fopen:[35,65,79],inclus:[163,28],span:[139,53],errno:160,question:146,mytupl:99,textual:83,custom:[136,22,115,35,99,120],arithmet:[79,53],includ:[134,51,98,60,57,6,61,147,10,105,9,113,65,161,162,163,165,170,120,124,79,28,177,22,35,83,142,129],forward:[35,39,120,54,131,79],cstylecast:151,properli:[5,59],m_foo:16,lint:120,pwd:22,atoi:10,link:[120,22],translat:[22,105,123,87,120,185,6,133],line:[132,161,17,146,163,19,22,126,35,106,83,123,6,120,28,24],info:99,concaten:[167,79,123],consist:[17,185,28,64],confusingli:163,caller:39,warningsaserror:120,getint:8,highlight:162,readlin:17,similar:[22,82,120,102,158,124],constant:[8,147,81,115,180,35,129,82,26,14,88,5,79,90],mypair:[98,113],retriev:8,parser:28,"_identical_":120,doesn:[0,160,34,127,21,6,121,124,28,99],repres:[123,163,28,88],"char":[110,8,163,94,70,10,105,82,123,80,115,107,24,132,173,186,5,79,58,99],cmake:[163,28,22,120],titl:[27,189,18],invalid:[84,163,107,79,53],bracket:163,filenotfound:163,"_mbscmp_l":26,llvm:[134,0,51,98,60,6,9,113,162,163,19,170,120,25,124,79,28,22,35,129,74,91,189],libtool:[120,6],clang_include_fixer_jump_to_includ:22,mymodul:120,fancyfunct:55,ternari:147,reverse_iter:0,downcast:[92,151,79,155],readwhitespac:17,hello:[39,8,24,146],prototyp:120,code:[45,136,0,48,49,97,96,120,2,141,56,58,60,183,8,62,137,39,10,165,106,64,152,16,161,17,162,163,19,70,118,76,146,99,24,173,25,50,124,28,29,178,22,33,34,35,123,38,182,145,63,160,40,89,188,93],partial:[143,120,28],queri:[8,120],pik_hashpragma:163,kmessag:8,pragmaintroducerkind:163,compact:120,privat:[60,7,138,83,133,54,41,93],"__builtin_strcmp":26,sensit:[57,165],elsewher:[161,2],safemod:173,aris:167,sent:22,priority_queu:0,infostruct:0,containerswithpushback:99,reinterpret:[63,92,79],untouch:[173,60],implicitli:[110,29,105,26,28,93],relev:[95,12,119],clangtidycheckfactori:120,stddef:160,md_undefin:163,"try":[105,162,163,120,188],initializer_list:[29,0],pleas:[66,68,112,125,32,20,47,35,157,4,111,6,74,25,72,28],impli:[17,147],natur:120,odr:105,memset:[79,3,8,35,70],"_header":28,jump:22,fold:[40,162,79],leakag:57,download:35,click:163,append:[167,120,6,188],index:[61,76,129,79,22],twine:[91,79],makesmartptrfunctionhead:[98,113],mymoduleanchordestin:120,compar:[43,22,26,183,16,79,28,185],access:[139,161,156,119,128,84,63,120,53,151,79,58,155],experiment:186,deduc:[39,120,0,144],absolut:[120,83],len:162,bodi:[161,17,19,126,166,50,75,120,78,185],imped:24,sfina:69,let:[120,22],orderedvalu:8,sinf:179,safer:[146,5,172],vertic:24,implicit:[29,8,147,114,161,168,96,26,179,79,16,176],pmk_error:163,convert:[29,161,70,10,155,82,97,24,15,188,79,99],convers:[110,29,8,114,0,161,10,92,168,96,120,121,173,79,16,147],larger:[120,31],cert:[45,47,141,56,58,62,10,172,4,152,153,66,68,112,72,118,89,120,170,79,125,32,33,35,142,145,93],upper_cas:188,pragmaopenclextens:163,typic:[39,8,120,162,180],ifloc:163,warnonimplicitcomparison:26,constmethd:51,appli:[161,51,137,178,34,35,184,87,133,122,120],wil:40,disciplin:[128,69],inequ:183,dyn_cast:0,api:[61,101,120],reference_argu:14,smartptr:[187,79,157],moveconstructor:36,from:[0,49,52,120,55,6,146,105,106,186,156,158,16,17,162,163,108,114,167,102,80,24,121,124,28,177,22,126,34,35,128,83,84,39,179,160,88,188,99],sourcerang:163,upgrad:120,next:[35,106,120,64],few:120,advoc:120,checker:88,sort:[183,120],my_map:176,mismatch:[40,115,188,79,64],about:[132,146,163,167,35,50,76,120,97,5,79,6,60],c_system:163,hashloc:163,account:[43,146,185,28,50],usenoexceptfals:136,alia:[46,47,149,100,58,103,62,148,11,92,106,4,111,143,157,66,68,112,19,20,72,71,170,23,172,79,30,125,32,126,36,142,84,74,187,93],advanatag:73,sutter:58,control:[146,106,75,120,25,79],modulemap:28,process:[163,120],lock:34,high:[35,163,48,120],allowmissingmovefunct:21,tab:[24,64],basic_str:[110,67,146,167],delai:[79,60],gcc:163,uchar:160,pragmawarningpush:163,awesome_:120,subdirectori:[120,28],instead:[44,136,60,5,6,146,10,16,161,163,70,167,170,8,120,124,176,177,127,96,183,39,90,99],sin:179,noproblemsassist:28,overridden:[163,120],unidentifi:22,"_wcsnicmp_l":26,mymap:0,redund:[137,178,160,180,116,49,138,97,75,87,52,157,147,164,150,187,79,120],physic:24,alloc:[161,132,93],bind:[22,31,120,124,79,99],counter:[166,33],correspond:[42,135,45,95,50,98,99,141,56,144,60,62,10,152,14,154,113,163,108,70,21,118,80,89,120,22,33,142,145,102,93],element:[161,8,166,105,73,142,9,52,88,12,99],issu:[17,6,120,54,185,16,90],allow:[60,69,0,70,35,97,16,185,124,105,58,120],"_stricmp_l":26,elif:[163,28],move:[44,49,68,60,54,58,7,146,104,18,17,51,27,21,170,78,124,79,29,81,35,36,84,39,189],ignoremacro:97,comma:[82,163,142,12,117,26,9,79,120,123,105],perfect:[54,35],chosen:120,memberinit:50,decai:[139,79],therefor:[39,161,146,156,64],multimap:[146,0],crash:6,greater:[173,8,177,26],handl:[22,31,10,186,89,132,0,79,58,60],auto:[161,0,31,166,73,98,99,113,121,40,122,120,124,79,176],spell:[6,0],innermost:28,ctor:[54,143,170],front:[163,83,28],bar:[43,136,184,167,39,171,60,6],dcl21:[145,35,79],edit:6,mode:[22,35,120,65,109,28,144],mycheck:120,subset:120,dcmake_export_compile_command:120,make_tupl:[35,99],basedonstyl:120,wstr:121,our:[161,120],patch:[162,163],unique_ptr:[146,104,99,113,124,101],special:[46,11,105,21,39,107,133,78,100,79,28,185],out:[161,146,163,22,70,6,83,129,120,28],variabl:[0,49,50,58,146,184,105,6,15,155,161,162,119,76,89,120,122,151,28,176,22,81,33,38,63,87,88,91,132],some_str:132,defaultvalu:120,"__function__":[55,35],categori:120,typenam:[0,105,39,60,54,124],suitabl:[120,83],rel:[163,120,83],ref:[161,176],math:[160,79,179],statist:[153,120],umbrella:28,insid:[161,120,126,35,169,83,97,79,16,143,6,28,99],workflow:[120,6],mpi_char:[115,94],random_devic:2,standalon:[163,28],clangtidi:120,releas:[61,104,35,117,101,79],indent:[17,19,35,64,25,79],unwant:[173,163],unnam:[154,185],keep:[105,107,185],length:[107,177,70],enforc:[69,92,128,149,185,25,188],outsid:[161,162,120,58],unexpectedli:17,suffix:[42,120,188],md_defin:163,"0def":107,qualiti:[162,120],hpp:[9,12,142,105,185],date:[120,185],shared_ptr:[146,98,99],suffic:[183,122,51,184],getnodea:120,"long":[42,96,19,0,123],start:[61,162,163,166,83,120,28],flrag:58,scanf:10,perfectli:120,capac:86,messag:[146,163,94,115,83,120,28],attach:120,maplead:[22,6],termin:[183,107],default_argu:130,endofmainfil:163,checkfactori:120,headerfilterregex:120,arrayref:163,ishead:28,exactli:146,pupos:163,see:[134,130,47,50,139,83,53,54,112,5,6,146,63,4,111,155,156,157,66,161,68,69,18,20,72,21,119,120,125,151,28,29,22,32,27,35,128,38,39,129,74,163,132,60],structur:[167,163,120,28,64],charact:[110,67,8,163,177,70,107,24,58],sens:[17,8,124],seriou:64,f10:105,linker:120,have:[0,49,50,60,27,6,59,103,146,46,18,65,161,17,51,163,19,170,120,122,28,126,127,35,83,129,160,88,93],tabl:[61,163],disjoint:88,turn:[35,159,163,99,120],tidi:[0,1,2,3,4,5,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,88,23,24,25,26,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,75,76,77,78,79,80,81,82,84,85,86,87,74,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,51,27,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189],"0x00":[107,70],"0x01":107,"0x02":107,mix:[76,163,64],forbidden:[48,108],which:[0,1,98,60,54,55,6,61,8,105,106,113,16,161,51,163,21,73,118,146,120,122,170,124,28,176,29,22,180,35,83,129,185,88,40,131,91,172],"__normal_iter":0,singl:[29,17,94,22,67,166,35,182,87,24,53,6,185],fileid:163,stringlikeclass:67,unless:83,clangtidymoduleregistri:120,"class":[138,97,99,54,6,60,7,8,85,105,186,107,155,15,158,16,67,163,166,167,21,170,146,120,50,124,30,127,37,41,93],pyf:22,"_mbsncmp":26,placement:93,gather:120,request:6,face:120,googlemoduletest:120,determin:[161,17,83],updat:[185,120,60],push_front:99,text:[136,163,24,6,120],filetyp:163,purposefulli:83,trivial:[51,81,34,184,122,78],setter:162,redirect:[62,19,126,106,170,172,142,187,79,58,93],locat:[163,96,6,102,28,120],"_mbsicmp_l":26,should:[94,0,139,53,57,8,186,12,64,9,107,154,65,161,162,163,165,167,73,120,77,28,29,177,22,126,35,142,145,39,185,102,91,105,132,90],won:[22,21,123,99,26,124],local:[162,184,146,160,25,91,79],meant:[179,17,162,37,62],contribut:[162,60],familiar:[76,120],memcpi:[3,8,35],autom:[43,120,22,102],increas:[161,117],enabl:[163,136,22,21,96,120,78,60],organ:[162,120],fixer:[61,22],integr:[61,147,22,35,120,6],contain:[44,0,123,99,61,146,12,52,86,161,163,70,73,75,24,50,79,22,127,35,83,129,90,132,120],clangtidycontext:120,filenamerang:163,warningspec:163,view:186,conform:162,o_creat:109,shrinkabl:86,range_express:166,danger:96,polymorph:119,statu:[61,35,162],correctli:8,mainli:162,misus:[8,120,88],tend:0,written:[146,163,0,35,128,96,39,120],kei:[163,22,6,120],flp30:[79,33],entir:[146,120],unnot:16,embed:[107,24,79],addit:[146,163,0,22,83,6,120,5,16,99],mylist:0,doxygen:163,extens:[162,163,12,142,9,120,105,28,60],equal:[174,11,26,183,133,78,100,79],etc:[110,161,162,163,120,60,6,59],instanc:[17,178,22,167,49,96,123,80,147,28,93],comment:[161,43,163,19,95,74,79],unimpl:133,guidelin:[128,69,156,119,21,38,50,139,63,129,120,53,151,188,132,155],cpplint:[42,135,70,95,142,80,154,108,102,144],distinguish:105,respect:[51,83,28,120],quit:[80,2],evalu:[161,8,117,44,172,146,79,28,59],addition:[26,88],clang_include_fixer_increment_num:22,insuffici:[94,120],compon:28,"int":[42,136,0,49,97,99,2,54,56,101,143,159,8,137,10,5,105,13,166,15,109,16,185,110,161,163,70,115,167,116,73,75,119,76,146,120,121,173,25,124,79,176,29,178,31,81,127,82,96,182,87,132,40,175,41],json:[120,22],treat:[186,78,117,120],chainedconditionalreturn:147,immedi:80,nullmacro:82,"_mbsicmp":26,presenc:[24,118],sock_stream:57,deliber:16,togeth:[49,120],wcsnicmp:26,present:[35,138,120,58],multi:6,hoc:163,align:185,harder:64,cursor:[22,6],defin:[8,45,0,22,126,115,35,21,169,82,50,44,28,146,163,170,105,6,93],helper:58,almost:55,site:35,header4:28,welcom:[61,160,24,60],parti:124,member:[46,138,97,133,100,146,147,11,105,16,161,163,167,21,117,170,80,119,78,50,79,30,31,128],ifndef:[163,28],android:[65,165,35,120,57,79,109],probabl:[8,177,179,127,2,120,88],difficult:120,http:[134,42,135,95,50,139,53,163,102,12,14,154,155,156,69,19,21,119,120,151,29,128,38,142,63,129,130,189],allowsoledefaultdtor:21,expans:[163,120,28],effect:[161,81,175,160,117,140,86,99,54,5,79,120],dealloc:[132,93],cstyle:[92,151,79],expand:[34,28,59],"__gnu_cxx":0,off:120,well:[29,163,35,83,120,93],"0x12":107,exampl:[44,94,0,161,138,97,184,96,2,54,55,57,56,58,136,60,8,104,137,85,165,64,186,107,6,158,65,109,16,180,67,17,51,163,164,114,70,115,21,169,75,119,146,24,77,124,79,28,176,29,177,120,81,34,127,179,82,83,183,39,185,88,147,187,41,99],command:[163,22,35,83,118,6,28,120],intxx:42,choos:[44,120,60],undefin:[22,35,38,50,60,3,56,79],latest:35,unari:[182,35,135,79,59],map_iter:0,clang_include_fixer_path:22,sourcen:[120,6],obtain:[184,122],mistaken:178,memmov:[3,35],formatstyl:120,web:35,static_assert:[35,172,182],idiom:60,bell:24,bar1:6,triviallycopy:[3,35],my_first_point:0,add:[60,161,146,22,31,35,50,99,88,26,124,177,120],sysmbol:22,smart:[162,187,99],correspondig:42,rememb:146,conditionrang:163,nameloc:163,wstring:[110,121],camelcas:188,source0:[120,6],five:21,know:[17,120,58],press:[22,6],o_rdwr:165,insert:[166,29,99,22,50],resid:120,like:[94,0,161,123,99,54,55,8,165,52,186,107,67,162,70,166,167,146,24,121,25,28,178,34,127,35,37,83,39,40,132,120],"__builtin_strncmp":26,necessari:[124,120,60],"0xff":107,resiz:186,page:[61,162],err60:[152,79],err61:[112,79,58],exceed:106,captur:31,randomfunc:2,"export":[28,6,120],replacementstr:136,proper:96,guarante:[173,146,160,90],ignorearrai:50,librari:[163,179,160,120,124,28,60],filenametok:163,lead:[105,43,8,53,156],leak:[99,165],avoid:[60,29,146,163,22,31,166,91,96,83,64,183,133,120,77,57,5,79,6,99],leav:[0,34,12,50,80,9,142,105],"__debug":163,leader:[22,6],getnam:120,investig:88,"enum":[161,97,163,79,88],usag:[26,53,58,61,8,13,153,14,107,6,15,155,163,70,167,102,120,124,79,28,109,127,35,82,83,88],branchthreshold:106,unsuccess:16,although:[105,58,6,64],offset:[6,123],simpler:101,c_str:150,actual:[163,81,85,155,118,63,16,151,41,52],socket:[35,57,79],column:[28,6,64],dcl03:[79,125,172],constructor:[44,0,138,97,98,99,54,143,146,184,92,107,113,68,51,21,170,80,171,120,122,78,50,124,79,29,177,35,37,41,60],discard:119,disabl:[163,136,117,60,54,120],own:120,bugpron:[79,3,35,120,70],automat:[132,163,22,49,50,120,28],isocpp:[128,69,156,119,21,38,50,139,63,129,155,53,151],guard:[54,9,163,79,64],pitfal:120,destructor:[128,136,34,21,51,120,122],getmessag:8,leverag:162,val:[0,88],byte_count:70,transfer:124,much:124,inner:[126,60,64],arg1:31,pik___pragma:163,"function":[160,45,94,0,49,26,51,98,133,2,55,3,5,6,60,8,46,10,11,105,165,100,106,115,153,14,154,58,156,158,185,110,161,162,69,113,70,20,167,116,21,117,75,119,146,23,120,77,78,124,79,28,184,29,178,31,179,149,35,99,37,183,39,87,132,171,93,163,122,90],map_fat:163,statementthreshold:106,unexpect:59,make_shar:98,overflow:40,inlin:[48,105,120],buf:[115,8,94],bug:[165,95,49,6,16,120],count:[34,126,73,70],made:[132,16],temp:39,whether:[161,17,162,163,117,146,120,54,77,28,90],displai:[83,163,28,6,120],record:50,below:[161,146,163,0,2,13,83,88],limit:[161,0,83,64,87,60,124,79,28,160],uniqueptr:[104,79,101],"static":[161,125,172,35,79,159,129,87,120,182,89,92,91,105,155],problem:[110,22,13,83,64,156,88,28],ttwo:24,noremap:22,vscode:162,dure:[161,50],implement:[0,133,2,100,143,103,146,11,92,154,108,162,71,73,23,120,30,22,35,84,90,93],rule:[42,128,45,46,50,139,53,141,56,58,103,146,62,39,10,11,92,100,149,152,14,154,143,156,16,155,69,108,21,71,118,23,151,30,33,36,38,84,63,129,89,188,93],inc:28,mutual:146,"_mbsncmp_l":26,some_struct:132,detail:[163,22,35,119,120,54,160],virtual:[181,21,119,23,130,158,79],other:[136,0,97,60,92,146,10,105,9,16,133,161,21,169,120,28,22,35,83,142,12,41,99],lookup:22,futur:[162,146,99,6,90],branch:[146,106],renamefil:163,repeat:[173,35,79,140,97],star:0,stai:124,myvec:0,mt19937:2,pragmamessagekind:163,sourceloc:163,reinterpretcast:63},objtypes:{"0":"std:option"},titles:["clang-tidy - modernize-use-auto","clang-tidy - modernize-use-bool-literals","clang-tidy - modernize-replace-random-shuffle","clang-tidy - bugprone-undefined-memory-manipulation","clang-tidy - cert-fio38-c","clang-tidy - readability-non-const-parameter","Clang-Rename","clang-tidy - misc-unconventional-assign-operator","clang-tidy - misc-sizeof-expression","clang-tidy - llvm-header-guard","clang-tidy - cert-err34-c","clang-tidy - hicpp-use-equals-defaults","clang-tidy - google-global-names-in-headers","clang-tidy - misc-incorrect-roundings","clang-tidy - google-runtime-references","clang-tidy - modernize-use-using","clang-tidy - readability-implicit-bool-cast","clang-tidy - misc-suspicious-semicolon","<no title>","clang-tidy - llvm-namespace-comment","clang-tidy - google-readability-function-size","clang-tidy - cppcoreguidelines-special-member-functions","Clang-Include-Fixer","clang-tidy - hicpp-use-override","clang-tidy - modernize-raw-string-literal","clang-tidy - readability-else-after-return","clang-tidy - misc-suspicious-string-compare","<no title>","Modularize User’s Manual","clang-tidy - google-explicit-constructor","clang-tidy - hicpp-member-init","clang-tidy - modernize-avoid-bind","clang-tidy - cert-err09-cpp","clang-tidy - cert-flp30-c","clang-tidy - misc-unused-raii","Extra Clang Tools 5.0.0 Release Notes","clang-tidy - hicpp-noexcept-move","clang-tidy - misc-undelegated-constructor","clang-tidy - cppcoreguidelines-pro-type-const-cast","clang-tidy - misc-move-forwarding-reference","clang-tidy - misc-fold-init-type","clang-tidy - readability-deleted-default","clang-tidy - google-runtime-int","clang-tidy - misc-argument-comment","clang-tidy - misc-noexcept-move-constructor","clang-tidy - cert-dcl50-cpp","clang-tidy - hicpp-special-member-functions","clang-tidy - cert-dcl59-cpp","clang-tidy - hicpp-no-assembler","clang-tidy - readability-redundant-declaration","clang-tidy - cppcoreguidelines-pro-type-member-init","clang-tidy - performance-unnecessary-value-param","clang-tidy - misc-inaccurate-erase","clang-tidy - cppcoreguidelines-pro-bounds-pointer-arithmetic","clang-tidy - misc-forwarding-reference-overload","clang-tidy - misc-lambda-function-name","clang-tidy - cert-dcl58-cpp","clang-tidy - android-cloexec-socket","clang-tidy - misc-throw-by-value-catch-by-reference","clang-tidy - misc-macro-parentheses","clang-tidy - modernize-pass-by-value","Welcome to Extra Clang Tools’s documentation!","clang-tidy - misc-non-copyable-objects","clang-tidy - cppcoreguidelines-pro-type-reinterpret-cast","clang-tidy - readability-misleading-indentation","clang-tidy - android-cloexec-fopen","clang-tidy - cert-dcl54-cpp","clang-tidy - performance-faster-string-find","clang-tidy - cert-oop11-cpp","clang-tidy - cppcoreguidelines-pro-type-vararg","clang-tidy - bugprone-suspicious-memset-usage","clang-tidy - hicpp-named-parameter","clang-tidy - cert-msc30-c","clang-tidy - misc-inefficient-algorithm","clang-tidy - google-readability-namespace-comments","clang-tidy - readability-redundant-control-flow","clang-tidy - readability-misplaced-array-index","clang-tidy - readability-avoid-const-params-in-decls","clang-tidy - modernize-use-equals-default","clang-tidy - Clang-Tidy Checks","clang-tidy - google-runtime-member-string-references","clang-tidy - misc-move-const-arg","clang-tidy - modernize-use-nullptr","Modularize Usage","clang-tidy - hicpp-invalid-access-moved","clang-tidy - misc-unused-using-decls","clang-tidy - modernize-shrink-to-fit","clang-tidy - readability-static-definition-in-anonymous-namespace","clang-tidy - misc-suspicious-enum-usage","clang-tidy - cert-err58-cpp","clang-tidy - readability-container-size-empty","clang-tidy - llvm-twine-local","clang-tidy - hicpp-explicit-conversions","clang-tidy - misc-new-delete-overloads","clang-tidy - mpi-buffer-deref","clang-tidy - google-readability-todo","clang-tidy - misc-misplaced-widening-cast","clang-tidy - modernize-use-default-member-init","clang-tidy - modernize-make-shared","clang-tidy - modernize-use-emplace","clang-tidy - hicpp-use-equals-delete","clang-tidy - readability-uniqueptr-delete-release","clang-tidy - google-readability-casting","clang-tidy - hicpp-new-delete-operators","clang-tidy - misc-uniqueptr-reset-release","clang-tidy - misc-definitions-in-headers","clang-tidy - readability-function-size","clang-tidy - misc-string-literal-with-embedded-nul","clang-tidy - google-build-using-namespace","clang-tidy - android-cloexec-creat","clang-tidy - misc-string-integer-assignment","clang-tidy - google-readability-braces-around-statements","clang-tidy - cert-err61-cpp","clang-tidy - modernize-make-unique","clang-tidy - misc-bool-pointer-implicit-conversion","clang-tidy - mpi-type-mismatch","clang-tidy - readability-redundant-function-ptr-dereference","clang-tidy - misc-assert-side-effect","clang-tidy - cert-env33-c","clang-tidy - cppcoreguidelines-slicing","Clang-Tidy","clang-tidy - boost-use-to-string","clang-tidy - performance-for-range-copy","clang-tidy - misc-suspicious-missing-comma","clang-tidy - modernize-replace-auto-ptr","clang-tidy - cert-dcl03-c","clang-tidy - readability-braces-around-statements","clang-tidy - misc-sizeof-container","clang-tidy - cppcoreguidelines-pro-type-union-access","clang-tidy - cppcoreguidelines-pro-bounds-constant-array-index","clang-tidy - google-default-arguments","clang-tidy - misc-forward-declaration-namespace","clang-tidy - cppcoreguidelines-no-malloc","clang-tidy - modernize-use-equals-delete","clang-tidy - llvm-include-order","clang-tidy - google-runtime-operator","clang-tidy - modernize-use-noexcept","clang-tidy - modernize-redundant-void-arg","clang-tidy - readability-redundant-member-init","clang-tidy - cppcoreguidelines-pro-bounds-array-to-pointer-decay","clang-tidy - misc-macro-repeated-side-effects","clang-tidy - cert-err52-cpp","clang-tidy - google-build-namespaces","clang-tidy - hicpp-undelegated-construtor","clang-tidy - google-build-explicit-make-pair","clang-tidy - cert-dcl21-cpp","clang-tidy - misc-use-after-move","clang-tidy - readability-simplify-boolean-expr","clang-tidy - misc-unused-alias-decls","clang-tidy - hicpp-function-size","clang-tidy - readability-redundant-string-cstr","clang-tidy - cppcoreguidelines-pro-type-cstyle-cast","clang-tidy - cert-err60-cpp","clang-tidy - cert-msc50-cpp","clang-tidy - readability-named-parameter","clang-tidy - cppcoreguidelines-pro-type-static-cast-downcast","clang-tidy - cppcoreguidelines-interfaces-global-init","clang-tidy - google-readability-redundant-smartptr-get","clang-tidy - misc-virtual-near-miss","clang-tidy - misc-unused-parameters","clang-tidy - modernize-deprecated-headers","clang-tidy - modernize-loop-convert","Clangd","pp-trace User’s Manual","clang-tidy - readability-redundant-string-init","clang-tidy - android-cloexec-open","clang-tidy - performance-inefficient-vector-operation","clang-tidy - performance-inefficient-string-concatenation","clang-tidy - misc-swapped-arguments","clang-tidy - misc-multiple-statement-macro","clang-tidy - misc-move-constructor-init","clang-tidy - modernize-return-braced-init-list","clang-tidy - misc-static-assert","clang-tidy - modernize-use-transparent-functors","clang-tidy - modernize-use-default","clang-tidy - readability-delete-null-pointer","clang-tidy - performance-implicit-cast-in-loop","clang-tidy - misc-string-constructor","clang-tidy - misc-misplaced-const","clang-tidy - performance-type-promotion-in-math-fn","clang-tidy - misc-redundant-expression","clang-tidy - modernize-use-override","clang-tidy - modernize-unary-static-assert","clang-tidy - misc-string-compare","clang-tidy - performance-unnecessary-copy-initialization","clang-tidy - readability-inconsistent-declaration-parameter-name","clang-tidy - misc-dangling-handle","clang-tidy - readability-redundant-smartptr-get","clang-tidy - readability-identifier-naming","<no title>"],objnames:{"0":["std","option","option"]},filenames:["clang-tidy/checks/modernize-use-auto","clang-tidy/checks/modernize-use-bool-literals","clang-tidy/checks/modernize-replace-random-shuffle","clang-tidy/checks/bugprone-undefined-memory-manipulation","clang-tidy/checks/cert-fio38-c","clang-tidy/checks/readability-non-const-parameter","clang-rename","clang-tidy/checks/misc-unconventional-assign-operator","clang-tidy/checks/misc-sizeof-expression","clang-tidy/checks/llvm-header-guard","clang-tidy/checks/cert-err34-c","clang-tidy/checks/hicpp-use-equals-default","clang-tidy/checks/google-global-names-in-headers","clang-tidy/checks/misc-incorrect-roundings","clang-tidy/checks/google-runtime-references","clang-tidy/checks/modernize-use-using","clang-tidy/checks/readability-implicit-bool-cast","clang-tidy/checks/misc-suspicious-semicolon","clang-modernize","clang-tidy/checks/llvm-namespace-comment","clang-tidy/checks/google-readability-function-size","clang-tidy/checks/cppcoreguidelines-special-member-functions","include-fixer","clang-tidy/checks/hicpp-use-override","clang-tidy/checks/modernize-raw-string-literal","clang-tidy/checks/readability-else-after-return","clang-tidy/checks/misc-suspicious-string-compare","cpp11-migrate","modularize","clang-tidy/checks/google-explicit-constructor","clang-tidy/checks/hicpp-member-init","clang-tidy/checks/modernize-avoid-bind","clang-tidy/checks/cert-err09-cpp","clang-tidy/checks/cert-flp30-c","clang-tidy/checks/misc-unused-raii","ReleaseNotes","clang-tidy/checks/hicpp-noexcept-move","clang-tidy/checks/misc-undelegated-constructor","clang-tidy/checks/cppcoreguidelines-pro-type-const-cast","clang-tidy/checks/misc-move-forwarding-reference","clang-tidy/checks/misc-fold-init-type","clang-tidy/checks/readability-deleted-default","clang-tidy/checks/google-runtime-int","clang-tidy/checks/misc-argument-comment","clang-tidy/checks/misc-noexcept-move-constructor","clang-tidy/checks/cert-dcl50-cpp","clang-tidy/checks/hicpp-special-member-functions","clang-tidy/checks/cert-dcl59-cpp","clang-tidy/checks/hicpp-no-assembler","clang-tidy/checks/readability-redundant-declaration","clang-tidy/checks/cppcoreguidelines-pro-type-member-init","clang-tidy/checks/performance-unnecessary-value-param","clang-tidy/checks/misc-inaccurate-erase","clang-tidy/checks/cppcoreguidelines-pro-bounds-pointer-arithmetic","clang-tidy/checks/misc-forwarding-reference-overload","clang-tidy/checks/misc-lambda-function-name","clang-tidy/checks/cert-dcl58-cpp","clang-tidy/checks/android-cloexec-socket","clang-tidy/checks/misc-throw-by-value-catch-by-reference","clang-tidy/checks/misc-macro-parentheses","clang-tidy/checks/modernize-pass-by-value","index","clang-tidy/checks/misc-non-copyable-objects","clang-tidy/checks/cppcoreguidelines-pro-type-reinterpret-cast","clang-tidy/checks/readability-misleading-indentation","clang-tidy/checks/android-cloexec-fopen","clang-tidy/checks/cert-dcl54-cpp","clang-tidy/checks/performance-faster-string-find","clang-tidy/checks/cert-oop11-cpp","clang-tidy/checks/cppcoreguidelines-pro-type-vararg","clang-tidy/checks/bugprone-suspicious-memset-usage","clang-tidy/checks/hicpp-named-parameter","clang-tidy/checks/cert-msc30-c","clang-tidy/checks/misc-inefficient-algorithm","clang-tidy/checks/google-readability-namespace-comments","clang-tidy/checks/readability-redundant-control-flow","clang-tidy/checks/readability-misplaced-array-index","clang-tidy/checks/readability-avoid-const-params-in-decls","clang-tidy/checks/modernize-use-equals-default","clang-tidy/checks/list","clang-tidy/checks/google-runtime-member-string-references","clang-tidy/checks/misc-move-const-arg","clang-tidy/checks/modernize-use-nullptr","ModularizeUsage","clang-tidy/checks/hicpp-invalid-access-moved","clang-tidy/checks/misc-unused-using-decls","clang-tidy/checks/modernize-shrink-to-fit","clang-tidy/checks/readability-static-definition-in-anonymous-namespace","clang-tidy/checks/misc-suspicious-enum-usage","clang-tidy/checks/cert-err58-cpp","clang-tidy/checks/readability-container-size-empty","clang-tidy/checks/llvm-twine-local","clang-tidy/checks/hicpp-explicit-conversions","clang-tidy/checks/misc-new-delete-overloads","clang-tidy/checks/mpi-buffer-deref","clang-tidy/checks/google-readability-todo","clang-tidy/checks/misc-misplaced-widening-cast","clang-tidy/checks/modernize-use-default-member-init","clang-tidy/checks/modernize-make-shared","clang-tidy/checks/modernize-use-emplace","clang-tidy/checks/hicpp-use-equals-delete","clang-tidy/checks/readability-uniqueptr-delete-release","clang-tidy/checks/google-readability-casting","clang-tidy/checks/hicpp-new-delete-operators","clang-tidy/checks/misc-uniqueptr-reset-release","clang-tidy/checks/misc-definitions-in-headers","clang-tidy/checks/readability-function-size","clang-tidy/checks/misc-string-literal-with-embedded-nul","clang-tidy/checks/google-build-using-namespace","clang-tidy/checks/android-cloexec-creat","clang-tidy/checks/misc-string-integer-assignment","clang-tidy/checks/google-readability-braces-around-statements","clang-tidy/checks/cert-err61-cpp","clang-tidy/checks/modernize-make-unique","clang-tidy/checks/misc-bool-pointer-implicit-conversion","clang-tidy/checks/mpi-type-mismatch","clang-tidy/checks/readability-redundant-function-ptr-dereference","clang-tidy/checks/misc-assert-side-effect","clang-tidy/checks/cert-env33-c","clang-tidy/checks/cppcoreguidelines-slicing","clang-tidy/index","clang-tidy/checks/boost-use-to-string","clang-tidy/checks/performance-for-range-copy","clang-tidy/checks/misc-suspicious-missing-comma","clang-tidy/checks/modernize-replace-auto-ptr","clang-tidy/checks/cert-dcl03-c","clang-tidy/checks/readability-braces-around-statements","clang-tidy/checks/misc-sizeof-container","clang-tidy/checks/cppcoreguidelines-pro-type-union-access","clang-tidy/checks/cppcoreguidelines-pro-bounds-constant-array-index","clang-tidy/checks/google-default-arguments","clang-tidy/checks/misc-forward-declaration-namespace","clang-tidy/checks/cppcoreguidelines-no-malloc","clang-tidy/checks/modernize-use-equals-delete","clang-tidy/checks/llvm-include-order","clang-tidy/checks/google-runtime-operator","clang-tidy/checks/modernize-use-noexcept","clang-tidy/checks/modernize-redundant-void-arg","clang-tidy/checks/readability-redundant-member-init","clang-tidy/checks/cppcoreguidelines-pro-bounds-array-to-pointer-decay","clang-tidy/checks/misc-macro-repeated-side-effects","clang-tidy/checks/cert-err52-cpp","clang-tidy/checks/google-build-namespaces","clang-tidy/checks/hicpp-undelegated-constructor","clang-tidy/checks/google-build-explicit-make-pair","clang-tidy/checks/cert-dcl21-cpp","clang-tidy/checks/misc-use-after-move","clang-tidy/checks/readability-simplify-boolean-expr","clang-tidy/checks/misc-unused-alias-decls","clang-tidy/checks/hicpp-function-size","clang-tidy/checks/readability-redundant-string-cstr","clang-tidy/checks/cppcoreguidelines-pro-type-cstyle-cast","clang-tidy/checks/cert-err60-cpp","clang-tidy/checks/cert-msc50-cpp","clang-tidy/checks/readability-named-parameter","clang-tidy/checks/cppcoreguidelines-pro-type-static-cast-downcast","clang-tidy/checks/cppcoreguidelines-interfaces-global-init","clang-tidy/checks/google-readability-redundant-smartptr-get","clang-tidy/checks/misc-virtual-near-miss","clang-tidy/checks/misc-unused-parameters","clang-tidy/checks/modernize-deprecated-headers","clang-tidy/checks/modernize-loop-convert","clangd","pp-trace","clang-tidy/checks/readability-redundant-string-init","clang-tidy/checks/android-cloexec-open","clang-tidy/checks/performance-inefficient-vector-operation","clang-tidy/checks/performance-inefficient-string-concatenation","clang-tidy/checks/misc-swapped-arguments","clang-tidy/checks/misc-multiple-statement-macro","clang-tidy/checks/misc-move-constructor-init","clang-tidy/checks/modernize-return-braced-init-list","clang-tidy/checks/misc-static-assert","clang-tidy/checks/modernize-use-transparent-functors","clang-tidy/checks/modernize-use-default","clang-tidy/checks/readability-delete-null-pointer","clang-tidy/checks/performance-implicit-cast-in-loop","clang-tidy/checks/misc-string-constructor","clang-tidy/checks/misc-misplaced-const","clang-tidy/checks/performance-type-promotion-in-math-fn","clang-tidy/checks/misc-redundant-expression","clang-tidy/checks/modernize-use-override","clang-tidy/checks/modernize-unary-static-assert","clang-tidy/checks/misc-string-compare","clang-tidy/checks/performance-unnecessary-copy-initialization","clang-tidy/checks/readability-inconsistent-declaration-parameter-name","clang-tidy/checks/misc-dangling-handle","clang-tidy/checks/readability-redundant-smartptr-get","clang-tidy/checks/readability-identifier-naming","clang-tidy"]})
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/AtomLLD.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/AtomLLD.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/AtomLLD.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/AtomLLD.html Thu May 10 06:54:16 2018
@@ -0,0 +1,221 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>ATOM-based lld — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="next" title="Linker Design" href="design.html" />
+ <link rel="prev" title="The ELF and COFF Linkers" href="NewLLD.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="design.html" title="Linker Design"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="NewLLD.html" title="The ELF and COFF Linkers"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">ATOM-based lld</a><ul>
+<li><a class="reference internal" href="#why-a-new-linker">Why a new linker?</a></li>
+<li><a class="reference internal" href="#contents">Contents</a><ul>
+</ul>
+</li>
+<li><a class="reference internal" href="#indices-and-tables">Indices and tables</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="NewLLD.html"
+ title="previous chapter">The ELF and COFF Linkers</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="design.html"
+ title="next chapter">Linker Design</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/AtomLLD.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="atom-based-lld">
+<h1>ATOM-based lld<a class="headerlink" href="#atom-based-lld" title="Permalink to this headline">¶</a></h1>
+<p>Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see <a class="reference internal" href="index.html"><em>LLD - The LLVM Linker</em></a>.</p>
+<p>ATOM-based lld is a new set of modular code for creating linker tools.
+Currently it supports Mach-O.</p>
+<ul class="simple">
+<li>End-User Features:<ul>
+<li>Compatible with existing linker options</li>
+<li>Reads standard Object Files</li>
+<li>Writes standard Executable Files</li>
+<li>Remove clang’s reliance on “the system linker”</li>
+<li>Uses the LLVM <a class="reference external" href="http://llvm.org/docs/DeveloperPolicy.html#license">“UIUC” BSD-Style license</a>.</li>
+</ul>
+</li>
+<li>Applications:<ul>
+<li>Modular design</li>
+<li>Support cross linking</li>
+<li>Easy to add new CPU support</li>
+<li>Can be built as static tool or library</li>
+</ul>
+</li>
+<li>Design and Implementation:<ul>
+<li>Extensive unit tests</li>
+<li>Internal linker model can be dumped/read to textual format</li>
+<li>Additional linking features can be plugged in as “passes”</li>
+<li>OS specific and CPU specific code factored out</li>
+</ul>
+</li>
+</ul>
+<div class="section" id="why-a-new-linker">
+<h2>Why a new linker?<a class="headerlink" href="#why-a-new-linker" title="Permalink to this headline">¶</a></h2>
+<p>The fact that clang relies on whatever linker tool you happen to have installed
+means that clang has been very conservative adopting features which require a
+recent linker.</p>
+<p>In the same way that the MC layer of LLVM has removed clang’s reliance on the
+system assembler tool, the lld project will remove clang’s reliance on the
+system linker tool.</p>
+</div>
+<div class="section" id="contents">
+<h2>Contents<a class="headerlink" href="#contents" title="Permalink to this headline">¶</a></h2>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="design.html">Linker Design</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="design.html#introduction">Introduction</a></li>
+<li class="toctree-l2"><a class="reference internal" href="design.html#atom-model">Atom Model</a></li>
+<li class="toctree-l2"><a class="reference internal" href="design.html#file-model">File Model</a></li>
+<li class="toctree-l2"><a class="reference internal" href="design.html#linking-steps">Linking Steps</a></li>
+<li class="toctree-l2"><a class="reference internal" href="design.html#lld-file-representations">lld::File representations</a></li>
+<li class="toctree-l2"><a class="reference internal" href="design.html#testing">Testing</a></li>
+<li class="toctree-l2"><a class="reference internal" href="design.html#design-issues">Design Issues</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="getting_started.html">Getting Started: Building and Running lld</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="getting_started.html#building-lld">Building lld</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="development.html">Development</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="development.html#creating-a-reader">Creating a Reader</a></li>
+<li class="toctree-l2"><a class="reference internal" href="development.html#modifying-the-driver">Modifying the Driver</a></li>
+<li class="toctree-l2"><a class="reference internal" href="development.html#debugging">Debugging</a></li>
+<li class="toctree-l2"><a class="reference internal" href="development.html#documentation">Documentation</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="open_projects.html">Open Projects</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="open_projects.html#include-lld-core">include/lld/Core</a></li>
+<li class="toctree-l2"><a class="reference internal" href="open_projects.html#documentation-todos">Documentation TODOs</a></li>
+</ul>
+</li>
+<li class="toctree-l1"><a class="reference internal" href="sphinx_intro.html">Sphinx Introduction for LLVM Developers</a><ul>
+<li class="toctree-l2"><a class="reference internal" href="sphinx_intro.html#quickstart">Quickstart</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sphinx_intro.html#learning-more">Learning More</a></li>
+<li class="toctree-l2"><a class="reference internal" href="sphinx_intro.html#installing-sphinx-in-a-virtual-environment">Installing Sphinx in a Virtual Environment</a></li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="indices-and-tables">
+<h2>Indices and tables<a class="headerlink" href="#indices-and-tables" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li><a class="reference internal" href="genindex.html"><em>Index</em></a></li>
+<li><a class="reference internal" href="search.html"><em>Search Page</em></a></li>
+</ul>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="design.html" title="Linker Design"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="NewLLD.html" title="The ELF and COFF Linkers"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/Driver.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/Driver.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/Driver.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/Driver.html Thu May 10 06:54:16 2018
@@ -0,0 +1,227 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Driver — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="up" title="Development" href="development.html" />
+ <link rel="next" title="Open Projects" href="open_projects.html" />
+ <link rel="prev" title="Developing lld Readers" href="Readers.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="open_projects.html" title="Open Projects"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="Readers.html" title="Developing lld Readers"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ <li><a href="development.html" accesskey="U">Development</a> »</li>
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Driver</a><ul>
+<li><a class="reference internal" href="#introduction">Introduction</a></li>
+<li><a class="reference internal" href="#overview">Overview</a><ul>
+<li><a class="reference internal" href="#flavors">Flavors</a><ul>
+<li><a class="reference internal" href="#selecting-a-flavor">Selecting a Flavor</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference internal" href="#adding-an-option-to-an-existing-flavor">Adding an Option to an existing Flavor</a></li>
+<li><a class="reference internal" href="#adding-a-flavor">Adding a Flavor</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="Readers.html"
+ title="previous chapter">Developing lld Readers</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="open_projects.html"
+ title="next chapter">Open Projects</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/Driver.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="driver">
+<h1>Driver<a class="headerlink" href="#driver" title="Permalink to this headline">¶</a></h1>
+<p>Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see <a class="reference internal" href="index.html"><em>LLD - The LLVM Linker</em></a>.</p>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#introduction" id="id1">Introduction</a></li>
+<li><a class="reference internal" href="#overview" id="id2">Overview</a><ul>
+<li><a class="reference internal" href="#flavors" id="id3">Flavors</a><ul>
+<li><a class="reference internal" href="#selecting-a-flavor" id="id4">Selecting a Flavor</a></li>
+</ul>
+</li>
+</ul>
+</li>
+<li><a class="reference internal" href="#adding-an-option-to-an-existing-flavor" id="id5">Adding an Option to an existing Flavor</a></li>
+<li><a class="reference internal" href="#adding-a-flavor" id="id6">Adding a Flavor</a></li>
+</ul>
+</div>
+<div class="section" id="introduction">
+<h2><a class="toc-backref" href="#id1">Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>This document describes the lld driver. The purpose of this document is to
+describe both the motivation and design goals for the driver, as well as details
+of the internal implementation.</p>
+</div>
+<div class="section" id="overview">
+<h2><a class="toc-backref" href="#id2">Overview</a><a class="headerlink" href="#overview" title="Permalink to this headline">¶</a></h2>
+<p>The lld driver is designed to support a number of different command line
+interfaces. The main interfaces we plan to support are binutils’ ld, Apple’s
+ld, and Microsoft’s link.exe.</p>
+<div class="section" id="flavors">
+<h3><a class="toc-backref" href="#id3">Flavors</a><a class="headerlink" href="#flavors" title="Permalink to this headline">¶</a></h3>
+<p>Each of these different interfaces is referred to as a flavor. There is also an
+extra flavor “core” which is used to exercise the core functionality of the
+linker it the test suite.</p>
+<ul class="simple">
+<li>gnu</li>
+<li>darwin</li>
+<li>link</li>
+<li>core</li>
+</ul>
+<div class="section" id="selecting-a-flavor">
+<h4><a class="toc-backref" href="#id4">Selecting a Flavor</a><a class="headerlink" href="#selecting-a-flavor" title="Permalink to this headline">¶</a></h4>
+<p>There are two different ways to tell lld which flavor to be. They are checked in
+order, so the second overrides the first. The first is to symlink <strong class="program">lld</strong>
+as <strong class="program">lld-{flavor}</strong> or just <strong class="program">{flavor}</strong>. You can also specify
+it as the first command line argument using <tt class="docutils literal"><span class="pre">-flavor</span></tt>:</p>
+<div class="highlight-python"><pre>$ lld -flavor gnu</pre>
+</div>
+<p>There is a shortcut for <tt class="docutils literal"><span class="pre">-flavor</span> <span class="pre">core</span></tt> as <tt class="docutils literal"><span class="pre">-core</span></tt>.</p>
+</div>
+</div>
+</div>
+<div class="section" id="adding-an-option-to-an-existing-flavor">
+<h2><a class="toc-backref" href="#id5">Adding an Option to an existing Flavor</a><a class="headerlink" href="#adding-an-option-to-an-existing-flavor" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Add the option to the desired <tt class="file docutils literal"><span class="pre">lib/Driver/</span><em><span class="pre">flavor</span></em><span class="pre">Options.td</span></tt>.</li>
+<li>Add to <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::FlavorLinkingContext</span></tt> a getter and setter method
+for the option.</li>
+<li>Modify <tt class="xref cpp cpp-func docutils literal"><span class="pre">lld::FlavorDriver::parse()</span></tt> in :file:
+<cite>lib/Driver/{Flavor}Driver.cpp</cite> to call the targetInfo setter
+for corresponding to the option.</li>
+<li>Modify {Flavor}Reader and {Flavor}Writer to use the new targtInfo option.</li>
+</ol>
+</div>
+<div class="section" id="adding-a-flavor">
+<h2><a class="toc-backref" href="#id6">Adding a Flavor</a><a class="headerlink" href="#adding-a-flavor" title="Permalink to this headline">¶</a></h2>
+<ol class="arabic simple">
+<li>Add an entry for the flavor in <tt class="file docutils literal"><span class="pre">include/lld/Driver/Driver.h</span></tt> to
+<tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::UniversalDriver::Flavor</span></tt>.</li>
+<li>Add an entry in <tt class="file docutils literal"><span class="pre">lib/Driver/UniversalDriver.cpp</span></tt> to
+<tt class="xref cpp cpp-func docutils literal"><span class="pre">lld::Driver::strToFlavor()</span></tt> and
+<tt class="xref cpp cpp-func docutils literal"><span class="pre">lld::UniversalDriver::link()</span></tt>.
+This allows the flavor to be selected via symlink and <cite>-flavor</cite>.</li>
+<li>Add a tablegen file called <tt class="file docutils literal"><span class="pre">lib/Driver/</span><em><span class="pre">flavor</span></em><span class="pre">Options.td</span></tt> that
+describes the options. If the options are a superset of another driver, that
+driver’s td file can simply be included. The <tt class="file docutils literal"><em><span class="pre">flavor</span></em><span class="pre">Options.td</span></tt> file
+must also be added to <tt class="file docutils literal"><span class="pre">lib/Driver/CMakeLists.txt</span></tt>.</li>
+<li>Add a <tt class="docutils literal"><span class="pre">{flavor}Driver</span></tt> as a subclass of <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::Driver</span></tt>
+in <tt class="file docutils literal"><span class="pre">lib/Driver/</span><em><span class="pre">flavor</span></em><span class="pre">Driver.cpp</span></tt>.</li>
+</ol>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="open_projects.html" title="Open Projects"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="Readers.html" title="Developing lld Readers"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ <li><a href="development.html" >Development</a> »</li>
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/NewLLD.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/NewLLD.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/NewLLD.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/NewLLD.html Thu May 10 06:54:16 2018
@@ -0,0 +1,413 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>The ELF and COFF Linkers — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="next" title="ATOM-based lld" href="AtomLLD.html" />
+ <link rel="prev" title="LLD - The LLVM Linker" href="index.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="AtomLLD.html" title="ATOM-based lld"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="index.html" title="LLD - The LLVM Linker"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">The ELF and COFF Linkers</a><ul>
+<li><a class="reference internal" href="#the-elf-linker-as-a-library">The ELF Linker as a Library</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#design">Design</a><ul>
+<li><a class="reference internal" href="#key-concepts">Key Concepts</a></li>
+<li><a class="reference internal" href="#numbers-you-want-to-know">Numbers You Want to Know</a></li>
+<li><a class="reference internal" href="#important-data-structures">Important Data Structures</a></li>
+<li><a class="reference internal" href="#link-time-optimization">Link-Time Optimization</a></li>
+<li><a class="reference internal" href="#glossary">Glossary</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="index.html"
+ title="previous chapter">LLD - The LLVM Linker</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="AtomLLD.html"
+ title="next chapter">ATOM-based lld</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/NewLLD.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="the-elf-and-coff-linkers">
+<h1>The ELF and COFF Linkers<a class="headerlink" href="#the-elf-and-coff-linkers" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="the-elf-linker-as-a-library">
+<h2>The ELF Linker as a Library<a class="headerlink" href="#the-elf-linker-as-a-library" title="Permalink to this headline">¶</a></h2>
+<p>You can embed LLD to your program by linking against it and calling the linker’s
+entry point function lld::elf::link.</p>
+<p>The current policy is that it is your reponsibility to give trustworthy object
+files. The function is guaranteed to return as long as you do not pass corrupted
+or malicious object files. A corrupted file could cause a fatal error or SEGV.
+That being said, you don’t need to worry too much about it if you create object
+files in the usual way and give them to the linker. It is naturally expected to
+work, or otherwise it’s a linker’s bug.</p>
+</div>
+</div>
+<div class="section" id="design">
+<h1>Design<a class="headerlink" href="#design" title="Permalink to this headline">¶</a></h1>
+<p>We will describe the design of the linkers in the rest of the document.</p>
+<div class="section" id="key-concepts">
+<h2>Key Concepts<a class="headerlink" href="#key-concepts" title="Permalink to this headline">¶</a></h2>
+<p>Linkers are fairly large pieces of software.
+There are many design choices you have to make to create a complete linker.</p>
+<p>This is a list of design choices we’ve made for ELF and COFF LLD.
+We believe that these high-level design choices achieved a right balance
+between speed, simplicity and extensibility.</p>
+<ul>
+<li><p class="first">Implement as native linkers</p>
+<p>We implemented the linkers as native linkers for each file format.</p>
+<p>The two linkers share the same design but do not share code.
+Sharing code makes sense if the benefit is worth its cost.
+In our case, ELF and COFF are different enough that we thought the layer to
+abstract the differences wouldn’t worth its complexity and run-time cost.
+Elimination of the abstract layer has greatly simplified the implementation.</p>
+</li>
+<li><p class="first">Speed by design</p>
+<p>One of the most important things in archiving high performance is to
+do less rather than do it efficiently.
+Therefore, the high-level design matters more than local optimizations.
+Since we are trying to create a high-performance linker,
+it is very important to keep the design as efficient as possible.</p>
+<p>Broadly speaking, we do not do anything until we have to do it.
+For example, we do not read section contents or relocations
+until we need them to continue linking.
+When we need to do some costly operation (such as looking up
+a hash table for each symbol), we do it only once.
+We obtain a handler (which is typically just a pointer to actual data)
+on the first operation and use it throughout the process.</p>
+</li>
+<li><p class="first">Efficient archive file handling</p>
+<p>LLD’s handling of archive files (the files with ”.a” file extension) is different
+from the traditional Unix linkers and similar to Windows linkers.
+We’ll describe how the traditional Unix linker handles archive files,
+what the problem is, and how LLD approached the problem.</p>
+<p>The traditional Unix linker maintains a set of undefined symbols during linking.
+The linker visits each file in the order as they appeared in the command line
+until the set becomes empty. What the linker would do depends on file type.</p>
+<ul class="simple">
+<li>If the linker visits an object file, the linker links object files to the result,
+and undefined symbols in the object file are added to the set.</li>
+<li>If the linker visits an archive file, it checks for the archive file’s symbol table
+and extracts all object files that have definitions for any symbols in the set.</li>
+</ul>
+<p>This algorithm sometimes leads to a counter-intuitive behavior.
+If you give archive files before object files, nothing will happen
+because when the linker visits archives, there is no undefined symbols in the set.
+As a result, no files are extracted from the first archive file,
+and the link is done at that point because the set is empty after it visits one file.</p>
+<p>You can fix the problem by reordering the files,
+but that cannot fix the issue of mutually-dependent archive files.</p>
+<p>Linking mutually-dependent archive files is tricky.
+You may specify the same archive file multiple times to
+let the linker visit it more than once.
+Or, you may use the special command line options, <cite>–start-group</cite> and <cite>–end-group</cite>,
+to let the linker loop over the files between the options until
+no new symbols are added to the set.</p>
+<p>Visiting the same archive files multiple makes the linker slower.</p>
+<p>Here is how LLD approaches the problem. Instead of memorizing only undefined symbols,
+we program LLD so that it memorizes all symbols.
+When it sees an undefined symbol that can be resolved by extracting an object file
+from an archive file it previously visited, it immediately extracts the file and link it.
+It is doable because LLD does not forget symbols it have seen in archive files.</p>
+<p>We believe that the LLD’s way is efficient and easy to justify.</p>
+<p>The semantics of LLD’s archive handling is different from the traditional Unix’s.
+You can observe it if you carefully craft archive files to exploit it.
+However, in reality, we don’t know any program that cannot link
+with our algorithm so far, so it’s not going to cause trouble.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="numbers-you-want-to-know">
+<h2>Numbers You Want to Know<a class="headerlink" href="#numbers-you-want-to-know" title="Permalink to this headline">¶</a></h2>
+<p>To give you intuition about what kinds of data the linker is mainly working on,
+I’ll give you the list of objects and their numbers LLD has to read and process
+in order to link a very large executable. In order to link Chrome with debug info,
+which is roughly 2 GB in output size, LLD reads</p>
+<ul class="simple">
+<li>17,000 files,</li>
+<li>1,800,000 sections,</li>
+<li>6,300,000 symbols, and</li>
+<li>13,000,000 relocations.</li>
+</ul>
+<p>LLD produces the 2 GB executable in 15 seconds.</p>
+<p>These numbers vary depending on your program, but in general,
+you have a lot of relocations and symbols for each file.
+If your program is written in C++, symbol names are likely to be
+pretty long because of name mangling.</p>
+<p>It is important to not waste time on relocations and symbols.</p>
+<p>In the above case, the total amount of symbol strings is 450 MB,
+and inserting all of them to a hash table takes 1.5 seconds.
+Therefore, if you causally add a hash table lookup for each symbol,
+it would slow down the linker by 10%. So, don’t do that.</p>
+<p>On the other hand, you don’t have to pursue efficiency
+when handling files.</p>
+</div>
+<div class="section" id="important-data-structures">
+<h2>Important Data Structures<a class="headerlink" href="#important-data-structures" title="Permalink to this headline">¶</a></h2>
+<p>We will describe the key data structures in LLD in this section.
+The linker can be understood as the interactions between them.
+Once you understand their functions, the code of the linker should look obvious to you.</p>
+<ul>
+<li><p class="first">SymbolBody</p>
+<p>SymbolBody is a class to represent symbols.
+They are created for symbols in object files or archive files.
+The linker creates linker-defined symbols as well.</p>
+<p>There are basically three types of SymbolBodies: Defined, Undefined, or Lazy.</p>
+<ul class="simple">
+<li>Defined symbols are for all symbols that are considered as “resolved”,
+including real defined symbols, COMDAT symbols, common symbols,
+absolute symbols, linker-created symbols, etc.</li>
+<li>Undefined symbols represent undefined symbols, which need to be replaced by
+Defined symbols by the resolver until the link is complete.</li>
+<li>Lazy symbols represent symbols we found in archive file headers
+which can turn into Defined if we read archieve members.</li>
+</ul>
+</li>
+<li><p class="first">Symbol</p>
+<p>A Symbol is a container for a SymbolBody. There’s only one Symbol for each
+unique symbol name (this uniqueness is guaranteed by the symbol table).
+Each global symbol has only one SymbolBody at any one time, which is
+the SymbolBody stored within a memory region of the Symbol large enough
+to store any SymbolBody.</p>
+<p>As the resolver reads symbols from input files, it replaces the Symbol’s
+SymbolBody with the “best” SymbolBody for its symbol name by constructing
+the new SymbolBody in place on top of the existing SymbolBody. For example,
+if the resolver is given a defined symbol, and the SymbolBody with its name
+is undefined, it will construct a Defined SymbolBody over the Undefined
+SymbolBody.</p>
+<p>This means that each SymbolBody pointer always points to the best SymbolBody,
+and it is possible to get from a SymbolBody to a Symbol, or vice versa,
+by adding or subtracting a fixed offset. This memory layout helps reduce
+the cache miss rate through high locality and a small number of required
+pointer indirections.</p>
+</li>
+<li><p class="first">SymbolTable</p>
+<p>SymbolTable is basically a hash table from strings to Symbols
+with logic to resolve symbol conflicts. It resolves conflicts by symbol type.</p>
+<ul class="simple">
+<li>If we add Defined and Undefined symbols, the symbol table will keep the former.</li>
+<li>If we add Defined and Lazy symbols, it will keep the former.</li>
+<li>If we add Lazy and Undefined, it will keep the former,
+but it will also trigger the Lazy symbol to load the archive member
+to actually resolve the symbol.</li>
+</ul>
+</li>
+<li><p class="first">Chunk (COFF specific)</p>
+<p>Chunk represents a chunk of data that will occupy space in an output.
+Each regular section becomes a chunk.
+Chunks created for common or BSS symbols are not backed by sections.
+The linker may create chunks to append additional data to an output as well.</p>
+<p>Chunks know about their size, how to copy their data to mmap’ed outputs,
+and how to apply relocations to them.
+Specifically, section-based chunks know how to read relocation tables
+and how to apply them.</p>
+</li>
+<li><p class="first">InputSection (ELF specific)</p>
+<p>Since we have less synthesized data for ELF, we don’t abstract slices of
+input files as Chunks for ELF. Instead, we directly use the input section
+as an internal data type.</p>
+<p>InputSection knows about their size and how to copy themselves to
+mmap’ed outputs, just like COFF Chunks.</p>
+</li>
+<li><p class="first">OutputSection</p>
+<p>OutputSection is a container of InputSections (ELF) or Chunks (COFF).
+An InputSection or Chunk belongs to at most one OutputSection.</p>
+</li>
+</ul>
+<p>There are mainly three actors in this linker.</p>
+<ul>
+<li><p class="first">InputFile</p>
+<p>InputFile is a superclass of file readers.
+We have a different subclass for each input file type,
+such as regular object file, archive file, etc.
+They are responsible for creating and owning SymbolBodies and
+InputSections/Chunks.</p>
+</li>
+<li><p class="first">Writer</p>
+<p>The writer is responsible for writing file headers and InputSections/Chunks to a file.
+It creates OutputSections, put all InputSections/Chunks into them,
+assign unique, non-overlapping addresses and file offsets to them,
+and then write them down to a file.</p>
+</li>
+<li><p class="first">Driver</p>
+<p>The linking process is driven by the driver. The driver:</p>
+<ul class="simple">
+<li>processes command line options,</li>
+<li>creates a symbol table,</li>
+<li>creates an InputFile for each input file and puts all symbols within into the symbol table,</li>
+<li>checks if there’s no remaining undefined symbols,</li>
+<li>creates a writer,</li>
+<li>and passes the symbol table to the writer to write the result to a file.</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="section" id="link-time-optimization">
+<h2>Link-Time Optimization<a class="headerlink" href="#link-time-optimization" title="Permalink to this headline">¶</a></h2>
+<p>LTO is implemented by handling LLVM bitcode files as object files.
+The linker resolves symbols in bitcode files normally. If all symbols
+are successfully resolved, it then runs LLVM passes
+with all bitcode files to convert them to one big regular ELF/COFF file.
+Finally, the linker replaces bitcode symbols with ELF/COFF symbols,
+so that they are linked as if they were in the native format from the beginning.</p>
+<p>The details are described in this document.
+<a class="reference external" href="http://llvm.org/docs/LinkTimeOptimization.html">http://llvm.org/docs/LinkTimeOptimization.html</a></p>
+</div>
+<div class="section" id="glossary">
+<h2>Glossary<a class="headerlink" href="#glossary" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">RVA (COFF)</p>
+<p>Short for Relative Virtual Address.</p>
+<p>Windows executables or DLLs are not position-independent; they are
+linked against a fixed address called an image base. RVAs are
+offsets from an image base.</p>
+<p>Default image bases are 0x140000000 for executables and 0x18000000
+for DLLs. For example, when we are creating an executable, we assume
+that the executable will be loaded at address 0x140000000 by the
+loader, so we apply relocations accordingly. Result texts and data
+will contain raw absolute addresses.</p>
+</li>
+<li><p class="first">VA</p>
+<p>Short for Virtual Address. For COFF, it is equivalent to RVA + image base.</p>
+</li>
+<li><p class="first">Base relocations (COFF)</p>
+<p>Relocation information for the loader. If the loader decides to map
+an executable or a DLL to a different address than their image
+bases, it fixes up binaries using information contained in the base
+relocation table. A base relocation table consists of a list of
+locations containing addresses. The loader adds a difference between
+RVA and actual load address to all locations listed there.</p>
+<p>Note that this run-time relocation mechanism is much simpler than ELF.
+There’s no PLT or GOT. Images are relocated as a whole just
+by shifting entire images in memory by some offsets. Although doing
+this breaks text sharing, I think this mechanism is not actually bad
+on today’s computers.</p>
+</li>
+<li><p class="first">ICF</p>
+<p>Short for Identical COMDAT Folding (COFF) or Identical Code Folding (ELF).</p>
+<p>ICF is an optimization to reduce output size by merging read-only sections
+by not only their names but by their contents. If two read-only sections
+happen to have the same metadata, actual contents and relocations,
+they are merged by ICF. It is known as an effective technique,
+and it usually reduces C++ program’s size by a few percent or more.</p>
+<p>Note that this is not entirely sound optimization. C/C++ require
+different functions have different addresses. If a program depends on
+that property, it would fail at runtime.</p>
+<p>On Windows, that’s not really an issue because MSVC link.exe enabled
+the optimization by default. As long as your program works
+with the linker’s default settings, your program should be safe with ICF.</p>
+<p>On Unix, your program is generally not guaranteed to be safe with ICF,
+although large programs happen to work correctly.
+LLD works fine with ICF for example.</p>
+</li>
+</ul>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="AtomLLD.html" title="ATOM-based lld"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="index.html" title="LLD - The LLVM Linker"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/Readers.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/Readers.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/Readers.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/Readers.html Thu May 10 06:54:16 2018
@@ -0,0 +1,300 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Developing lld Readers — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="up" title="Development" href="development.html" />
+ <link rel="next" title="Driver" href="Driver.html" />
+ <link rel="prev" title="Development" href="development.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="Driver.html" title="Driver"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="development.html" title="Development"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ <li><a href="development.html" accesskey="U">Development</a> »</li>
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Developing lld Readers</a><ul>
+<li><a class="reference internal" href="#introduction">Introduction</a></li>
+<li><a class="reference internal" href="#where-to-start">Where to start</a></li>
+<li><a class="reference internal" href="#readers-are-factories">Readers are factories</a></li>
+<li><a class="reference internal" href="#memory-ownership">Memory Ownership</a></li>
+<li><a class="reference internal" href="#making-atoms">Making Atoms</a></li>
+<li><a class="reference internal" href="#performance">Performance</a></li>
+<li><a class="reference internal" href="#testing">Testing</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="development.html"
+ title="previous chapter">Development</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="Driver.html"
+ title="next chapter">Driver</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/Readers.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="developing-lld-readers">
+<span id="readers"></span><h1>Developing lld Readers<a class="headerlink" href="#developing-lld-readers" title="Permalink to this headline">¶</a></h1>
+<p>Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see <a class="reference internal" href="index.html"><em>LLD - The LLVM Linker</em></a>.</p>
+<div class="section" id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>The purpose of a “Reader” is to take an object file in a particular format
+and create an <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::File</span></tt> (which is a graph of Atoms)
+representing the object file. A Reader inherits from
+<tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::Reader</span></tt> which lives in
+<tt class="file docutils literal"><span class="pre">include/lld/Core/Reader.h</span></tt> and
+<tt class="file docutils literal"><span class="pre">lib/Core/Reader.cpp</span></tt>.</p>
+<p>The Reader infrastructure for an object format <tt class="docutils literal"><span class="pre">Foo</span></tt> requires the
+following pieces in order to fit into lld:</p>
+<p><tt class="file docutils literal"><span class="pre">include/lld/ReaderWriter/ReaderFoo.h</span></tt></p>
+<blockquote>
+<div><dl class="class">
+<dt id="ReaderOptionsFoo">
+<em class="property">class </em><tt class="descname">ReaderOptionsFoo</tt> : <em class="property">public</em> <em>ReaderOptions</em><a class="headerlink" href="#ReaderOptionsFoo" title="Permalink to this definition">¶</a></dt>
+<dd><p>This Options class is the only way to configure how the Reader will
+parse any file into an <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::Reader</span></tt> object. This class
+should be declared in the <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld</span></tt> namespace.</p>
+</dd></dl>
+
+<dl class="function">
+<dt id="createReaderFoo__ReaderOptionsFooR">
+Reader* <tt class="descname">createReaderFoo</tt><big>(</big>ReaderOptionsFoo& <em>reader</em><big>)</big><a class="headerlink" href="#createReaderFoo__ReaderOptionsFooR" title="Permalink to this definition">¶</a></dt>
+<dd><p>This factory function configures and create the Reader. This function
+should be declared in the <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld</span></tt> namespace.</p>
+</dd></dl>
+
+</div></blockquote>
+<p><tt class="file docutils literal"><span class="pre">lib/ReaderWriter/Foo/ReaderFoo.cpp</span></tt></p>
+<blockquote>
+<div><dl class="class">
+<dt id="ReaderFoo">
+<em class="property">class </em><tt class="descname">ReaderFoo</tt> : <em class="property">public</em> <em>Reader</em><a class="headerlink" href="#ReaderFoo" title="Permalink to this definition">¶</a></dt>
+<dd><p>This is the concrete Reader class which can be called to parse
+object files. It should be declared in an anonymous namespace or
+if there is shared code with the <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::WriterFoo</span></tt> you
+can make a nested namespace (e.g. <tt class="xref cpp cpp-class docutils literal"><span class="pre">lld::foo</span></tt>).</p>
+</dd></dl>
+
+</div></blockquote>
+<p>You may have noticed that <a class="reference internal" href="#ReaderFoo" title="ReaderFoo"><tt class="xref cpp cpp-class docutils literal"><span class="pre">ReaderFoo</span></tt></a> is not declared in the
+<tt class="docutils literal"><span class="pre">.h</span></tt> file. An important design aspect of lld is that all Readers are
+created <em>only</em> through an object-format-specific
+<a class="reference internal" href="#createReaderFoo__ReaderOptionsFooR" title="createReaderFoo"><tt class="xref cpp cpp-func docutils literal"><span class="pre">createReaderFoo()</span></tt></a> factory function. The creation of the Reader is
+parametrized through a <a class="reference internal" href="#ReaderOptionsFoo" title="ReaderOptionsFoo"><tt class="xref cpp cpp-class docutils literal"><span class="pre">ReaderOptionsFoo</span></tt></a> class. This options
+class is the one-and-only way to control how the Reader operates when
+parsing an input file into an Atom graph. For instance, you may want the
+Reader to only accept certain architectures. The options class can be
+instantiated from command line options or be programmatically configured.</p>
+</div>
+<div class="section" id="where-to-start">
+<h2>Where to start<a class="headerlink" href="#where-to-start" title="Permalink to this headline">¶</a></h2>
+<p>The lld project already has a skeleton of source code for Readers for
+<tt class="docutils literal"><span class="pre">ELF</span></tt>, <tt class="docutils literal"><span class="pre">PECOFF</span></tt>, <tt class="docutils literal"><span class="pre">MachO</span></tt>, and lld’s native <tt class="docutils literal"><span class="pre">YAML</span></tt> graph format.
+If your file format is a variant of one of those, you should modify the
+existing Reader to support your variant. This is done by customizing the Options
+class for the Reader and making appropriate changes to the <tt class="docutils literal"><span class="pre">.cpp</span></tt> file to
+interpret those options and act accordingly.</p>
+<p>If your object file format is not a variant of any existing Reader, you’ll need
+to create a new Reader subclass with the organization described above.</p>
+</div>
+<div class="section" id="readers-are-factories">
+<h2>Readers are factories<a class="headerlink" href="#readers-are-factories" title="Permalink to this headline">¶</a></h2>
+<p>The linker will usually only instantiate your Reader once. That one Reader will
+have its loadFile() method called many times with different input files.
+To support multithreaded linking, the Reader may be parsing multiple input
+files in parallel. Therefore, there should be no parsing state in you Reader
+object. Any parsing state should be in ivars of your File subclass or in
+some temporary object.</p>
+<p>The key method to implement in a reader is:</p>
+<div class="highlight-python"><pre>virtual error_code loadFile(LinkerInput &input,
+ std::vector<std::unique_ptr<File>> &result);</pre>
+</div>
+<p>It takes a memory buffer (which contains the contents of the object file
+being read) and returns an instantiated lld::File object which is
+a collection of Atoms. The result is a vector of File pointers (instead of
+simple a File pointer) because some file formats allow multiple object
+“files” to be encoded in one file system file.</p>
+</div>
+<div class="section" id="memory-ownership">
+<h2>Memory Ownership<a class="headerlink" href="#memory-ownership" title="Permalink to this headline">¶</a></h2>
+<p>Atoms are always owned by their File object. During core linking when Atoms
+are coalesced or stripped away, core linking does not delete them.
+Core linking just removes those unused Atoms from its internal list.
+The destructor of a File object is responsible for deleting all Atoms it
+owns, and if ownership of the MemoryBuffer was passed to it, the File
+destructor needs to delete that too.</p>
+</div>
+<div class="section" id="making-atoms">
+<h2>Making Atoms<a class="headerlink" href="#making-atoms" title="Permalink to this headline">¶</a></h2>
+<p>The internal model of lld is purely Atom based. But most object files do not
+have an explicit concept of Atoms, instead most have “sections”. The way
+to think of this is that a section is just a list of Atoms with common
+attributes.</p>
+<p>The first step in parsing section-based object files is to cleave each
+section into a list of Atoms. The technique may vary by section type. For
+code sections (e.g. .text), there are usually symbols at the start of each
+function. Those symbol addresses are the points at which the section is
+cleaved into discrete Atoms. Some file formats (like ELF) also include the
+length of each symbol in the symbol table. Otherwise, the length of each
+Atom is calculated to run to the start of the next symbol or the end of the
+section.</p>
+<p>Other sections types can be implicitly cleaved. For instance c-string literals
+or unwind info (e.g. .eh_frame) can be cleaved by having the Reader look at
+the content of the section. It is important to cleave sections into Atoms
+to remove false dependencies. For instance the .eh_frame section often
+has no symbols, but contains “pointers” to the functions for which it
+has unwind info. If the .eh_frame section was not cleaved (but left as one
+big Atom), there would always be a reference (from the eh_frame Atom) to
+each function. So the linker would be unable to coalesce or dead stripped
+away the function atoms.</p>
+<p>The lld Atom model also requires that a reference to an undefined symbol be
+modeled as a Reference to an UndefinedAtom. So the Reader also needs to
+create an UndefinedAtom for each undefined symbol in the object file.</p>
+<p>Once all Atoms have been created, the second step is to create References
+(recall that Atoms are “nodes” and References are “edges”). Most References
+are created by looking at the “relocation records” in the object file. If
+a function contains a call to “malloc”, there is usually a relocation record
+specifying the address in the section and the symbol table index. Your
+Reader will need to convert the address to an Atom and offset and the symbol
+table index into a target Atom. If “malloc” is not defined in the object file,
+the target Atom of the Reference will be an UndefinedAtom.</p>
+</div>
+<div class="section" id="performance">
+<h2>Performance<a class="headerlink" href="#performance" title="Permalink to this headline">¶</a></h2>
+<p>Once you have the above working to parse an object file into Atoms and
+References, you’ll want to look at performance. Some techniques that can
+help performance are:</p>
+<ul class="simple">
+<li>Use llvm::BumpPtrAllocator or pre-allocate one big vector<Reference> and then
+just have each atom point to its subrange of References in that vector.
+This can be faster that allocating each Reference as separate object.</li>
+<li>Pre-scan the symbol table and determine how many atoms are in each section
+then allocate space for all the Atom objects at once.</li>
+<li>Don’t copy symbol names or section content to each Atom, instead use
+StringRef and ArrayRef in each Atom to point to its name and content in the
+MemoryBuffer.</li>
+</ul>
+</div>
+<div class="section" id="testing">
+<h2>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h2>
+<p>We are still working on infrastructure to test Readers. The issue is that
+you don’t want to check in binary files to the test suite. And the tools
+for creating your object file from assembly source may not be available on
+every OS.</p>
+<p>We are investigating a way to use YAML to describe the section, symbols,
+and content of a file. Then have some code which will write out an object
+file from that YAML description.</p>
+<p>Once that is in place, you can write test cases that contain section/symbols
+YAML and is run through the linker to produce Atom/References based YAML which
+is then run through FileCheck to verify the Atoms and References are as
+expected.</p>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="Driver.html" title="Driver"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="development.html" title="Development"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ <li><a href="development.html" >Development</a> »</li>
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/ReleaseNotes.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/ReleaseNotes.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/ReleaseNotes.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/ReleaseNotes.html Thu May 10 06:54:16 2018
@@ -0,0 +1,298 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>lld 5.0.0 Release Notes — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="prev" title="Windows support" href="windows_support.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="windows_support.html" title="Windows support"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">lld 5.0.0 Release Notes</a><ul>
+<li><a class="reference internal" href="#introduction">Introduction</a></li>
+<li><a class="reference internal" href="#non-comprehensive-list-of-changes-in-this-release">Non-comprehensive list of changes in this release</a><ul>
+<li><a class="reference internal" href="#elf-improvements">ELF Improvements</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#contributors-to-lld-5-0">Contributors to lld 5.0</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="windows_support.html"
+ title="previous chapter">Windows support</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/ReleaseNotes.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="lld-5-0-0-release-notes">
+<h1>lld 5.0.0 Release Notes<a class="headerlink" href="#lld-5-0-0-release-notes" title="Permalink to this headline">¶</a></h1>
+<div class="contents local topic" id="contents">
+<ul class="simple">
+<li><a class="reference internal" href="#introduction" id="id1">Introduction</a></li>
+<li><a class="reference internal" href="#non-comprehensive-list-of-changes-in-this-release" id="id2">Non-comprehensive list of changes in this release</a><ul>
+<li><a class="reference internal" href="#elf-improvements" id="id3">ELF Improvements</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#contributors-to-lld-5-0" id="id4">Contributors to lld 5.0</a></li>
+</ul>
+</div>
+<div class="section" id="introduction">
+<h2><a class="toc-backref" href="#id1">Introduction</a><a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>lld is a linker from the LLVM project. It supports ELF (Unix), COFF (Windows)
+and Mach-O (macOS), and it is generally faster than the GNU bfd or gold linkers
+or the MSVC linker.</p>
+<p>lld is designed to be a drop-in replacement for the system linkers, so that
+users don’t need to change their build systems other than swapping the linker
+command.</p>
+<p>All lld releases may be downloaded from the <a class="reference external" href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
+</div>
+<div class="section" id="non-comprehensive-list-of-changes-in-this-release">
+<h2><a class="toc-backref" href="#id2">Non-comprehensive list of changes in this release</a><a class="headerlink" href="#non-comprehensive-list-of-changes-in-this-release" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="elf-improvements">
+<h3><a class="toc-backref" href="#id3">ELF Improvements</a><a class="headerlink" href="#elf-improvements" title="Permalink to this headline">¶</a></h3>
+<ul>
+<li><p class="first">First and foremost, a lot of compatibility issues and bugs have been fixed.
+Linker script support has significantly improved. As a result, we believe you
+are very likely to be able to link your programs with lld without experiencing
+any problem now.</p>
+</li>
+<li><p class="first">Error message format has changed in order to improve readability.
+Traditionally, linker’s error messages are concise and arguably too terse.
+This is an example of lld 4.0.0’s error message (they are actually in one line):</p>
+<div class="highlight-python"><pre>/ssd/clang/bin/ld.lld: error: /ssd/llvm-project/lld/ELF/Writer.cpp:207:
+ undefined symbol 'lld::elf::EhFrameSection::addSection()'</pre>
+</div>
+<p>It is not easy to read because too much information is packed into a single line
+and the embedded text, particularly a symbol name, is sometimes too long.
+In lld 5.0.0, we use more vertical space to print out error messages in a more
+structured manner like this:</p>
+<div class="highlight-python"><pre>bin/ld.lld: error: undefined symbol: lld::elf::EhFrameSection::addSection()
+>>> Referenced by Writer.cpp:207 (/ssd/llvm-project/lld/ELF/Writer.cpp:207)
+>>> Writer.cpp.o in archive lib/liblldELF.a</pre>
+</div>
+<p>As a bonus, the new error message contains source code location of the error
+if it is available from debug info.</p>
+</li>
+<li><p class="first"><tt class="docutils literal"><span class="pre">./configure</span></tt> scripts generated by GNU autoconf determines whether a linker
+supports modern GNU-compatible features or not by searching for “GNU” in the
+<tt class="docutils literal"><span class="pre">--help</span></tt> message. To be compatible with the scripts, we decided to add a
+string “(compatible with GNU linkers)” to our <tt class="docutils literal"><span class="pre">--help</span></tt> message. This is a
+hack, but just like the web browser’s User-Agent string (which everyone still
+claim they are “Mozilla/5.0”), we had no choice other than doing this to claim
+that we accept GNU-compatible options.</p>
+</li>
+<li><p class="first">The <tt class="docutils literal"><span class="pre">-Map</span></tt> option is added. The option is to make the linker to print out how
+input files are mapped to the output file. Here is an example:</p>
+<div class="highlight-python"><pre>Address Size Align Out In Symbol
+00000000016d84d8 00000000008f8f50 8 .eh_frame
+00000000016d84d8 00000000008f8f50 8 <internal>:(.eh_frame)
+0000000001fd2000 00000000034b3bd0 16 .text
+0000000001fd2000 000000000000002a 1 /usr/lib/x86_64-linux-gnu/crt1.o:(.text)
+0000000001fd2000 0000000000000000 0 _start
+0000000001fd202a 0000000000000000 1 /usr/lib/x86_64-linux-gnu/crti.o:(.text)
+0000000001fd2030 00000000000000bd 16 /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o:(.text)
+0000000001fd2030 0000000000000000 0 deregister_tm_clones
+0000000001fd2060 0000000000000000 0 register_tm_clones</pre>
+</div>
+<p>This format is not the same as GNU linkers as our linker internal data
+structure is different from them but contains the same amount of information
+and should be more readable than their outputs.</p>
+<p>As with other lld features, the <tt class="docutils literal"><span class="pre">-Map</span></tt> option is designed with speed in mind.
+The option would generate a hundred megabyte text file if you link a large
+program with it. lld can usually do that in a few seconds, and it is generally
+a few times faster than the GNU gold’s <tt class="docutils literal"><span class="pre">-Map</span></tt> option.</p>
+</li>
+<li><p class="first">lld’s <tt class="docutils literal"><span class="pre">--gdb-index</span></tt> option used to be slow, but we sped it up so that it is
+at least as fast as the GNU gold.</p>
+</li>
+<li><p class="first">Some nonstandard relocations, such as R_X86_64_8 or R_X86_64_16, are supported.
+They are not used for 32/64-bit applications, but some 16-bit bootloaders need
+them.</p>
+</li>
+<li><p class="first">Paddings in executable text sections are now filled with trap instructions
+(such as INT3) instead of being left as null bytes. This change improves
+disassembler outputs because it now prints out trap instructions instead of
+trying to decode 0x00 as an instruction. It also makes debugging of some type
+of program easier because when the control reaches a padding, the program
+immediately raises an error.</p>
+</li>
+<li><p class="first">The following options are added: <tt class="docutils literal"><span class="pre">-M</span></tt>, <tt class="docutils literal"><span class="pre">-Map</span></tt>,
+<tt class="docutils literal"><span class="pre">-compress-debug-sections</span></tt>, <tt class="docutils literal"><span class="pre">-emit-relocs</span></tt>,
+<tt class="docutils literal"><span class="pre">-error-unresolved-symbols</span></tt>, <tt class="docutils literal"><span class="pre">-exclude-libs</span></tt>, <tt class="docutils literal"><span class="pre">-filter</span></tt>,
+<tt class="docutils literal"><span class="pre">-no-dynamic-linker</span></tt>, <tt class="docutils literal"><span class="pre">-no-export-dynamic</span></tt>, <tt class="docutils literal"><span class="pre">-no-fatal-warnings</span></tt>,
+<tt class="docutils literal"><span class="pre">-print-map</span></tt>, <tt class="docutils literal"><span class="pre">-warn-unresolved-symbols</span></tt>, <tt class="docutils literal"><span class="pre">-z</span> <span class="pre">nocopyreloc</span></tt>,
+<tt class="docutils literal"><span class="pre">-z</span> <span class="pre">notext</span></tt>, <tt class="docutils literal"><span class="pre">-z</span> <span class="pre">rodynamic</span></tt></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="contributors-to-lld-5-0">
+<h2><a class="toc-backref" href="#id4">Contributors to lld 5.0</a><a class="headerlink" href="#contributors-to-lld-5-0" title="Permalink to this headline">¶</a></h2>
+<p>We had 63 individuals contribute to lld 5.0. Thank you so much!</p>
+<ul class="simple">
+<li>Adrian McCarthy</li>
+<li>Alberto Magni</li>
+<li>Alexander Richardson</li>
+<li>Andre Vieira</li>
+<li>Andrew Ng</li>
+<li>Anton Korobeynikov</li>
+<li>Bob Haarman</li>
+<li>David Blaikie</li>
+<li>Davide Italiano</li>
+<li>David L. Jones</li>
+<li>Dmitry Mikulin</li>
+<li>Ed Maste</li>
+<li>Ed Schouten</li>
+<li>Eric Beckmann</li>
+<li>Eric Fiselier</li>
+<li>Eugene Leviant</li>
+<li>Evgeniy Stepanov</li>
+<li>Galina Kistanova</li>
+<li>George Rimar</li>
+<li>Hans Wennborg</li>
+<li>Igor Kudrin</li>
+<li>Ismail Donmez</li>
+<li>Jake Ehrlich</li>
+<li>James Henderson</li>
+<li>Joel Jones</li>
+<li>Jon Chesterfield</li>
+<li>Kamil Rytarowski</li>
+<li>Kevin Enderby</li>
+<li>Konstantin Zhuravlyov</li>
+<li>Kyungwoo Lee</li>
+<li>Leslie Zhai</li>
+<li>Mark Kettenis</li>
+<li>Martell Malone</li>
+<li>Martin Storsjo</li>
+<li>Meador Inge</li>
+<li>Mehdi Amini</li>
+<li>Michal Gorny</li>
+<li>NAKAMURA Takumi</li>
+<li>Paul Robinson</li>
+<li>Pavel Labath</li>
+<li>Petar Jovanovic</li>
+<li>Peter Collingbourne</li>
+<li>Peter Smith</li>
+<li>Petr Hosek</li>
+<li>Rafael Espindola</li>
+<li>Reid Kleckner</li>
+<li>Richard Smith</li>
+<li>Robert Clarke</li>
+<li>Rui Ueyama</li>
+<li>Saleem Abdulrasool</li>
+<li>Sam Clegg</li>
+<li>Sean Eveson</li>
+<li>Sean Silva</li>
+<li>Shankar Easwaran</li>
+<li>Shoaib Meenai</li>
+<li>Simon Atanasyan</li>
+<li>Simon Dardis</li>
+<li>Simon Tatham</li>
+<li>Sylvestre Ledru</li>
+<li>Tom Stellard</li>
+<li>Vitaly Buka</li>
+<li>Yuka Takahashi</li>
+<li>Zachary Turner</li>
+</ul>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="windows_support.html" title="Windows support"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/_images/hello.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_images/hello.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_images/hello.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/AtomLLD.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/AtomLLD.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/AtomLLD.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/AtomLLD.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,62 @@
+ATOM-based lld
+==============
+
+Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see :doc:`index`.
+
+ATOM-based lld is a new set of modular code for creating linker tools.
+Currently it supports Mach-O.
+
+* End-User Features:
+
+ * Compatible with existing linker options
+ * Reads standard Object Files
+ * Writes standard Executable Files
+ * Remove clang's reliance on "the system linker"
+ * Uses the LLVM `"UIUC" BSD-Style license`__.
+
+* Applications:
+
+ * Modular design
+ * Support cross linking
+ * Easy to add new CPU support
+ * Can be built as static tool or library
+
+* Design and Implementation:
+
+ * Extensive unit tests
+ * Internal linker model can be dumped/read to textual format
+ * Additional linking features can be plugged in as "passes"
+ * OS specific and CPU specific code factored out
+
+Why a new linker?
+-----------------
+
+The fact that clang relies on whatever linker tool you happen to have installed
+means that clang has been very conservative adopting features which require a
+recent linker.
+
+In the same way that the MC layer of LLVM has removed clang's reliance on the
+system assembler tool, the lld project will remove clang's reliance on the
+system linker tool.
+
+
+Contents
+--------
+
+.. toctree::
+ :maxdepth: 2
+
+ design
+ getting_started
+ development
+ open_projects
+ sphinx_intro
+
+Indices and tables
+------------------
+
+* :ref:`genindex`
+* :ref:`search`
+
+__ http://llvm.org/docs/DeveloperPolicy.html#license
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/Driver.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/Driver.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/Driver.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/Driver.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,82 @@
+======
+Driver
+======
+
+Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see :doc:`index`.
+
+.. contents::
+ :local:
+
+Introduction
+============
+
+This document describes the lld driver. The purpose of this document is to
+describe both the motivation and design goals for the driver, as well as details
+of the internal implementation.
+
+Overview
+========
+
+The lld driver is designed to support a number of different command line
+interfaces. The main interfaces we plan to support are binutils' ld, Apple's
+ld, and Microsoft's link.exe.
+
+Flavors
+-------
+
+Each of these different interfaces is referred to as a flavor. There is also an
+extra flavor "core" which is used to exercise the core functionality of the
+linker it the test suite.
+
+* gnu
+* darwin
+* link
+* core
+
+Selecting a Flavor
+^^^^^^^^^^^^^^^^^^
+
+There are two different ways to tell lld which flavor to be. They are checked in
+order, so the second overrides the first. The first is to symlink :program:`lld`
+as :program:`lld-{flavor}` or just :program:`{flavor}`. You can also specify
+it as the first command line argument using ``-flavor``::
+
+ $ lld -flavor gnu
+
+There is a shortcut for ``-flavor core`` as ``-core``.
+
+
+Adding an Option to an existing Flavor
+======================================
+
+#. Add the option to the desired :file:`lib/Driver/{flavor}Options.td`.
+
+#. Add to :cpp:class:`lld::FlavorLinkingContext` a getter and setter method
+ for the option.
+
+#. Modify :cpp:func:`lld::FlavorDriver::parse` in :file:
+ `lib/Driver/{Flavor}Driver.cpp` to call the targetInfo setter
+ for corresponding to the option.
+
+#. Modify {Flavor}Reader and {Flavor}Writer to use the new targtInfo option.
+
+
+Adding a Flavor
+===============
+
+#. Add an entry for the flavor in :file:`include/lld/Driver/Driver.h` to
+ :cpp:class:`lld::UniversalDriver::Flavor`.
+
+#. Add an entry in :file:`lib/Driver/UniversalDriver.cpp` to
+ :cpp:func:`lld::Driver::strToFlavor` and
+ :cpp:func:`lld::UniversalDriver::link`.
+ This allows the flavor to be selected via symlink and `-flavor`.
+
+#. Add a tablegen file called :file:`lib/Driver/{flavor}Options.td` that
+ describes the options. If the options are a superset of another driver, that
+ driver's td file can simply be included. The :file:`{flavor}Options.td` file
+ must also be added to :file:`lib/Driver/CMakeLists.txt`.
+
+#. Add a ``{flavor}Driver`` as a subclass of :cpp:class:`lld::Driver`
+ in :file:`lib/Driver/{flavor}Driver.cpp`.
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/NewLLD.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/NewLLD.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/NewLLD.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/NewLLD.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,314 @@
+The ELF and COFF Linkers
+========================
+
+The ELF Linker as a Library
+---------------------------
+
+You can embed LLD to your program by linking against it and calling the linker's
+entry point function lld::elf::link.
+
+The current policy is that it is your reponsibility to give trustworthy object
+files. The function is guaranteed to return as long as you do not pass corrupted
+or malicious object files. A corrupted file could cause a fatal error or SEGV.
+That being said, you don't need to worry too much about it if you create object
+files in the usual way and give them to the linker. It is naturally expected to
+work, or otherwise it's a linker's bug.
+
+Design
+======
+
+We will describe the design of the linkers in the rest of the document.
+
+Key Concepts
+------------
+
+Linkers are fairly large pieces of software.
+There are many design choices you have to make to create a complete linker.
+
+This is a list of design choices we've made for ELF and COFF LLD.
+We believe that these high-level design choices achieved a right balance
+between speed, simplicity and extensibility.
+
+* Implement as native linkers
+
+ We implemented the linkers as native linkers for each file format.
+
+ The two linkers share the same design but do not share code.
+ Sharing code makes sense if the benefit is worth its cost.
+ In our case, ELF and COFF are different enough that we thought the layer to
+ abstract the differences wouldn't worth its complexity and run-time cost.
+ Elimination of the abstract layer has greatly simplified the implementation.
+
+* Speed by design
+
+ One of the most important things in archiving high performance is to
+ do less rather than do it efficiently.
+ Therefore, the high-level design matters more than local optimizations.
+ Since we are trying to create a high-performance linker,
+ it is very important to keep the design as efficient as possible.
+
+ Broadly speaking, we do not do anything until we have to do it.
+ For example, we do not read section contents or relocations
+ until we need them to continue linking.
+ When we need to do some costly operation (such as looking up
+ a hash table for each symbol), we do it only once.
+ We obtain a handler (which is typically just a pointer to actual data)
+ on the first operation and use it throughout the process.
+
+* Efficient archive file handling
+
+ LLD's handling of archive files (the files with ".a" file extension) is different
+ from the traditional Unix linkers and similar to Windows linkers.
+ We'll describe how the traditional Unix linker handles archive files,
+ what the problem is, and how LLD approached the problem.
+
+ The traditional Unix linker maintains a set of undefined symbols during linking.
+ The linker visits each file in the order as they appeared in the command line
+ until the set becomes empty. What the linker would do depends on file type.
+
+ - If the linker visits an object file, the linker links object files to the result,
+ and undefined symbols in the object file are added to the set.
+
+ - If the linker visits an archive file, it checks for the archive file's symbol table
+ and extracts all object files that have definitions for any symbols in the set.
+
+ This algorithm sometimes leads to a counter-intuitive behavior.
+ If you give archive files before object files, nothing will happen
+ because when the linker visits archives, there is no undefined symbols in the set.
+ As a result, no files are extracted from the first archive file,
+ and the link is done at that point because the set is empty after it visits one file.
+
+ You can fix the problem by reordering the files,
+ but that cannot fix the issue of mutually-dependent archive files.
+
+ Linking mutually-dependent archive files is tricky.
+ You may specify the same archive file multiple times to
+ let the linker visit it more than once.
+ Or, you may use the special command line options, `--start-group` and `--end-group`,
+ to let the linker loop over the files between the options until
+ no new symbols are added to the set.
+
+ Visiting the same archive files multiple makes the linker slower.
+
+ Here is how LLD approaches the problem. Instead of memorizing only undefined symbols,
+ we program LLD so that it memorizes all symbols.
+ When it sees an undefined symbol that can be resolved by extracting an object file
+ from an archive file it previously visited, it immediately extracts the file and link it.
+ It is doable because LLD does not forget symbols it have seen in archive files.
+
+ We believe that the LLD's way is efficient and easy to justify.
+
+ The semantics of LLD's archive handling is different from the traditional Unix's.
+ You can observe it if you carefully craft archive files to exploit it.
+ However, in reality, we don't know any program that cannot link
+ with our algorithm so far, so it's not going to cause trouble.
+
+Numbers You Want to Know
+------------------------
+
+To give you intuition about what kinds of data the linker is mainly working on,
+I'll give you the list of objects and their numbers LLD has to read and process
+in order to link a very large executable. In order to link Chrome with debug info,
+which is roughly 2 GB in output size, LLD reads
+
+- 17,000 files,
+- 1,800,000 sections,
+- 6,300,000 symbols, and
+- 13,000,000 relocations.
+
+LLD produces the 2 GB executable in 15 seconds.
+
+These numbers vary depending on your program, but in general,
+you have a lot of relocations and symbols for each file.
+If your program is written in C++, symbol names are likely to be
+pretty long because of name mangling.
+
+It is important to not waste time on relocations and symbols.
+
+In the above case, the total amount of symbol strings is 450 MB,
+and inserting all of them to a hash table takes 1.5 seconds.
+Therefore, if you causally add a hash table lookup for each symbol,
+it would slow down the linker by 10%. So, don't do that.
+
+On the other hand, you don't have to pursue efficiency
+when handling files.
+
+Important Data Structures
+-------------------------
+
+We will describe the key data structures in LLD in this section.
+The linker can be understood as the interactions between them.
+Once you understand their functions, the code of the linker should look obvious to you.
+
+* SymbolBody
+
+ SymbolBody is a class to represent symbols.
+ They are created for symbols in object files or archive files.
+ The linker creates linker-defined symbols as well.
+
+ There are basically three types of SymbolBodies: Defined, Undefined, or Lazy.
+
+ - Defined symbols are for all symbols that are considered as "resolved",
+ including real defined symbols, COMDAT symbols, common symbols,
+ absolute symbols, linker-created symbols, etc.
+ - Undefined symbols represent undefined symbols, which need to be replaced by
+ Defined symbols by the resolver until the link is complete.
+ - Lazy symbols represent symbols we found in archive file headers
+ which can turn into Defined if we read archieve members.
+
+* Symbol
+
+ A Symbol is a container for a SymbolBody. There's only one Symbol for each
+ unique symbol name (this uniqueness is guaranteed by the symbol table).
+ Each global symbol has only one SymbolBody at any one time, which is
+ the SymbolBody stored within a memory region of the Symbol large enough
+ to store any SymbolBody.
+
+ As the resolver reads symbols from input files, it replaces the Symbol's
+ SymbolBody with the "best" SymbolBody for its symbol name by constructing
+ the new SymbolBody in place on top of the existing SymbolBody. For example,
+ if the resolver is given a defined symbol, and the SymbolBody with its name
+ is undefined, it will construct a Defined SymbolBody over the Undefined
+ SymbolBody.
+
+ This means that each SymbolBody pointer always points to the best SymbolBody,
+ and it is possible to get from a SymbolBody to a Symbol, or vice versa,
+ by adding or subtracting a fixed offset. This memory layout helps reduce
+ the cache miss rate through high locality and a small number of required
+ pointer indirections.
+
+* SymbolTable
+
+ SymbolTable is basically a hash table from strings to Symbols
+ with logic to resolve symbol conflicts. It resolves conflicts by symbol type.
+
+ - If we add Defined and Undefined symbols, the symbol table will keep the former.
+ - If we add Defined and Lazy symbols, it will keep the former.
+ - If we add Lazy and Undefined, it will keep the former,
+ but it will also trigger the Lazy symbol to load the archive member
+ to actually resolve the symbol.
+
+* Chunk (COFF specific)
+
+ Chunk represents a chunk of data that will occupy space in an output.
+ Each regular section becomes a chunk.
+ Chunks created for common or BSS symbols are not backed by sections.
+ The linker may create chunks to append additional data to an output as well.
+
+ Chunks know about their size, how to copy their data to mmap'ed outputs,
+ and how to apply relocations to them.
+ Specifically, section-based chunks know how to read relocation tables
+ and how to apply them.
+
+* InputSection (ELF specific)
+
+ Since we have less synthesized data for ELF, we don't abstract slices of
+ input files as Chunks for ELF. Instead, we directly use the input section
+ as an internal data type.
+
+ InputSection knows about their size and how to copy themselves to
+ mmap'ed outputs, just like COFF Chunks.
+
+* OutputSection
+
+ OutputSection is a container of InputSections (ELF) or Chunks (COFF).
+ An InputSection or Chunk belongs to at most one OutputSection.
+
+There are mainly three actors in this linker.
+
+* InputFile
+
+ InputFile is a superclass of file readers.
+ We have a different subclass for each input file type,
+ such as regular object file, archive file, etc.
+ They are responsible for creating and owning SymbolBodies and
+ InputSections/Chunks.
+
+* Writer
+
+ The writer is responsible for writing file headers and InputSections/Chunks to a file.
+ It creates OutputSections, put all InputSections/Chunks into them,
+ assign unique, non-overlapping addresses and file offsets to them,
+ and then write them down to a file.
+
+* Driver
+
+ The linking process is driven by the driver. The driver:
+
+ - processes command line options,
+ - creates a symbol table,
+ - creates an InputFile for each input file and puts all symbols within into the symbol table,
+ - checks if there's no remaining undefined symbols,
+ - creates a writer,
+ - and passes the symbol table to the writer to write the result to a file.
+
+Link-Time Optimization
+----------------------
+
+LTO is implemented by handling LLVM bitcode files as object files.
+The linker resolves symbols in bitcode files normally. If all symbols
+are successfully resolved, it then runs LLVM passes
+with all bitcode files to convert them to one big regular ELF/COFF file.
+Finally, the linker replaces bitcode symbols with ELF/COFF symbols,
+so that they are linked as if they were in the native format from the beginning.
+
+The details are described in this document.
+http://llvm.org/docs/LinkTimeOptimization.html
+
+Glossary
+--------
+
+* RVA (COFF)
+
+ Short for Relative Virtual Address.
+
+ Windows executables or DLLs are not position-independent; they are
+ linked against a fixed address called an image base. RVAs are
+ offsets from an image base.
+
+ Default image bases are 0x140000000 for executables and 0x18000000
+ for DLLs. For example, when we are creating an executable, we assume
+ that the executable will be loaded at address 0x140000000 by the
+ loader, so we apply relocations accordingly. Result texts and data
+ will contain raw absolute addresses.
+
+* VA
+
+ Short for Virtual Address. For COFF, it is equivalent to RVA + image base.
+
+* Base relocations (COFF)
+
+ Relocation information for the loader. If the loader decides to map
+ an executable or a DLL to a different address than their image
+ bases, it fixes up binaries using information contained in the base
+ relocation table. A base relocation table consists of a list of
+ locations containing addresses. The loader adds a difference between
+ RVA and actual load address to all locations listed there.
+
+ Note that this run-time relocation mechanism is much simpler than ELF.
+ There's no PLT or GOT. Images are relocated as a whole just
+ by shifting entire images in memory by some offsets. Although doing
+ this breaks text sharing, I think this mechanism is not actually bad
+ on today's computers.
+
+* ICF
+
+ Short for Identical COMDAT Folding (COFF) or Identical Code Folding (ELF).
+
+ ICF is an optimization to reduce output size by merging read-only sections
+ by not only their names but by their contents. If two read-only sections
+ happen to have the same metadata, actual contents and relocations,
+ they are merged by ICF. It is known as an effective technique,
+ and it usually reduces C++ program's size by a few percent or more.
+
+ Note that this is not entirely sound optimization. C/C++ require
+ different functions have different addresses. If a program depends on
+ that property, it would fail at runtime.
+
+ On Windows, that's not really an issue because MSVC link.exe enabled
+ the optimization by default. As long as your program works
+ with the linker's default settings, your program should be safe with ICF.
+
+ On Unix, your program is generally not guaranteed to be safe with ICF,
+ although large programs happen to work correctly.
+ LLD works fine with ICF for example.
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/Readers.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/Readers.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/Readers.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/Readers.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,174 @@
+.. _Readers:
+
+Developing lld Readers
+======================
+
+Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see :doc:`index`.
+
+Introduction
+------------
+
+The purpose of a "Reader" is to take an object file in a particular format
+and create an `lld::File`:cpp:class: (which is a graph of Atoms)
+representing the object file. A Reader inherits from
+`lld::Reader`:cpp:class: which lives in
+:file:`include/lld/Core/Reader.h` and
+:file:`lib/Core/Reader.cpp`.
+
+The Reader infrastructure for an object format ``Foo`` requires the
+following pieces in order to fit into lld:
+
+:file:`include/lld/ReaderWriter/ReaderFoo.h`
+
+ .. cpp:class:: ReaderOptionsFoo : public ReaderOptions
+
+ This Options class is the only way to configure how the Reader will
+ parse any file into an `lld::Reader`:cpp:class: object. This class
+ should be declared in the `lld`:cpp:class: namespace.
+
+ .. cpp:function:: Reader *createReaderFoo(ReaderOptionsFoo &reader)
+
+ This factory function configures and create the Reader. This function
+ should be declared in the `lld`:cpp:class: namespace.
+
+:file:`lib/ReaderWriter/Foo/ReaderFoo.cpp`
+
+ .. cpp:class:: ReaderFoo : public Reader
+
+ This is the concrete Reader class which can be called to parse
+ object files. It should be declared in an anonymous namespace or
+ if there is shared code with the `lld::WriterFoo`:cpp:class: you
+ can make a nested namespace (e.g. `lld::foo`:cpp:class:).
+
+You may have noticed that :cpp:class:`ReaderFoo` is not declared in the
+``.h`` file. An important design aspect of lld is that all Readers are
+created *only* through an object-format-specific
+:cpp:func:`createReaderFoo` factory function. The creation of the Reader is
+parametrized through a :cpp:class:`ReaderOptionsFoo` class. This options
+class is the one-and-only way to control how the Reader operates when
+parsing an input file into an Atom graph. For instance, you may want the
+Reader to only accept certain architectures. The options class can be
+instantiated from command line options or be programmatically configured.
+
+Where to start
+--------------
+
+The lld project already has a skeleton of source code for Readers for
+``ELF``, ``PECOFF``, ``MachO``, and lld's native ``YAML`` graph format.
+If your file format is a variant of one of those, you should modify the
+existing Reader to support your variant. This is done by customizing the Options
+class for the Reader and making appropriate changes to the ``.cpp`` file to
+interpret those options and act accordingly.
+
+If your object file format is not a variant of any existing Reader, you'll need
+to create a new Reader subclass with the organization described above.
+
+Readers are factories
+---------------------
+
+The linker will usually only instantiate your Reader once. That one Reader will
+have its loadFile() method called many times with different input files.
+To support multithreaded linking, the Reader may be parsing multiple input
+files in parallel. Therefore, there should be no parsing state in you Reader
+object. Any parsing state should be in ivars of your File subclass or in
+some temporary object.
+
+The key method to implement in a reader is::
+
+ virtual error_code loadFile(LinkerInput &input,
+ std::vector<std::unique_ptr<File>> &result);
+
+It takes a memory buffer (which contains the contents of the object file
+being read) and returns an instantiated lld::File object which is
+a collection of Atoms. The result is a vector of File pointers (instead of
+simple a File pointer) because some file formats allow multiple object
+"files" to be encoded in one file system file.
+
+
+Memory Ownership
+----------------
+
+Atoms are always owned by their File object. During core linking when Atoms
+are coalesced or stripped away, core linking does not delete them.
+Core linking just removes those unused Atoms from its internal list.
+The destructor of a File object is responsible for deleting all Atoms it
+owns, and if ownership of the MemoryBuffer was passed to it, the File
+destructor needs to delete that too.
+
+Making Atoms
+------------
+
+The internal model of lld is purely Atom based. But most object files do not
+have an explicit concept of Atoms, instead most have "sections". The way
+to think of this is that a section is just a list of Atoms with common
+attributes.
+
+The first step in parsing section-based object files is to cleave each
+section into a list of Atoms. The technique may vary by section type. For
+code sections (e.g. .text), there are usually symbols at the start of each
+function. Those symbol addresses are the points at which the section is
+cleaved into discrete Atoms. Some file formats (like ELF) also include the
+length of each symbol in the symbol table. Otherwise, the length of each
+Atom is calculated to run to the start of the next symbol or the end of the
+section.
+
+Other sections types can be implicitly cleaved. For instance c-string literals
+or unwind info (e.g. .eh_frame) can be cleaved by having the Reader look at
+the content of the section. It is important to cleave sections into Atoms
+to remove false dependencies. For instance the .eh_frame section often
+has no symbols, but contains "pointers" to the functions for which it
+has unwind info. If the .eh_frame section was not cleaved (but left as one
+big Atom), there would always be a reference (from the eh_frame Atom) to
+each function. So the linker would be unable to coalesce or dead stripped
+away the function atoms.
+
+The lld Atom model also requires that a reference to an undefined symbol be
+modeled as a Reference to an UndefinedAtom. So the Reader also needs to
+create an UndefinedAtom for each undefined symbol in the object file.
+
+Once all Atoms have been created, the second step is to create References
+(recall that Atoms are "nodes" and References are "edges"). Most References
+are created by looking at the "relocation records" in the object file. If
+a function contains a call to "malloc", there is usually a relocation record
+specifying the address in the section and the symbol table index. Your
+Reader will need to convert the address to an Atom and offset and the symbol
+table index into a target Atom. If "malloc" is not defined in the object file,
+the target Atom of the Reference will be an UndefinedAtom.
+
+
+Performance
+-----------
+Once you have the above working to parse an object file into Atoms and
+References, you'll want to look at performance. Some techniques that can
+help performance are:
+
+* Use llvm::BumpPtrAllocator or pre-allocate one big vector<Reference> and then
+ just have each atom point to its subrange of References in that vector.
+ This can be faster that allocating each Reference as separate object.
+* Pre-scan the symbol table and determine how many atoms are in each section
+ then allocate space for all the Atom objects at once.
+* Don't copy symbol names or section content to each Atom, instead use
+ StringRef and ArrayRef in each Atom to point to its name and content in the
+ MemoryBuffer.
+
+
+Testing
+-------
+
+We are still working on infrastructure to test Readers. The issue is that
+you don't want to check in binary files to the test suite. And the tools
+for creating your object file from assembly source may not be available on
+every OS.
+
+We are investigating a way to use YAML to describe the section, symbols,
+and content of a file. Then have some code which will write out an object
+file from that YAML description.
+
+Once that is in place, you can write test cases that contain section/symbols
+YAML and is run through the linker to produce Atom/References based YAML which
+is then run through FileCheck to verify the Atoms and References are as
+expected.
+
+
+
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/ReleaseNotes.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/ReleaseNotes.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/ReleaseNotes.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/ReleaseNotes.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,172 @@
+=======================
+lld 5.0.0 Release Notes
+=======================
+
+.. contents::
+ :local:
+
+Introduction
+============
+
+lld is a linker from the LLVM project. It supports ELF (Unix), COFF (Windows)
+and Mach-O (macOS), and it is generally faster than the GNU bfd or gold linkers
+or the MSVC linker.
+
+lld is designed to be a drop-in replacement for the system linkers, so that
+users don't need to change their build systems other than swapping the linker
+command.
+
+All lld releases may be downloaded from the `LLVM releases web site
+<http://llvm.org/releases/>`_.
+
+Non-comprehensive list of changes in this release
+=================================================
+
+ELF Improvements
+----------------
+
+* First and foremost, a lot of compatibility issues and bugs have been fixed.
+ Linker script support has significantly improved. As a result, we believe you
+ are very likely to be able to link your programs with lld without experiencing
+ any problem now.
+
+* Error message format has changed in order to improve readability.
+ Traditionally, linker's error messages are concise and arguably too terse.
+ This is an example of lld 4.0.0's error message (they are actually in one line)::
+
+ /ssd/clang/bin/ld.lld: error: /ssd/llvm-project/lld/ELF/Writer.cpp:207:
+ undefined symbol 'lld::elf::EhFrameSection::addSection()'
+
+ It is not easy to read because too much information is packed into a single line
+ and the embedded text, particularly a symbol name, is sometimes too long.
+ In lld 5.0.0, we use more vertical space to print out error messages in a more
+ structured manner like this::
+
+ bin/ld.lld: error: undefined symbol: lld::elf::EhFrameSection::addSection()
+ >>> Referenced by Writer.cpp:207 (/ssd/llvm-project/lld/ELF/Writer.cpp:207)
+ >>> Writer.cpp.o in archive lib/liblldELF.a
+
+ As a bonus, the new error message contains source code location of the error
+ if it is available from debug info.
+
+* ``./configure`` scripts generated by GNU autoconf determines whether a linker
+ supports modern GNU-compatible features or not by searching for "GNU" in the
+ ``--help`` message. To be compatible with the scripts, we decided to add a
+ string "(compatible with GNU linkers)" to our ``--help`` message. This is a
+ hack, but just like the web browser's User-Agent string (which everyone still
+ claim they are "Mozilla/5.0"), we had no choice other than doing this to claim
+ that we accept GNU-compatible options.
+
+* The ``-Map`` option is added. The option is to make the linker to print out how
+ input files are mapped to the output file. Here is an example::
+
+ Address Size Align Out In Symbol
+ 00000000016d84d8 00000000008f8f50 8 .eh_frame
+ 00000000016d84d8 00000000008f8f50 8 <internal>:(.eh_frame)
+ 0000000001fd2000 00000000034b3bd0 16 .text
+ 0000000001fd2000 000000000000002a 1 /usr/lib/x86_64-linux-gnu/crt1.o:(.text)
+ 0000000001fd2000 0000000000000000 0 _start
+ 0000000001fd202a 0000000000000000 1 /usr/lib/x86_64-linux-gnu/crti.o:(.text)
+ 0000000001fd2030 00000000000000bd 16 /usr/lib/gcc/x86_64-linux-gnu/4.8/crtbegin.o:(.text)
+ 0000000001fd2030 0000000000000000 0 deregister_tm_clones
+ 0000000001fd2060 0000000000000000 0 register_tm_clones
+
+ This format is not the same as GNU linkers as our linker internal data
+ structure is different from them but contains the same amount of information
+ and should be more readable than their outputs.
+
+ As with other lld features, the ``-Map`` option is designed with speed in mind.
+ The option would generate a hundred megabyte text file if you link a large
+ program with it. lld can usually do that in a few seconds, and it is generally
+ a few times faster than the GNU gold's ``-Map`` option.
+
+* lld's ``--gdb-index`` option used to be slow, but we sped it up so that it is
+ at least as fast as the GNU gold.
+
+* Some nonstandard relocations, such as R_X86_64_8 or R_X86_64_16, are supported.
+ They are not used for 32/64-bit applications, but some 16-bit bootloaders need
+ them.
+
+* Paddings in executable text sections are now filled with trap instructions
+ (such as INT3) instead of being left as null bytes. This change improves
+ disassembler outputs because it now prints out trap instructions instead of
+ trying to decode 0x00 as an instruction. It also makes debugging of some type
+ of program easier because when the control reaches a padding, the program
+ immediately raises an error.
+
+* The following options are added: ``-M``, ``-Map``,
+ ``-compress-debug-sections``, ``-emit-relocs``,
+ ``-error-unresolved-symbols``, ``-exclude-libs``, ``-filter``,
+ ``-no-dynamic-linker``, ``-no-export-dynamic``, ``-no-fatal-warnings``,
+ ``-print-map``, ``-warn-unresolved-symbols``, ``-z nocopyreloc``,
+ ``-z notext``, ``-z rodynamic``
+
+
+Contributors to lld 5.0
+=======================
+
+We had 63 individuals contribute to lld 5.0. Thank you so much!
+
+- Adrian McCarthy
+- Alberto Magni
+- Alexander Richardson
+- Andre Vieira
+- Andrew Ng
+- Anton Korobeynikov
+- Bob Haarman
+- David Blaikie
+- Davide Italiano
+- David L. Jones
+- Dmitry Mikulin
+- Ed Maste
+- Ed Schouten
+- Eric Beckmann
+- Eric Fiselier
+- Eugene Leviant
+- Evgeniy Stepanov
+- Galina Kistanova
+- George Rimar
+- Hans Wennborg
+- Igor Kudrin
+- Ismail Donmez
+- Jake Ehrlich
+- James Henderson
+- Joel Jones
+- Jon Chesterfield
+- Kamil Rytarowski
+- Kevin Enderby
+- Konstantin Zhuravlyov
+- Kyungwoo Lee
+- Leslie Zhai
+- Mark Kettenis
+- Martell Malone
+- Martin Storsjo
+- Meador Inge
+- Mehdi Amini
+- Michal Gorny
+- NAKAMURA Takumi
+- Paul Robinson
+- Pavel Labath
+- Petar Jovanovic
+- Peter Collingbourne
+- Peter Smith
+- Petr Hosek
+- Rafael Espindola
+- Reid Kleckner
+- Richard Smith
+- Robert Clarke
+- Rui Ueyama
+- Saleem Abdulrasool
+- Sam Clegg
+- Sean Eveson
+- Sean Silva
+- Shankar Easwaran
+- Shoaib Meenai
+- Simon Atanasyan
+- Simon Dardis
+- Simon Tatham
+- Sylvestre Ledru
+- Tom Stellard
+- Vitaly Buka
+- Yuka Takahashi
+- Zachary Turner
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/design.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/design.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/design.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/design.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,421 @@
+.. _design:
+
+Linker Design
+=============
+
+Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see :doc:`index`.
+
+Introduction
+------------
+
+lld is a new generation of linker. It is not "section" based like traditional
+linkers which mostly just interlace sections from multiple object files into the
+output file. Instead, lld is based on "Atoms". Traditional section based
+linking work well for simple linking, but their model makes advanced linking
+features difficult to implement. Features like dead code stripping, reordering
+functions for locality, and C++ coalescing require the linker to work at a finer
+grain.
+
+An atom is an indivisible chunk of code or data. An atom has a set of
+attributes, such as: name, scope, content-type, alignment, etc. An atom also
+has a list of References. A Reference contains: a kind, an optional offset, an
+optional addend, and an optional target atom.
+
+The Atom model allows the linker to use standard graph theory models for linking
+data structures. Each atom is a node, and each Reference is an edge. The
+feature of dead code stripping is implemented by following edges to mark all
+live atoms, and then delete the non-live atoms.
+
+
+Atom Model
+----------
+
+An atom is an indivisible chunk of code or data. Typically each user written
+function or global variable is an atom. In addition, the compiler may emit
+other atoms, such as for literal c-strings or floating point constants, or for
+runtime data structures like dwarf unwind info or pointers to initializers.
+
+A simple "hello world" object file would be modeled like this:
+
+.. image:: hello.png
+
+There are three atoms: main, a proxy for printf, and an anonymous atom
+containing the c-string literal "hello world". The Atom "main" has two
+references. One is the call site for the call to printf, and the other is a
+reference for the instruction that loads the address of the c-string literal.
+
+There are only four different types of atoms:
+
+ * DefinedAtom
+ 95% of all atoms. This is a chunk of code or data
+
+ * UndefinedAtom
+ This is a place holder in object files for a reference to some atom
+ outside the translation unit.During core linking it is usually replaced
+ by (coalesced into) another Atom.
+
+ * SharedLibraryAtom
+ If a required symbol name turns out to be defined in a dynamic shared
+ library (and not some object file). A SharedLibraryAtom is the
+ placeholder Atom used to represent that fact.
+
+ It is similar to an UndefinedAtom, but it also tracks information
+ about the associated shared library.
+
+ * AbsoluteAtom
+ This is for embedded support where some stuff is implemented in ROM at
+ some fixed address. This atom has no content. It is just an address
+ that the Writer needs to fix up any references to point to.
+
+
+File Model
+----------
+
+The linker views the input files as basically containers of Atoms and
+References, and just a few attributes of their own. The linker works with three
+kinds of files: object files, static libraries, and dynamic shared libraries.
+Each kind of file has reader object which presents the file in the model
+expected by the linker.
+
+Object File
+~~~~~~~~~~~
+
+An object file is just a container of atoms. When linking an object file, a
+reader is instantiated which parses the object file and instantiates a set of
+atoms representing all content in the .o file. The linker adds all those atoms
+to a master graph.
+
+Static Library (Archive)
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+This is the traditional unix static archive which is just a collection of object
+files with a "table of contents". When linking with a static library, by default
+nothing is added to the master graph of atoms. Instead, if after merging all
+atoms from object files into a master graph, if any "undefined" atoms are left
+remaining in the master graph, the linker reads the table of contents for each
+static library to see if any have the needed definitions. If so, the set of
+atoms from the specified object file in the static library is added to the
+master graph of atoms.
+
+Dynamic Library (Shared Object)
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Dynamic libraries are different than object files and static libraries in that
+they don't directly add any content. Their purpose is to check at build time
+that the remaining undefined references can be resolved at runtime, and provide
+a list of dynamic libraries (SO_NEEDED) that will be needed at runtime. The way
+this is modeled in the linker is that a dynamic library contributes no atoms to
+the initial graph of atoms. Instead, (like static libraries) if there are
+"undefined" atoms in the master graph of all atoms, then each dynamic library is
+checked to see if exports the required symbol. If so, a "shared library" atom is
+instantiated by the by the reader which the linker uses to replace the
+"undefined" atom.
+
+Linking Steps
+-------------
+
+Through the use of abstract Atoms, the core of linking is architecture
+independent and file format independent. All command line parsing is factored
+out into a separate "options" abstraction which enables the linker to be driven
+with different command line sets.
+
+The overall steps in linking are:
+
+ #. Command line processing
+
+ #. Parsing input files
+
+ #. Resolving
+
+ #. Passes/Optimizations
+
+ #. Generate output file
+
+The Resolving and Passes steps are done purely on the master graph of atoms, so
+they have no notion of file formats such as mach-o or ELF.
+
+
+Input Files
+~~~~~~~~~~~
+
+Existing developer tools using different file formats for object files.
+A goal of lld is to be file format independent. This is done
+through a plug-in model for reading object files. The lld::Reader is the base
+class for all object file readers. A Reader follows the factory method pattern.
+A Reader instantiates an lld::File object (which is a graph of Atoms) from a
+given object file (on disk or in-memory).
+
+Every Reader subclass defines its own "options" class (for instance the mach-o
+Reader defines the class ReaderOptionsMachO). This options class is the
+one-and-only way to control how the Reader operates when parsing an input file
+into an Atom graph. For instance, you may want the Reader to only accept
+certain architectures. The options class can be instantiated from command
+line options, or it can be subclassed and the ivars programmatically set.
+
+Resolving
+~~~~~~~~~
+
+The resolving step takes all the atoms' graphs from each object file and
+combines them into one master object graph. Unfortunately, it is not as simple
+as appending the atom list from each file into one big list. There are many
+cases where atoms need to be coalesced. That is, two or more atoms need to be
+coalesced into one atom. This is necessary to support: C language "tentative
+definitions", C++ weak symbols for templates and inlines defined in headers,
+replacing undefined atoms with actual definition atoms, and for merging copies
+of constants like c-strings and floating point constants.
+
+The linker support coalescing by-name and by-content. By-name is used for
+tentative definitions and weak symbols. By-content is used for constant data
+that can be merged.
+
+The resolving process maintains some global linking "state", including a "symbol
+table" which is a map from llvm::StringRef to lld::Atom*. With these data
+structures, the linker iterates all atoms in all input files. For each atom, it
+checks if the atom is named and has a global or hidden scope. If so, the atom
+is added to the symbol table map. If there already is a matching atom in that
+table, that means the current atom needs to be coalesced with the found atom, or
+it is a multiple definition error.
+
+When all initial input file atoms have been processed by the resolver, a scan is
+made to see if there are any undefined atoms in the graph. If there are, the
+linker scans all libraries (both static and dynamic) looking for definitions to
+replace the undefined atoms. It is an error if any undefined atoms are left
+remaining.
+
+Dead code stripping (if requested) is done at the end of resolving. The linker
+does a simple mark-and-sweep. It starts with "root" atoms (like "main" in a main
+executable) and follows each references and marks each Atom that it visits as
+"live". When done, all atoms not marked "live" are removed.
+
+The result of the Resolving phase is the creation of an lld::File object. The
+goal is that the lld::File model is **the** internal representation
+throughout the linker. The file readers parse (mach-o, ELF, COFF) into an
+lld::File. The file writers (mach-o, ELF, COFF) taken an lld::File and produce
+their file kind, and every Pass only operates on an lld::File. This is not only
+a simpler, consistent model, but it enables the state of the linker to be dumped
+at any point in the link for testing purposes.
+
+
+Passes
+~~~~~~
+
+The Passes step is an open ended set of routines that each get a change to
+modify or enhance the current lld::File object. Some example Passes are:
+
+ * stub (PLT) generation
+
+ * GOT instantiation
+
+ * order_file optimization
+
+ * branch island generation
+
+ * branch shim generation
+
+ * Objective-C optimizations (Darwin specific)
+
+ * TLV instantiation (Darwin specific)
+
+ * DTrace probe processing (Darwin specific)
+
+ * compact unwind encoding (Darwin specific)
+
+
+Some of these passes are specific to Darwin's runtime environments. But many of
+the passes are applicable to any OS (such as generating branch island for out of
+range branch instructions).
+
+The general structure of a pass is to iterate through the atoms in the current
+lld::File object, inspecting each atom and doing something. For instance, the
+stub pass, looks for call sites to shared library atoms (e.g. call to printf).
+It then instantiates a "stub" atom (PLT entry) and a "lazy pointer" atom for
+each proxy atom needed, and these new atoms are added to the current lld::File
+object. Next, all the noted call sites to shared library atoms have their
+References altered to point to the stub atom instead of the shared library atom.
+
+
+Generate Output File
+~~~~~~~~~~~~~~~~~~~~
+
+Once the passes are done, the output file writer is given current lld::File
+object. The writer's job is to create the executable content file wrapper and
+place the content of the atoms into it.
+
+lld uses a plug-in model for writing output files. All concrete writers (e.g.
+ELF, mach-o, etc) are subclasses of the lld::Writer class.
+
+Unlike the Reader class which has just one method to instantiate an lld::File,
+the Writer class has multiple methods. The crucial method is to generate the
+output file, but there are also methods which allow the Writer to contribute
+Atoms to the resolver and specify passes to run.
+
+An example of contributing
+atoms is that if the Writer knows a main executable is being linked and such
+an executable requires a specially named entry point (e.g. "_main"), the Writer
+can add an UndefinedAtom with that special name to the resolver. This will
+cause the resolver to issue an error if that symbol is not defined.
+
+Sometimes a Writer supports lazily created symbols, such as names for the start
+of sections. To support this, the Writer can create a File object which vends
+no initial atoms, but does lazily supply atoms by name as needed.
+
+Every Writer subclass defines its own "options" class (for instance the mach-o
+Writer defines the class WriterOptionsMachO). This options class is the
+one-and-only way to control how the Writer operates when producing an output
+file from an Atom graph. For instance, you may want the Writer to optimize
+the output for certain OS versions, or strip local symbols, etc. The options
+class can be instantiated from command line options, or it can be subclassed
+and the ivars programmatically set.
+
+
+lld::File representations
+-------------------------
+
+Just as LLVM has three representations of its IR model, lld has two
+representations of its File/Atom/Reference model:
+
+ * In memory, abstract C++ classes (lld::Atom, lld::Reference, and lld::File).
+
+ * textual (in YAML)
+
+
+Textual representations in YAML
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In designing a textual format we want something easy for humans to read and easy
+for the linker to parse. Since an atom has lots of attributes most of which are
+usually just the default, we should define default values for every attribute so
+that those can be omitted from the text representation. Here is the atoms for a
+simple hello world program expressed in YAML::
+
+ target-triple: x86_64-apple-darwin11
+
+ atoms:
+ - name: _main
+ scope: global
+ type: code
+ content: [ 55, 48, 89, e5, 48, 8d, 3d, 00, 00, 00, 00, 30, c0, e8, 00, 00,
+ 00, 00, 31, c0, 5d, c3 ]
+ fixups:
+ - offset: 07
+ kind: pcrel32
+ target: 2
+ - offset: 0E
+ kind: call32
+ target: _fprintf
+
+ - type: c-string
+ content: [ 73, 5A, 00 ]
+
+ ...
+
+The biggest use for the textual format will be writing test cases. Writing test
+cases in C is problematic because the compiler may vary its output over time for
+its own optimization reasons which my inadvertently disable or break the linker
+feature trying to be tested. By writing test cases in the linkers own textual
+format, we can exactly specify every attribute of every atom and thus target
+specific linker logic.
+
+The textual/YAML format follows the ReaderWriter patterns used in lld. The lld
+library comes with the classes: ReaderYAML and WriterYAML.
+
+
+Testing
+-------
+
+The lld project contains a test suite which is being built up as new code is
+added to lld. All new lld functionality should have a tests added to the test
+suite. The test suite is `lit <http://llvm.org/cmds/lit.html/>`_ driven. Each
+test is a text file with comments telling lit how to run the test and check the
+result To facilitate testing, the lld project builds a tool called lld-core.
+This tool reads a YAML file (default from stdin), parses it into one or more
+lld::File objects in memory and then feeds those lld::File objects to the
+resolver phase.
+
+
+Resolver testing
+~~~~~~~~~~~~~~~~
+
+Basic testing is the "core linking" or resolving phase. That is where the
+linker merges object files. All test cases are written in YAML. One feature of
+YAML is that it allows multiple "documents" to be encoding in one YAML stream.
+That means one text file can appear to the linker as multiple .o files - the
+normal case for the linker.
+
+Here is a simple example of a core linking test case. It checks that an
+undefined atom from one file will be replaced by a definition from another
+file::
+
+ # RUN: lld-core %s | FileCheck %s
+
+ #
+ # Test that undefined atoms are replaced with defined atoms.
+ #
+
+ ---
+ atoms:
+ - name: foo
+ definition: undefined
+ ---
+ atoms:
+ - name: foo
+ scope: global
+ type: code
+ ...
+
+ # CHECK: name: foo
+ # CHECK: scope: global
+ # CHECK: type: code
+ # CHECK-NOT: name: foo
+ # CHECK: ...
+
+
+Passes testing
+~~~~~~~~~~~~~~
+
+Since Passes just operate on an lld::File object, the lld-core tool has the
+option to run a particular pass (after resolving). Thus, you can write a YAML
+test case with carefully crafted input to exercise areas of a Pass and the check
+the resulting lld::File object as represented in YAML.
+
+
+Design Issues
+-------------
+
+There are a number of open issues in the design of lld. The plan is to wait and
+make these design decisions when we need to.
+
+
+Debug Info
+~~~~~~~~~~
+
+Currently, the lld model says nothing about debug info. But the most popular
+debug format is DWARF and there is some impedance mismatch with the lld model
+and DWARF. In lld there are just Atoms and only Atoms that need to be in a
+special section at runtime have an associated section. Also, Atoms do not have
+addresses. The way DWARF is spec'ed different parts of DWARF are supposed to go
+into specially named sections and the DWARF references function code by address.
+
+CPU and OS specific functionality
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Currently, lld has an abstract "Platform" that deals with any CPU or OS specific
+differences in linking. We just keep adding virtual methods to the base
+Platform class as we find linking areas that might need customization. At some
+point we'll need to structure this better.
+
+
+File Attributes
+~~~~~~~~~~~~~~~
+
+Currently, lld::File just has a path and a way to iterate its atoms. We will
+need to add more attributes on a File. For example, some equivalent to the
+target triple. There is also a number of cached or computed attributes that
+could make various Passes more efficient. For instance, on Darwin there are a
+number of Objective-C optimizations that can be done by a Pass. But it would
+improve the plain C case if the Objective-C optimization Pass did not have to
+scan all atoms looking for any Objective-C data structures. This could be done
+if the lld::File object had an attribute that said if the file had any
+Objective-C data in it. The Resolving phase would then be required to "merge"
+that attribute as object files are added.
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/development.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/development.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/development.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/development.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,45 @@
+.. _development:
+
+Development
+===========
+
+Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see :doc:`index`.
+
+lld is developed as part of the `LLVM <http://llvm.org>`_ project.
+
+Creating a Reader
+-----------------
+
+See the :ref:`Creating a Reader <Readers>` guide.
+
+
+Modifying the Driver
+--------------------
+
+See :doc:`Driver`.
+
+
+Debugging
+---------
+
+You can run lld with ``-mllvm -debug`` command line options to enable debugging
+printouts. If you want to enable debug information for some specific pass, you
+can run it with ``-mllvm '-debug-only=<pass>'``, where pass is a name used in
+the ``DEBUG_WITH_TYPE()`` macro.
+
+
+
+Documentation
+-------------
+
+The project documentation is written in reStructuredText and generated using the
+`Sphinx <http://sphinx.pocoo.org/>`_ documentation generator. For more
+information on writing documentation for the project, see the
+:ref:`sphinx_intro`.
+
+.. toctree::
+ :hidden:
+
+ Readers
+ Driver
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/getting_started.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/getting_started.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/getting_started.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/getting_started.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,106 @@
+.. _getting_started:
+
+Getting Started: Building and Running lld
+=========================================
+
+This page gives you the shortest path to checking out and building lld. If you
+run into problems, please file bugs in the `LLVM Bugzilla`__
+
+__ http://llvm.org/bugs/
+
+Building lld
+------------
+
+On Unix-like Systems
+~~~~~~~~~~~~~~~~~~~~
+
+1. Get the required tools.
+
+ * `CMake 2.8`_\+.
+ * make (or any build system CMake supports).
+ * `Clang 3.1`_\+ or GCC 4.7+ (C++11 support is required).
+
+ * If using Clang, you will also need `libc++`_.
+ * `Python 2.4`_\+ (not 3.x) for running tests.
+
+.. _CMake 2.8: http://www.cmake.org/cmake/resources/software.html
+.. _Clang 3.1: http://clang.llvm.org/
+.. _libc++: http://libcxx.llvm.org/
+.. _Python 2.4: http://python.org/download/
+
+2. Check out LLVM::
+
+ $ cd path/to/llvm-project
+ $ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
+
+3. Check out lld::
+
+ $ cd llvm/tools
+ $ svn co http://llvm.org/svn/llvm-project/lld/trunk lld
+
+ * lld can also be checked out to ``path/to/llvm-project`` and built as an external
+ project.
+
+4. Build LLVM and lld::
+
+ $ cd path/to/llvm-build/llvm (out of source build required)
+ $ cmake -G "Unix Makefiles" path/to/llvm-project/llvm
+ $ make
+
+ * If you want to build with clang and it is not the default compiler or
+ it is installed in an alternate location, you'll need to tell the cmake tool
+ the location of the C and C++ compiler via CMAKE_C_COMPILER and
+ CMAKE_CXX_COMPILER. For example::
+
+ $ cmake -DCMAKE_CXX_COMPILER=/path/to/clang++ -DCMAKE_C_COMPILER=/path/to/clang ...
+
+5. Test::
+
+ $ make check-lld
+
+Using Visual Studio
+~~~~~~~~~~~~~~~~~~~
+
+#. Get the required tools.
+
+ * `CMake 2.8`_\+.
+ * `Visual Studio 12 (2013) or later`_ (required for C++11 support)
+ * `Python 2.4`_\+ (not 3.x) for running tests.
+
+.. _CMake 2.8: http://www.cmake.org/cmake/resources/software.html
+.. _Visual Studio 12 (2013) or later: http://www.microsoft.com/visualstudio/11/en-us
+.. _Python 2.4: http://python.org/download/
+
+#. Check out LLVM::
+
+ $ cd path/to/llvm-project
+ $ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
+
+#. Check out lld::
+
+ $ cd llvm/tools
+ $ svn co http://llvm.org/svn/llvm-project/lld/trunk lld
+
+ * lld can also be checked out to ``path/to/llvm-project`` and built as an external
+ project.
+
+#. Generate Visual Studio project files::
+
+ $ cd path/to/llvm-build/llvm (out of source build required)
+ $ cmake -G "Visual Studio 11" path/to/llvm-project/llvm
+
+#. Build
+
+ * Open LLVM.sln in Visual Studio.
+ * Build the ``ALL_BUILD`` target.
+
+#. Test
+
+ * Build the ``lld-test`` target.
+
+More Information
+~~~~~~~~~~~~~~~~
+
+For more information on using CMake see the `LLVM CMake guide`_.
+
+.. _LLVM CMake guide: http://llvm.org/docs/CMake.html
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/index.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/index.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/index.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/index.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,179 @@
+LLD - The LLVM Linker
+=====================
+
+LLD is a linker from the LLVM project. That is a drop-in replacement
+for system linkers and runs much faster than them. It also provides
+features that are useful for toolchain developers.
+
+The linker supports ELF (Unix), PE/COFF (Windows) and Mach-O (macOS)
+in descending order of completeness. Internally, LLD consists of three
+different linkers. The ELF port is the one that will be described in
+this document. The PE/COFF port is almost complete except the lack of
+the Windows debug info (PDB) support. The Mach-O port is built based
+on a different architecture than the ELF or COFF ports. For the
+details about Mach-O, please read :doc:`AtomLLD`.
+
+Features
+--------
+
+- LLD is a drop-in replacement for the GNU linkers. That accepts the
+ same command line arguments and linker scripts as GNU.
+
+ We are currently working closely with the FreeBSD project to make
+ LLD default system linker in future versions of the operating
+ system, so we are serious about addressing compatibility issues. As
+ of February 2017, LLD is able to link the entire FreeBSD/amd64 base
+ system including the kernel. With a few work-in-progress patches it
+ can link approximately 95% of the ports collection on AMD64. For the
+ details, see `FreeBSD quarterly status report
+ <https://www.freebsd.org/news/status/report-2016-10-2016-12.html#Using-LLVM%27s-LLD-Linker-as-FreeBSD%27s-System-Linker>`_.
+
+- LLD is very fast. When you link a large program on a multicore
+ machine, you can expect that LLD runs more than twice as fast as GNU
+ gold linker. Your milage may vary, though.
+
+- It supports various CPUs/ABIs including x86-64, x86, x32, AArch64,
+ ARM, MIPS 32/64 big/little-endian, PowerPC, PowerPC 64 and AMDGPU.
+ Among these, x86-64 is the most well-supported target and have
+ reached production quality. AArch64 and MIPS seem decent too. x86
+ should be OK but not well tested yet. ARM support is being developed
+ actively.
+
+- It is always a cross-linker, meaning that it always supports all the
+ above targets however it was built. In fact, we don't provide a
+ build-time option to enable/disable each target. This should make it
+ easy to use our linker as part of a cross-compile toolchain.
+
+- You can embed LLD to your program to eliminate dependency to
+ external linkers. All you have to do is to construct object files
+ and command line arguments just like you would do to invoke an
+ external linker and then call the linker's main function,
+ ``lld::elf::link``, from your code.
+
+- It is small. We are using LLVM libObject library to read from object
+ files, so it is not completely a fair comparison, but as of February
+ 2017, LLD/ELF consists only of 21k lines of C++ code while GNU gold
+ consists of 198k lines of C++ code.
+
+- Link-time optimization (LTO) is supported by default. Essentially,
+ all you have to do to do LTO is to pass the ``-flto`` option to clang.
+ Then clang creates object files not in the native object file format
+ but in LLVM bitcode format. LLD reads bitcode object files, compile
+ them using LLVM and emit an output file. Because in this way LLD can
+ see the entire program, it can do the whole program optimization.
+
+- Some very old features for ancient Unix systems (pre-90s or even
+ before that) have been removed. Some default settings have been
+ tuned for the 21st century. For example, the stack is marked as
+ non-executable by default to tighten security.
+
+Performance
+-----------
+
+This is a link time comparison on a 2-socket 20-core 40-thread Xeon
+E5-2680 2.80 GHz machine with an SSD drive.
+
+LLD is much faster than the GNU linkers for large programs. That's
+fast for small programs too, but because the link time is short
+anyway, the difference is not very noticeable in that case.
+
+Note that this is just a benchmark result of our environment.
+Depending on number of available cores, available amount of memory or
+disk latency/throughput, your results may vary.
+
+============ =========== ============ ============= ======
+Program Output size GNU ld GNU gold [1]_ LLD
+ffmpeg dbg 91 MiB 1.59s 1.15s 0.78s
+mysqld dbg 157 MiB 7.09s 2.49s 1.31s
+clang dbg 1.45 GiB 86.76s 21.93s 8.38s
+chromium dbg 1.52 GiB 142.30s [2]_ 40.86s 12.69s
+============ =========== ============ ============= ======
+
+.. [1] With the ``--threads`` option to enable multi-threading support.
+
+.. [2] Since GNU ld doesn't support the ``-icf=all`` option, we
+ removed that from the command line for GNU ld. GNU ld would be
+ slower than this if it had that option support. For gold and
+ LLD, we use ``-icf=all``.
+
+Build
+-----
+
+If you have already checked out LLVM using SVN, you can check out LLD
+under ``tools`` directory just like you probably did for clang. For the
+details, see `Getting Started with the LLVM System
+<http://llvm.org/docs/GettingStarted.html>`_.
+
+If you haven't checkout out LLVM, the easiest way to build LLD is to
+checkout the entire LLVM projects/sub-projects from a git mirror and
+build that tree. You need `cmake` and of course a C++ compiler.
+
+.. code-block:: console
+
+ $ git clone https://github.com/llvm-project/llvm-project/
+ $ mkdir build
+ $ cd build
+ $ cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=lld -DCMAKE_INSTALL_PREFIX=/usr/local ../llvm-project/llvm
+ $ make install
+
+Using LLD
+---------
+
+LLD is installed as ``ld.lld``. On Unix, linkers are invoked by
+compiler drivers, so you are not expected to use that command
+directly. There are a few ways to tell compiler drivers to use ld.lld
+instead of the default linker.
+
+The easiest way to do that is to overwrite the default linker. After
+installing LLD to somewhere on your disk, you can create a symbolic
+link by doing ``ln -s /path/to/ld.lld /usr/bin/ld`` so that
+``/usr/bin/ld`` is resolved to LLD.
+
+If you don't want to change the system setting, you can use clang's
+``-fuse-ld`` option. In this way, you want to set ``-fuse-ld=lld`` to
+LDFLAGS when building your programs.
+
+LLD leaves its name and version number to a ``.comment`` section in an
+output. If you are in doubt whether you are successfully using LLD or
+not, run ``readelf --string-dump .comment <output-file>`` and examine the
+output. If the string "Linker: LLD" is included in the output, you are
+using LLD.
+
+History
+-------
+
+Here is a brief project history of the ELF and COFF ports.
+
+- May 2015: We decided to rewrite the COFF linker and did that.
+ Noticed that the new linker is much faster than the MSVC linker.
+
+- July 2015: The new ELF port was developed based on the COFF linker
+ architecture.
+
+- September 2015: The first patches to support MIPS and AArch64 landed.
+
+- October 2015: Succeeded to self-host the ELF port. We have noticed
+ that the linker was faster than the GNU linkers, but we weren't sure
+ at the time if we would be able to keep the gap as we would add more
+ features to the linker.
+
+- July 2016: Started working on improving the linker script support.
+
+- December 2016: Succeeded to build the entire FreeBSD base system
+ including the kernel. We had widen the performance gap against the
+ GNU linkers.
+
+Internals
+---------
+
+For the internals of the linker, please read :doc:`NewLLD`. It is a bit
+outdated but the fundamental concepts remain valid. We'll update the
+document soon.
+
+.. toctree::
+ :maxdepth: 1
+
+ NewLLD
+ AtomLLD
+ windows_support
+ ReleaseNotes
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/open_projects.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/open_projects.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/open_projects.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/open_projects.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,11 @@
+.. _open_projects:
+
+Open Projects
+=============
+
+.. include:: ../include/lld/Core/TODO.txt
+
+Documentation TODOs
+~~~~~~~~~~~~~~~~~~~
+
+.. todolist::
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/sphinx_intro.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/sphinx_intro.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/sphinx_intro.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/sphinx_intro.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,147 @@
+.. _sphinx_intro:
+
+Sphinx Introduction for LLVM Developers
+=======================================
+
+This document is intended as a short and simple introduction to the Sphinx
+documentation generation system for LLVM developers.
+
+Quickstart
+----------
+
+To get started writing documentation, you will need to:
+
+ 1. Have the Sphinx tools :ref:`installed <installing_sphinx>`.
+
+ 2. Understand how to :ref:`build the documentation
+ <building_the_documentation>`.
+
+ 3. Start :ref:`writing documentation <writing_documentation>`!
+
+.. _installing_sphinx:
+
+Installing Sphinx
+~~~~~~~~~~~~~~~~~
+
+You should be able to install Sphinx using the standard Python package
+installation tool ``easy_install``, as follows::
+
+ $ sudo easy_install sphinx
+ Searching for sphinx
+ Reading http://pypi.python.org/simple/sphinx/
+ Reading http://sphinx.pocoo.org/
+ Best match: Sphinx 1.1.3
+ ... more lines here ..
+
+If you do not have root access (or otherwise want to avoid installing Sphinx in
+system directories) see the section on :ref:`installing_sphinx_in_a_venv` .
+
+If you do not have the ``easy_install`` tool on your system, you should be able
+to install it using:
+
+ Linux
+ Use your distribution's standard package management tool to install it,
+ i.e., ``apt-get install easy_install`` or ``yum install easy_install``.
+
+ Mac OS X
+ All modern Mac OS X systems come with ``easy_install`` as part of the base
+ system.
+
+ Windows
+ See the `setuptools <http://pypi.python.org/pypi/setuptools>`_ package web
+ page for instructions.
+
+
+.. _building_the_documentation:
+
+Building the documentation
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In order to build the documentation, all you should need to do is change to the
+``docs`` directory and invoke make as follows::
+
+ $ cd path/to/project/docs
+ $ make html
+
+Note that on Windows there is a ``make.bat`` command in the docs directory which
+supplies the same interface as the ``Makefile``.
+
+That command will invoke ``sphinx-build`` with the appropriate options for the
+project, and generate the HTML documentation in a ``_build`` subdirectory. You
+can browse it starting from the index page by visiting
+``_build/html/index.html``.
+
+Sphinx supports a wide variety of generation formats (including LaTeX, man
+pages, and plain text). The ``Makefile`` includes a number of convenience
+targets for invoking ``sphinx-build`` appropriately, the common ones are:
+
+ make html
+ Generate the HTML output.
+
+ make latexpdf
+ Generate LaTeX documentation and convert to a PDF.
+
+ make man
+ Generate man pages.
+
+
+.. _writing_documentation:
+
+Writing documentation
+~~~~~~~~~~~~~~~~~~~~~
+
+The documentation itself is written in the reStructuredText (ReST) format, and Sphinx
+defines additional tags to support features like cross-referencing.
+
+The ReST format itself is organized around documents mostly being readable
+plaintext documents. You should generally be able to write new documentation
+easily just by following the style of the existing documentation.
+
+If you want to understand the formatting of the documents more, the best place
+to start is Sphinx's own `ReST Primer <http://sphinx.pocoo.org/rest.html>`_.
+
+
+Learning More
+-------------
+
+If you want to learn more about the Sphinx system, the best place to start is
+the Sphinx documentation itself, available `here
+<http://sphinx.pocoo.org/contents.html>`_.
+
+
+.. _installing_sphinx_in_a_venv:
+
+Installing Sphinx in a Virtual Environment
+------------------------------------------
+
+Most Python developers prefer to work with tools inside a *virtualenv* (virtual
+environment) instance, which functions as an application sandbox. This avoids
+polluting your system installation with different packages used by various
+projects (and ensures that dependencies for different packages don't conflict
+with one another). Of course, you need to first have the virtualenv software
+itself which generally would be installed at the system level::
+
+ $ sudo easy_install virtualenv
+
+but after that you no longer need to install additional packages in the system
+directories.
+
+Once you have the *virtualenv* tool itself installed, you can create a
+virtualenv for Sphinx using::
+
+ $ virtualenv ~/my-sphinx-install
+ New python executable in /Users/dummy/my-sphinx-install/bin/python
+ Installing setuptools............done.
+ Installing pip...............done.
+
+ $ ~/my-sphinx-install/bin/easy_install sphinx
+ ... install messages here ...
+
+and from now on you can "activate" the *virtualenv* using::
+
+ $ source ~/my-sphinx-install/bin/activate
+
+which will change your PATH to ensure the sphinx-build tool from inside the
+virtual environment will be used. See the `virtualenv website
+<http://www.virtualenv.org/en/latest/index.html>`_ for more information on using
+virtual environments.
Added: www-releases/trunk/5.0.2/tools/lld/docs/_sources/windows_support.txt
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_sources/windows_support.txt?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_sources/windows_support.txt (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_sources/windows_support.txt Thu May 10 06:54:16 2018
@@ -0,0 +1,91 @@
+.. raw:: html
+
+ <style type="text/css">
+ .none { background-color: #FFCCCC }
+ .partial { background-color: #FFFF99 }
+ .good { background-color: #CCFF99 }
+ </style>
+
+.. role:: none
+.. role:: partial
+.. role:: good
+
+===============
+Windows support
+===============
+
+LLD supports Windows operating system. When invoked as ``lld-link.exe`` or with
+``-flavor link``, the driver for Windows operating system is used to parse
+command line options, and it drives further linking processes. LLD accepts
+almost all command line options that the linker shipped with Microsoft Visual
+C++ (link.exe) supports.
+
+The current status is that LLD can link itself on Windows x86/x64
+using Visual C++ 2013 as the compiler.
+
+Development status
+==================
+
+Driver
+ :good:`Mostly done`. Some exotic command line options that are not usually
+ used for application develompent, such as ``/DRIVER``, are not supported.
+
+Linking against DLL
+ :good:`Done`. LLD can read import libraries needed to link against DLL. Both
+ export-by-name and export-by-ordinal are supported.
+
+Linking against static library
+ :good:`Done`. The format of static library (.lib) on Windows is actually the
+ same as on Unix (.a). LLD can read it.
+
+Creating DLL
+ :good:`Done`. LLD creates a DLL if ``/DLL`` option is given. Exported
+ functions can be specified either via command line (``/EXPORT``) or via
+ module-definition file (.def). Both export-by-name and export-by-ordinal are
+ supported.
+
+Windows resource files support
+ :good:`Done`. If an ``.res`` file is given, LLD converts the file to a COFF
+ file using LLVM's Object library.
+
+Safe Structured Exception Handler (SEH)
+ :good:`Done` for both x86 and x64.
+
+Module-definition file
+ :partial:`Partially done`. LLD currently recognizes these directives:
+ ``EXPORTS``, ``HEAPSIZE``, ``STACKSIZE``, ``NAME``, and ``VERSION``.
+
+Debug info
+ :none:`No progress has been made`. Microsoft linker can interpret the CodeGen
+ debug info (old-style debug info) and PDB to emit an .pdb file. LLD doesn't
+ support neither.
+
+
+Building LLD
+============
+
+Using Visual Studio IDE/MSBuild
+-------------------------------
+
+1. Check out LLVM and LLD from the LLVM SVN repository (or Git mirror),
+#. run ``cmake -G "Visual Studio 12" <llvm-source-dir>`` from VS command prompt,
+#. open LLVM.sln with Visual Studio, and
+#. build ``lld`` target in ``lld executables`` folder
+
+Alternatively, you can use msbuild if you don't like to work in an IDE::
+
+ msbuild LLVM.sln /m /target:"lld executables\lld"
+
+MSBuild.exe had been shipped as a component of the .NET framework, but since
+2013 it's part of Visual Studio. You can find it at "C:\\Program Files
+(x86)\\msbuild".
+
+You can build LLD as a 64 bit application. To do that, open VS2013 x64 command
+prompt and run cmake for "Visual Studio 12 Win64" target.
+
+Using Ninja
+-----------
+
+1. Check out LLVM and LLD from the LLVM SVN repository (or Git mirror),
+#. run ``cmake -G ninja <llvm-source-dir>`` from VS command prompt,
+#. run ``ninja lld``
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/ajax-loader.gif
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/ajax-loader.gif?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/ajax-loader.gif
------------------------------------------------------------------------------
svn:mime-type = image/gif
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/basic.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/basic.css?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/basic.css (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/basic.css Thu May 10 06:54:16 2018
@@ -0,0 +1,540 @@
+/*
+ * basic.css
+ * ~~~~~~~~~
+ *
+ * Sphinx stylesheet -- basic theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/* -- main layout ----------------------------------------------------------- */
+
+div.clearer {
+ clear: both;
+}
+
+/* -- relbar ---------------------------------------------------------------- */
+
+div.related {
+ width: 100%;
+ font-size: 90%;
+}
+
+div.related h3 {
+ display: none;
+}
+
+div.related ul {
+ margin: 0;
+ padding: 0 0 0 10px;
+ list-style: none;
+}
+
+div.related li {
+ display: inline;
+}
+
+div.related li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+/* -- sidebar --------------------------------------------------------------- */
+
+div.sphinxsidebarwrapper {
+ padding: 10px 5px 0 10px;
+}
+
+div.sphinxsidebar {
+ float: left;
+ width: 230px;
+ margin-left: -100%;
+ font-size: 90%;
+}
+
+div.sphinxsidebar ul {
+ list-style: none;
+}
+
+div.sphinxsidebar ul ul,
+div.sphinxsidebar ul.want-points {
+ margin-left: 20px;
+ list-style: square;
+}
+
+div.sphinxsidebar ul ul {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+div.sphinxsidebar form {
+ margin-top: 10px;
+}
+
+div.sphinxsidebar input {
+ border: 1px solid #98dbcc;
+ font-family: sans-serif;
+ font-size: 1em;
+}
+
+div.sphinxsidebar #searchbox input[type="text"] {
+ width: 170px;
+}
+
+div.sphinxsidebar #searchbox input[type="submit"] {
+ width: 30px;
+}
+
+img {
+ border: 0;
+}
+
+/* -- search page ----------------------------------------------------------- */
+
+ul.search {
+ margin: 10px 0 0 20px;
+ padding: 0;
+}
+
+ul.search li {
+ padding: 5px 0 5px 20px;
+ background-image: url(file.png);
+ background-repeat: no-repeat;
+ background-position: 0 7px;
+}
+
+ul.search li a {
+ font-weight: bold;
+}
+
+ul.search li div.context {
+ color: #888;
+ margin: 2px 0 0 30px;
+ text-align: left;
+}
+
+ul.keywordmatches li.goodmatch a {
+ font-weight: bold;
+}
+
+/* -- index page ------------------------------------------------------------ */
+
+table.contentstable {
+ width: 90%;
+}
+
+table.contentstable p.biglink {
+ line-height: 150%;
+}
+
+a.biglink {
+ font-size: 1.3em;
+}
+
+span.linkdescr {
+ font-style: italic;
+ padding-top: 5px;
+ font-size: 90%;
+}
+
+/* -- general index --------------------------------------------------------- */
+
+table.indextable {
+ width: 100%;
+}
+
+table.indextable td {
+ text-align: left;
+ vertical-align: top;
+}
+
+table.indextable dl, table.indextable dd {
+ margin-top: 0;
+ margin-bottom: 0;
+}
+
+table.indextable tr.pcap {
+ height: 10px;
+}
+
+table.indextable tr.cap {
+ margin-top: 10px;
+ background-color: #f2f2f2;
+}
+
+img.toggler {
+ margin-right: 3px;
+ margin-top: 3px;
+ cursor: pointer;
+}
+
+div.modindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+div.genindex-jumpbox {
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ margin: 1em 0 1em 0;
+ padding: 0.4em;
+}
+
+/* -- general body styles --------------------------------------------------- */
+
+a.headerlink {
+ visibility: hidden;
+}
+
+h1:hover > a.headerlink,
+h2:hover > a.headerlink,
+h3:hover > a.headerlink,
+h4:hover > a.headerlink,
+h5:hover > a.headerlink,
+h6:hover > a.headerlink,
+dt:hover > a.headerlink {
+ visibility: visible;
+}
+
+div.body p.caption {
+ text-align: inherit;
+}
+
+div.body td {
+ text-align: left;
+}
+
+.field-list ul {
+ padding-left: 1em;
+}
+
+.first {
+ margin-top: 0 !important;
+}
+
+p.rubric {
+ margin-top: 30px;
+ font-weight: bold;
+}
+
+img.align-left, .figure.align-left, object.align-left {
+ clear: left;
+ float: left;
+ margin-right: 1em;
+}
+
+img.align-right, .figure.align-right, object.align-right {
+ clear: right;
+ float: right;
+ margin-left: 1em;
+}
+
+img.align-center, .figure.align-center, object.align-center {
+ display: block;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.align-left {
+ text-align: left;
+}
+
+.align-center {
+ text-align: center;
+}
+
+.align-right {
+ text-align: right;
+}
+
+/* -- sidebars -------------------------------------------------------------- */
+
+div.sidebar {
+ margin: 0 0 0.5em 1em;
+ border: 1px solid #ddb;
+ padding: 7px 7px 0 7px;
+ background-color: #ffe;
+ width: 40%;
+ float: right;
+}
+
+p.sidebar-title {
+ font-weight: bold;
+}
+
+/* -- topics ---------------------------------------------------------------- */
+
+div.topic {
+ border: 1px solid #ccc;
+ padding: 7px 7px 0 7px;
+ margin: 10px 0 10px 0;
+}
+
+p.topic-title {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-top: 10px;
+}
+
+/* -- admonitions ----------------------------------------------------------- */
+
+div.admonition {
+ margin-top: 10px;
+ margin-bottom: 10px;
+ padding: 7px;
+}
+
+div.admonition dt {
+ font-weight: bold;
+}
+
+div.admonition dl {
+ margin-bottom: 0;
+}
+
+p.admonition-title {
+ margin: 0px 10px 5px 0px;
+ font-weight: bold;
+}
+
+div.body p.centered {
+ text-align: center;
+ margin-top: 25px;
+}
+
+/* -- tables ---------------------------------------------------------------- */
+
+table.docutils {
+ border: 0;
+ border-collapse: collapse;
+}
+
+table.docutils td, table.docutils th {
+ padding: 1px 8px 1px 5px;
+ border-top: 0;
+ border-left: 0;
+ border-right: 0;
+ border-bottom: 1px solid #aaa;
+}
+
+table.field-list td, table.field-list th {
+ border: 0 !important;
+}
+
+table.footnote td, table.footnote th {
+ border: 0 !important;
+}
+
+th {
+ text-align: left;
+ padding-right: 5px;
+}
+
+table.citation {
+ border-left: solid 1px gray;
+ margin-left: 1px;
+}
+
+table.citation td {
+ border-bottom: none;
+}
+
+/* -- other body styles ----------------------------------------------------- */
+
+ol.arabic {
+ list-style: decimal;
+}
+
+ol.loweralpha {
+ list-style: lower-alpha;
+}
+
+ol.upperalpha {
+ list-style: upper-alpha;
+}
+
+ol.lowerroman {
+ list-style: lower-roman;
+}
+
+ol.upperroman {
+ list-style: upper-roman;
+}
+
+dl {
+ margin-bottom: 15px;
+}
+
+dd p {
+ margin-top: 0px;
+}
+
+dd ul, dd table {
+ margin-bottom: 10px;
+}
+
+dd {
+ margin-top: 3px;
+ margin-bottom: 10px;
+ margin-left: 30px;
+}
+
+dt:target, .highlighted {
+ background-color: #fbe54e;
+}
+
+dl.glossary dt {
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.field-list ul {
+ margin: 0;
+ padding-left: 1em;
+}
+
+.field-list p {
+ margin: 0;
+}
+
+.refcount {
+ color: #060;
+}
+
+.optional {
+ font-size: 1.3em;
+}
+
+.versionmodified {
+ font-style: italic;
+}
+
+.system-message {
+ background-color: #fda;
+ padding: 5px;
+ border: 3px solid red;
+}
+
+.footnote:target {
+ background-color: #ffa;
+}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}
+
+.guilabel, .menuselection {
+ font-family: sans-serif;
+}
+
+.accelerator {
+ text-decoration: underline;
+}
+
+.classifier {
+ font-style: oblique;
+}
+
+abbr, acronym {
+ border-bottom: dotted 1px;
+ cursor: help;
+}
+
+/* -- code displays --------------------------------------------------------- */
+
+pre {
+ overflow: auto;
+ overflow-y: hidden; /* fixes display issues on Chrome browsers */
+}
+
+td.linenos pre {
+ padding: 5px 0px;
+ border: 0;
+ background-color: transparent;
+ color: #aaa;
+}
+
+table.highlighttable {
+ margin-left: 0.5em;
+}
+
+table.highlighttable td {
+ padding: 0 0.5em 0 0.5em;
+}
+
+tt.descname {
+ background-color: transparent;
+ font-weight: bold;
+ font-size: 1.2em;
+}
+
+tt.descclassname {
+ background-color: transparent;
+}
+
+tt.xref, a tt {
+ background-color: transparent;
+ font-weight: bold;
+}
+
+h1 tt, h2 tt, h3 tt, h4 tt, h5 tt, h6 tt {
+ background-color: transparent;
+}
+
+.viewcode-link {
+ float: right;
+}
+
+.viewcode-back {
+ float: right;
+ font-family: sans-serif;
+}
+
+div.viewcode-block:target {
+ margin: -1px -10px;
+ padding: 0 10px;
+}
+
+/* -- math display ---------------------------------------------------------- */
+
+img.math {
+ vertical-align: middle;
+}
+
+div.body div.math p {
+ text-align: center;
+}
+
+span.eqno {
+ float: right;
+}
+
+/* -- printout stylesheet --------------------------------------------------- */
+
+ at media print {
+ div.document,
+ div.documentwrapper,
+ div.bodywrapper {
+ margin: 0 !important;
+ width: 100%;
+ }
+
+ div.sphinxsidebar,
+ div.related,
+ div.footer,
+ #top-link {
+ display: none;
+ }
+}
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/comment-bright.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/comment-bright.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/comment-bright.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/comment-close.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/comment-close.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/comment-close.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/comment.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/comment.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/comment.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/contents.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/contents.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/contents.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/doctools.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/doctools.js?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/doctools.js (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/doctools.js Thu May 10 06:54:16 2018
@@ -0,0 +1,247 @@
+/*
+ * doctools.js
+ * ~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilities for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * select a different prefix for underscore
+ */
+$u = _.noConflict();
+
+/**
+ * make the code below compatible with browsers without
+ * an installed firebug like debugger
+if (!window.console || !console.firebug) {
+ var names = ["log", "debug", "info", "warn", "error", "assert", "dir",
+ "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace",
+ "profile", "profileEnd"];
+ window.console = {};
+ for (var i = 0; i < names.length; ++i)
+ window.console[names[i]] = function() {};
+}
+ */
+
+/**
+ * small helper function to urldecode strings
+ */
+jQuery.urldecode = function(x) {
+ return decodeURIComponent(x).replace(/\+/g, ' ');
+}
+
+/**
+ * small helper function to urlencode strings
+ */
+jQuery.urlencode = encodeURIComponent;
+
+/**
+ * This function returns the parsed url parameters of the
+ * current request. Multiple values per key are supported,
+ * it will always return arrays of strings for the value parts.
+ */
+jQuery.getQueryParameters = function(s) {
+ if (typeof s == 'undefined')
+ s = document.location.search;
+ var parts = s.substr(s.indexOf('?') + 1).split('&');
+ var result = {};
+ for (var i = 0; i < parts.length; i++) {
+ var tmp = parts[i].split('=', 2);
+ var key = jQuery.urldecode(tmp[0]);
+ var value = jQuery.urldecode(tmp[1]);
+ if (key in result)
+ result[key].push(value);
+ else
+ result[key] = [value];
+ }
+ return result;
+};
+
+/**
+ * small function to check if an array contains
+ * a given item.
+ */
+jQuery.contains = function(arr, item) {
+ for (var i = 0; i < arr.length; i++) {
+ if (arr[i] == item)
+ return true;
+ }
+ return false;
+};
+
+/**
+ * highlight a given string on a jquery object by wrapping it in
+ * span elements with the given class name.
+ */
+jQuery.fn.highlightText = function(text, className) {
+ function highlight(node) {
+ if (node.nodeType == 3) {
+ var val = node.nodeValue;
+ var pos = val.toLowerCase().indexOf(text);
+ if (pos >= 0 && !jQuery(node.parentNode).hasClass(className)) {
+ var span = document.createElement("span");
+ span.className = className;
+ span.appendChild(document.createTextNode(val.substr(pos, text.length)));
+ node.parentNode.insertBefore(span, node.parentNode.insertBefore(
+ document.createTextNode(val.substr(pos + text.length)),
+ node.nextSibling));
+ node.nodeValue = val.substr(0, pos);
+ }
+ }
+ else if (!jQuery(node).is("button, select, textarea")) {
+ jQuery.each(node.childNodes, function() {
+ highlight(this);
+ });
+ }
+ }
+ return this.each(function() {
+ highlight(this);
+ });
+};
+
+/**
+ * Small JavaScript module for the documentation.
+ */
+var Documentation = {
+
+ init : function() {
+ this.fixFirefoxAnchorBug();
+ this.highlightSearchWords();
+ this.initIndexTable();
+ },
+
+ /**
+ * i18n support
+ */
+ TRANSLATIONS : {},
+ PLURAL_EXPR : function(n) { return n == 1 ? 0 : 1; },
+ LOCALE : 'unknown',
+
+ // gettext and ngettext don't access this so that the functions
+ // can safely bound to a different name (_ = Documentation.gettext)
+ gettext : function(string) {
+ var translated = Documentation.TRANSLATIONS[string];
+ if (typeof translated == 'undefined')
+ return string;
+ return (typeof translated == 'string') ? translated : translated[0];
+ },
+
+ ngettext : function(singular, plural, n) {
+ var translated = Documentation.TRANSLATIONS[singular];
+ if (typeof translated == 'undefined')
+ return (n == 1) ? singular : plural;
+ return translated[Documentation.PLURALEXPR(n)];
+ },
+
+ addTranslations : function(catalog) {
+ for (var key in catalog.messages)
+ this.TRANSLATIONS[key] = catalog.messages[key];
+ this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')');
+ this.LOCALE = catalog.locale;
+ },
+
+ /**
+ * add context elements like header anchor links
+ */
+ addContextElements : function() {
+ $('div[id] > :header:first').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this headline')).
+ appendTo(this);
+ });
+ $('dt[id]').each(function() {
+ $('<a class="headerlink">\u00B6</a>').
+ attr('href', '#' + this.id).
+ attr('title', _('Permalink to this definition')).
+ appendTo(this);
+ });
+ },
+
+ /**
+ * workaround a firefox stupidity
+ */
+ fixFirefoxAnchorBug : function() {
+ if (document.location.hash && $.browser.mozilla)
+ window.setTimeout(function() {
+ document.location.href += '';
+ }, 10);
+ },
+
+ /**
+ * highlight the search words provided in the url in the text
+ */
+ highlightSearchWords : function() {
+ var params = $.getQueryParameters();
+ var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : [];
+ if (terms.length) {
+ var body = $('div.body');
+ window.setTimeout(function() {
+ $.each(terms, function() {
+ body.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ }, 10);
+ $('<p class="highlight-link"><a href="javascript:Documentation.' +
+ 'hideSearchWords()">' + _('Hide Search Matches') + '</a></p>')
+ .appendTo($('#searchbox'));
+ }
+ },
+
+ /**
+ * init the domain index toggle buttons
+ */
+ initIndexTable : function() {
+ var togglers = $('img.toggler').click(function() {
+ var src = $(this).attr('src');
+ var idnum = $(this).attr('id').substr(7);
+ $('tr.cg-' + idnum).toggle();
+ if (src.substr(-9) == 'minus.png')
+ $(this).attr('src', src.substr(0, src.length-9) + 'plus.png');
+ else
+ $(this).attr('src', src.substr(0, src.length-8) + 'minus.png');
+ }).css('display', '');
+ if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) {
+ togglers.click();
+ }
+ },
+
+ /**
+ * helper function to hide the search marks again
+ */
+ hideSearchWords : function() {
+ $('#searchbox .highlight-link').fadeOut(300);
+ $('span.highlighted').removeClass('highlighted');
+ },
+
+ /**
+ * make the url absolute
+ */
+ makeURL : function(relativeURL) {
+ return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL;
+ },
+
+ /**
+ * get the current relative url
+ */
+ getCurrentURL : function() {
+ var path = document.location.pathname;
+ var parts = path.split(/\//);
+ $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() {
+ if (this == '..')
+ parts.pop();
+ });
+ var url = parts.join('/');
+ return path.substring(url.lastIndexOf('/') + 1, path.length - 1);
+ }
+};
+
+// quick alias for translations
+_ = Documentation.gettext;
+
+$(document).ready(function() {
+ Documentation.init();
+});
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/down-pressed.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/down-pressed.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/down-pressed.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/down.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/down.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/down.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/favicon.ico
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/favicon.ico?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/favicon.ico
------------------------------------------------------------------------------
svn:mime-type = image/x-icon
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/file.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/file.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/file.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/jquery.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/jquery.js?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/jquery.js (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/jquery.js Thu May 10 06:54:16 2018
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
+e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
+j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
+"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
+true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
+c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
+L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
+"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
+a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
+d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
+a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
+!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
+true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
+i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
+" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
+this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
+e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
+null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
+d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
+"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
+a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
+isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
+{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
+if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
+!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
+toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
+u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
+function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
+if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
+for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
+1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
+CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
+relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
+l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
+h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
+m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
+!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
+h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
+gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
+c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
+a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
+this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
+u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
+1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
+"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
+serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
+function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
+global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
+e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
+"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
+false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
+false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
+c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
+d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
+g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
+1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
+"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
+if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
+this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
+"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
+animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
+j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
+this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
+"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
+c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
+this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
+this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
+e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
+c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
+function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
+this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
+k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
+f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
+a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
+c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
+d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
+f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
+"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
+e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/llvm.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/llvm.css?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/llvm.css (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/llvm.css Thu May 10 06:54:16 2018
@@ -0,0 +1,345 @@
+/*
+ * sphinxdoc.css_t
+ * ~~~~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- sphinxdoc theme. Originally created by
+ * Armin Ronacher for Werkzeug.
+ *
+ * :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+ at import url("basic.css");
+
+/* -- page layout ----------------------------------------------------------- */
+
+body {
+ font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
+ 'Verdana', sans-serif;
+ font-size: 14px;
+ letter-spacing: -0.01em;
+ line-height: 150%;
+ text-align: center;
+ background-color: #BFD1D4;
+ color: black;
+ padding: 0;
+ border: 1px solid #aaa;
+
+ margin: 0px 80px 0px 80px;
+ min-width: 740px;
+}
+
+div.logo {
+ background-color: white;
+ text-align: left;
+ padding: 10px 10px 15px 15px;
+}
+
+div.document {
+ background-color: white;
+ text-align: left;
+ background-image: url(contents.png);
+ background-repeat: repeat-x;
+}
+
+div.bodywrapper {
+ margin: 0 240px 0 0;
+ border-right: 1px solid #ccc;
+}
+
+div.body {
+ margin: 0;
+ padding: 0.5em 20px 20px 20px;
+}
+
+div.related {
+ font-size: 1em;
+}
+
+div.related ul {
+ background-image: url(navigation.png);
+ height: 2em;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+}
+
+div.related ul li {
+ margin: 0;
+ padding: 0;
+ height: 2em;
+ float: left;
+}
+
+div.related ul li.right {
+ float: right;
+ margin-right: 5px;
+}
+
+div.related ul li a {
+ margin: 0;
+ padding: 0 5px 0 5px;
+ line-height: 1.75em;
+ color: #EE9816;
+}
+
+div.related ul li a:hover {
+ color: #3CA8E7;
+}
+
+div.sphinxsidebarwrapper {
+ padding: 0;
+}
+
+div.sphinxsidebar {
+ margin: 0;
+ padding: 0.5em 15px 15px 0;
+ width: 210px;
+ float: right;
+ font-size: 1em;
+ text-align: left;
+}
+
+div.sphinxsidebar h3, div.sphinxsidebar h4 {
+ margin: 1em 0 0.5em 0;
+ font-size: 1em;
+ padding: 0.1em 0 0.1em 0.5em;
+ color: white;
+ border: 1px solid #86989B;
+ background-color: #AFC1C4;
+}
+
+div.sphinxsidebar h3 a {
+ color: white;
+}
+
+div.sphinxsidebar ul {
+ padding-left: 1.5em;
+ margin-top: 7px;
+ padding: 0;
+ line-height: 130%;
+}
+
+div.sphinxsidebar ul ul {
+ margin-left: 20px;
+}
+
+div.footer {
+ background-color: #E3EFF1;
+ color: #86989B;
+ padding: 3px 8px 3px 0;
+ clear: both;
+ font-size: 0.8em;
+ text-align: right;
+}
+
+div.footer a {
+ color: #86989B;
+ text-decoration: underline;
+}
+
+/* -- body styles ----------------------------------------------------------- */
+
+p {
+ margin: 0.8em 0 0.5em 0;
+}
+
+a {
+ color: #CA7900;
+ text-decoration: none;
+}
+
+a:hover {
+ color: #2491CF;
+}
+
+div.body a {
+ text-decoration: underline;
+}
+
+h1 {
+ margin: 0;
+ padding: 0.7em 0 0.3em 0;
+ font-size: 1.5em;
+ color: #11557C;
+}
+
+h2 {
+ margin: 1.3em 0 0.2em 0;
+ font-size: 1.35em;
+ padding: 0;
+}
+
+h3 {
+ margin: 1em 0 -0.3em 0;
+ font-size: 1.2em;
+}
+
+div.body h1 a, div.body h2 a, div.body h3 a, div.body h4 a, div.body h5 a, div.body h6 a {
+ color: black!important;
+}
+
+h1 a.anchor, h2 a.anchor, h3 a.anchor, h4 a.anchor, h5 a.anchor, h6 a.anchor {
+ display: none;
+ margin: 0 0 0 0.3em;
+ padding: 0 0.2em 0 0.2em;
+ color: #aaa!important;
+}
+
+h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor,
+h5:hover a.anchor, h6:hover a.anchor {
+ display: inline;
+}
+
+h1 a.anchor:hover, h2 a.anchor:hover, h3 a.anchor:hover, h4 a.anchor:hover,
+h5 a.anchor:hover, h6 a.anchor:hover {
+ color: #777;
+ background-color: #eee;
+}
+
+a.headerlink {
+ color: #c60f0f!important;
+ font-size: 1em;
+ margin-left: 6px;
+ padding: 0 4px 0 4px;
+ text-decoration: none!important;
+}
+
+a.headerlink:hover {
+ background-color: #ccc;
+ color: white!important;
+}
+
+cite, code, tt {
+ font-family: 'Consolas', 'Deja Vu Sans Mono',
+ 'Bitstream Vera Sans Mono', monospace;
+ font-size: 0.95em;
+ letter-spacing: 0.01em;
+}
+
+tt {
+ background-color: #f2f2f2;
+ border-bottom: 1px solid #ddd;
+ color: #333;
+}
+
+tt.descname, tt.descclassname, tt.xref {
+ border: 0;
+}
+
+hr {
+ border: 1px solid #abc;
+ margin: 2em;
+}
+
+a tt {
+ border: 0;
+ color: #CA7900;
+}
+
+a tt:hover {
+ color: #2491CF;
+}
+
+pre {
+ font-family: 'Consolas', 'Deja Vu Sans Mono',
+ 'Bitstream Vera Sans Mono', monospace;
+ font-size: 0.95em;
+ letter-spacing: 0.015em;
+ line-height: 120%;
+ padding: 0.5em;
+ border: 1px solid #ccc;
+ background-color: #f8f8f8;
+}
+
+pre a {
+ color: inherit;
+ text-decoration: underline;
+}
+
+td.linenos pre {
+ padding: 0.5em 0;
+}
+
+div.quotebar {
+ background-color: #f8f8f8;
+ max-width: 250px;
+ float: right;
+ padding: 2px 7px;
+ border: 1px solid #ccc;
+}
+
+div.topic {
+ background-color: #f8f8f8;
+}
+
+table {
+ border-collapse: collapse;
+ margin: 0 -0.5em 0 -0.5em;
+}
+
+table td, table th {
+ padding: 0.2em 0.5em 0.2em 0.5em;
+}
+
+div.admonition, div.warning {
+ font-size: 0.9em;
+ margin: 1em 0 1em 0;
+ border: 1px solid #86989B;
+ background-color: #f7f7f7;
+ padding: 0;
+}
+
+div.admonition p, div.warning p {
+ margin: 0.5em 1em 0.5em 1em;
+ padding: 0;
+}
+
+div.admonition pre, div.warning pre {
+ margin: 0.4em 1em 0.4em 1em;
+}
+
+div.admonition p.admonition-title,
+div.warning p.admonition-title {
+ margin: 0;
+ padding: 0.1em 0 0.1em 0.5em;
+ color: white;
+ border-bottom: 1px solid #86989B;
+ font-weight: bold;
+ background-color: #AFC1C4;
+}
+
+div.warning {
+ border: 1px solid #940000;
+}
+
+div.warning p.admonition-title {
+ background-color: #CF0000;
+ border-bottom-color: #940000;
+}
+
+div.admonition ul, div.admonition ol,
+div.warning ul, div.warning ol {
+ margin: 0.1em 0.5em 0.5em 3em;
+ padding: 0;
+}
+
+div.versioninfo {
+ margin: 1em 0 0 0;
+ border: 1px solid #ccc;
+ background-color: #DDEAF0;
+ padding: 8px;
+ line-height: 1.3em;
+ font-size: 0.9em;
+}
+
+.viewcode-back {
+ font-family: 'Lucida Grande', 'Lucida Sans Unicode', 'Geneva',
+ 'Verdana', sans-serif;
+}
+
+div.viewcode-block:target {
+ background-color: #f4debf;
+ border-top: 1px solid #ac9;
+ border-bottom: 1px solid #ac9;
+}
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/logo.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/logo.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/logo.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/minus.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/minus.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/minus.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/navigation.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/navigation.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/navigation.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/plus.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/plus.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/plus.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/pygments.css
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/pygments.css?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/pygments.css (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/pygments.css Thu May 10 06:54:16 2018
@@ -0,0 +1,62 @@
+.highlight .hll { background-color: #ffffcc }
+.highlight { background: #f0f0f0; }
+.highlight .c { color: #60a0b0; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #666666 } /* Operator */
+.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #808080 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0040D0 } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #40a070 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #06287e } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #40a070 } /* Literal.Number.Float */
+.highlight .mh { color: #40a070 } /* Literal.Number.Hex */
+.highlight .mi { color: #40a070 } /* Literal.Number.Integer */
+.highlight .mo { color: #40a070 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/searchtools.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/searchtools.js?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/searchtools.js (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/searchtools.js Thu May 10 06:54:16 2018
@@ -0,0 +1,560 @@
+/*
+ * searchtools.js_t
+ * ~~~~~~~~~~~~~~~~
+ *
+ * Sphinx JavaScript utilties for the full-text search.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+/**
+ * helper function to return a node containing the
+ * search summary for a given text. keywords is a list
+ * of stemmed words, hlwords is the list of normal, unstemmed
+ * words. the first one is used to find the occurance, the
+ * latter for highlighting it.
+ */
+
+jQuery.makeSearchSummary = function(text, keywords, hlwords) {
+ var textLower = text.toLowerCase();
+ var start = 0;
+ $.each(keywords, function() {
+ var i = textLower.indexOf(this.toLowerCase());
+ if (i > -1)
+ start = i;
+ });
+ start = Math.max(start - 120, 0);
+ var excerpt = ((start > 0) ? '...' : '') +
+ $.trim(text.substr(start, 240)) +
+ ((start + 240 - text.length) ? '...' : '');
+ var rv = $('<div class="context"></div>').text(excerpt);
+ $.each(hlwords, function() {
+ rv = rv.highlightText(this, 'highlighted');
+ });
+ return rv;
+}
+
+
+/**
+ * Porter Stemmer
+ */
+var Stemmer = function() {
+
+ var step2list = {
+ ational: 'ate',
+ tional: 'tion',
+ enci: 'ence',
+ anci: 'ance',
+ izer: 'ize',
+ bli: 'ble',
+ alli: 'al',
+ entli: 'ent',
+ eli: 'e',
+ ousli: 'ous',
+ ization: 'ize',
+ ation: 'ate',
+ ator: 'ate',
+ alism: 'al',
+ iveness: 'ive',
+ fulness: 'ful',
+ ousness: 'ous',
+ aliti: 'al',
+ iviti: 'ive',
+ biliti: 'ble',
+ logi: 'log'
+ };
+
+ var step3list = {
+ icate: 'ic',
+ ative: '',
+ alize: 'al',
+ iciti: 'ic',
+ ical: 'ic',
+ ful: '',
+ ness: ''
+ };
+
+ var c = "[^aeiou]"; // consonant
+ var v = "[aeiouy]"; // vowel
+ var C = c + "[^aeiouy]*"; // consonant sequence
+ var V = v + "[aeiou]*"; // vowel sequence
+
+ var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0
+ var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1
+ var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1
+ var s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ this.stemWord = function (w) {
+ var stem;
+ var suffix;
+ var firstch;
+ var origword = w;
+
+ if (w.length < 3)
+ return w;
+
+ var re;
+ var re2;
+ var re3;
+ var re4;
+
+ firstch = w.substr(0,1);
+ if (firstch == "y")
+ w = firstch.toUpperCase() + w.substr(1);
+
+ // Step 1a
+ re = /^(.+?)(ss|i)es$/;
+ re2 = /^(.+?)([^s])s$/;
+
+ if (re.test(w))
+ w = w.replace(re,"$1$2");
+ else if (re2.test(w))
+ w = w.replace(re2,"$1$2");
+
+ // Step 1b
+ re = /^(.+?)eed$/;
+ re2 = /^(.+?)(ed|ing)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = new RegExp(mgr0);
+ if (re.test(fp[1])) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = new RegExp(s_v);
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = /(at|bl|iz)$/;
+ re3 = new RegExp("([^aeiouylsz])\\1$");
+ re4 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re2.test(w))
+ w = w + "e";
+ else if (re3.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+ else if (re4.test(w))
+ w = w + "e";
+ }
+ }
+
+ // Step 1c
+ re = /^(.+?)y$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(s_v);
+ if (re.test(stem))
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step2list[suffix];
+ }
+
+ // Step 3
+ re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = new RegExp(mgr0);
+ if (re.test(stem))
+ w = stem + step3list[suffix];
+ }
+
+ // Step 4
+ re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ re2 = /^(.+?)(s|t)(ion)$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ if (re.test(stem))
+ w = stem;
+ }
+ else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = new RegExp(mgr1);
+ if (re2.test(stem))
+ w = stem;
+ }
+
+ // Step 5
+ re = /^(.+?)e$/;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = new RegExp(mgr1);
+ re2 = new RegExp(meq1);
+ re3 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem))))
+ w = stem;
+ }
+ re = /ll$/;
+ re2 = new RegExp(mgr1);
+ if (re.test(w) && re2.test(w)) {
+ re = /.$/;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+ if (firstch == "y")
+ w = firstch.toLowerCase() + w.substr(1);
+ return w;
+ }
+}
+
+
+/**
+ * Search Module
+ */
+var Search = {
+
+ _index : null,
+ _queued_query : null,
+ _pulse_status : -1,
+
+ init : function() {
+ var params = $.getQueryParameters();
+ if (params.q) {
+ var query = params.q[0];
+ $('input[name="q"]')[0].value = query;
+ this.performSearch(query);
+ }
+ },
+
+ loadIndex : function(url) {
+ $.ajax({type: "GET", url: url, data: null, success: null,
+ dataType: "script", cache: true});
+ },
+
+ setIndex : function(index) {
+ var q;
+ this._index = index;
+ if ((q = this._queued_query) !== null) {
+ this._queued_query = null;
+ Search.query(q);
+ }
+ },
+
+ hasIndex : function() {
+ return this._index !== null;
+ },
+
+ deferQuery : function(query) {
+ this._queued_query = query;
+ },
+
+ stopPulse : function() {
+ this._pulse_status = 0;
+ },
+
+ startPulse : function() {
+ if (this._pulse_status >= 0)
+ return;
+ function pulse() {
+ Search._pulse_status = (Search._pulse_status + 1) % 4;
+ var dotString = '';
+ for (var i = 0; i < Search._pulse_status; i++)
+ dotString += '.';
+ Search.dots.text(dotString);
+ if (Search._pulse_status > -1)
+ window.setTimeout(pulse, 500);
+ };
+ pulse();
+ },
+
+ /**
+ * perform a search for something
+ */
+ performSearch : function(query) {
+ // create the required interface elements
+ this.out = $('#search-results');
+ this.title = $('<h2>' + _('Searching') + '</h2>').appendTo(this.out);
+ this.dots = $('<span></span>').appendTo(this.title);
+ this.status = $('<p style="display: none"></p>').appendTo(this.out);
+ this.output = $('<ul class="search"/>').appendTo(this.out);
+
+ $('#search-progress').text(_('Preparing search...'));
+ this.startPulse();
+
+ // index already loaded, the browser was quick!
+ if (this.hasIndex())
+ this.query(query);
+ else
+ this.deferQuery(query);
+ },
+
+ query : function(query) {
+ var stopwords = ["and","then","into","it","as","are","in","if","for","no","there","their","was","is","be","to","that","but","they","not","such","with","by","a","on","these","of","will","this","near","the","or","at"];
+
+ // Stem the searchterms and add them to the correct list
+ var stemmer = new Stemmer();
+ var searchterms = [];
+ var excluded = [];
+ var hlterms = [];
+ var tmp = query.split(/\s+/);
+ var objectterms = [];
+ for (var i = 0; i < tmp.length; i++) {
+ if (tmp[i] != "") {
+ objectterms.push(tmp[i].toLowerCase());
+ }
+
+ if ($u.indexOf(stopwords, tmp[i]) != -1 || tmp[i].match(/^\d+$/) ||
+ tmp[i] == "") {
+ // skip this "word"
+ continue;
+ }
+ // stem the word
+ var word = stemmer.stemWord(tmp[i]).toLowerCase();
+ // select the correct list
+ if (word[0] == '-') {
+ var toAppend = excluded;
+ word = word.substr(1);
+ }
+ else {
+ var toAppend = searchterms;
+ hlterms.push(tmp[i].toLowerCase());
+ }
+ // only add if not already in the list
+ if (!$.contains(toAppend, word))
+ toAppend.push(word);
+ };
+ var highlightstring = '?highlight=' + $.urlencode(hlterms.join(" "));
+
+ // console.debug('SEARCH: searching for:');
+ // console.info('required: ', searchterms);
+ // console.info('excluded: ', excluded);
+
+ // prepare search
+ var filenames = this._index.filenames;
+ var titles = this._index.titles;
+ var terms = this._index.terms;
+ var fileMap = {};
+ var files = null;
+ // different result priorities
+ var importantResults = [];
+ var objectResults = [];
+ var regularResults = [];
+ var unimportantResults = [];
+ $('#search-progress').empty();
+
+ // lookup as object
+ for (var i = 0; i < objectterms.length; i++) {
+ var others = [].concat(objectterms.slice(0,i),
+ objectterms.slice(i+1, objectterms.length))
+ var results = this.performObjectSearch(objectterms[i], others);
+ // Assume first word is most likely to be the object,
+ // other words more likely to be in description.
+ // Therefore put matches for earlier words first.
+ // (Results are eventually used in reverse order).
+ objectResults = results[0].concat(objectResults);
+ importantResults = results[1].concat(importantResults);
+ unimportantResults = results[2].concat(unimportantResults);
+ }
+
+ // perform the search on the required terms
+ for (var i = 0; i < searchterms.length; i++) {
+ var word = searchterms[i];
+ // no match but word was a required one
+ if ((files = terms[word]) == null)
+ break;
+ if (files.length == undefined) {
+ files = [files];
+ }
+ // create the mapping
+ for (var j = 0; j < files.length; j++) {
+ var file = files[j];
+ if (file in fileMap)
+ fileMap[file].push(word);
+ else
+ fileMap[file] = [word];
+ }
+ }
+
+ // now check if the files don't contain excluded terms
+ for (var file in fileMap) {
+ var valid = true;
+
+ // check if all requirements are matched
+ if (fileMap[file].length != searchterms.length)
+ continue;
+
+ // ensure that none of the excluded terms is in the
+ // search result.
+ for (var i = 0; i < excluded.length; i++) {
+ if (terms[excluded[i]] == file ||
+ $.contains(terms[excluded[i]] || [], file)) {
+ valid = false;
+ break;
+ }
+ }
+
+ // if we have still a valid result we can add it
+ // to the result list
+ if (valid)
+ regularResults.push([filenames[file], titles[file], '', null]);
+ }
+
+ // delete unused variables in order to not waste
+ // memory until list is retrieved completely
+ delete filenames, titles, terms;
+
+ // now sort the regular results descending by title
+ regularResults.sort(function(a, b) {
+ var left = a[1].toLowerCase();
+ var right = b[1].toLowerCase();
+ return (left > right) ? -1 : ((left < right) ? 1 : 0);
+ });
+
+ // combine all results
+ var results = unimportantResults.concat(regularResults)
+ .concat(objectResults).concat(importantResults);
+
+ // print the results
+ var resultCount = results.length;
+ function displayNextItem() {
+ // results left, load the summary and display it
+ if (results.length) {
+ var item = results.pop();
+ var listItem = $('<li style="display:none"></li>');
+ if (DOCUMENTATION_OPTIONS.FILE_SUFFIX == '') {
+ // dirhtml builder
+ var dirname = item[0] + '/';
+ if (dirname.match(/\/index\/$/)) {
+ dirname = dirname.substring(0, dirname.length-6);
+ } else if (dirname == 'index/') {
+ dirname = '';
+ }
+ listItem.append($('<a/>').attr('href',
+ DOCUMENTATION_OPTIONS.URL_ROOT + dirname +
+ highlightstring + item[2]).html(item[1]));
+ } else {
+ // normal html builders
+ listItem.append($('<a/>').attr('href',
+ item[0] + DOCUMENTATION_OPTIONS.FILE_SUFFIX +
+ highlightstring + item[2]).html(item[1]));
+ }
+ if (item[3]) {
+ listItem.append($('<span> (' + item[3] + ')</span>'));
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ } else if (DOCUMENTATION_OPTIONS.HAS_SOURCE) {
+ $.get(DOCUMENTATION_OPTIONS.URL_ROOT + '_sources/' +
+ item[0] + '.txt', function(data) {
+ if (data != '') {
+ listItem.append($.makeSearchSummary(data, searchterms, hlterms));
+ Search.output.append(listItem);
+ }
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }, "text");
+ } else {
+ // no source available, just display title
+ Search.output.append(listItem);
+ listItem.slideDown(5, function() {
+ displayNextItem();
+ });
+ }
+ }
+ // search finished, update title and status message
+ else {
+ Search.stopPulse();
+ Search.title.text(_('Search Results'));
+ if (!resultCount)
+ Search.status.text(_('Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.'));
+ else
+ Search.status.text(_('Search finished, found %s page(s) matching the search query.').replace('%s', resultCount));
+ Search.status.fadeIn(500);
+ }
+ }
+ displayNextItem();
+ },
+
+ performObjectSearch : function(object, otherterms) {
+ var filenames = this._index.filenames;
+ var objects = this._index.objects;
+ var objnames = this._index.objnames;
+ var titles = this._index.titles;
+
+ var importantResults = [];
+ var objectResults = [];
+ var unimportantResults = [];
+
+ for (var prefix in objects) {
+ for (var name in objects[prefix]) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
+ var match = objects[prefix][name];
+ var objname = objnames[match[1]][2];
+ var title = titles[match[0]];
+ // If more than one term searched for, we require other words to be
+ // found in the name/title/description
+ if (otherterms.length > 0) {
+ var haystack = (prefix + ' ' + name + ' ' +
+ objname + ' ' + title).toLowerCase();
+ var allfound = true;
+ for (var i = 0; i < otherterms.length; i++) {
+ if (haystack.indexOf(otherterms[i]) == -1) {
+ allfound = false;
+ break;
+ }
+ }
+ if (!allfound) {
+ continue;
+ }
+ }
+ var descr = objname + _(', in ') + title;
+ anchor = match[3];
+ if (anchor == '')
+ anchor = fullname;
+ else if (anchor == '-')
+ anchor = objnames[match[1]][1] + '-' + fullname;
+ result = [filenames[match[0]], fullname, '#'+anchor, descr];
+ switch (match[2]) {
+ case 1: objectResults.push(result); break;
+ case 0: importantResults.push(result); break;
+ case 2: unimportantResults.push(result); break;
+ }
+ }
+ }
+ }
+
+ // sort results descending
+ objectResults.sort(function(a, b) {
+ return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+ });
+
+ importantResults.sort(function(a, b) {
+ return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+ });
+
+ unimportantResults.sort(function(a, b) {
+ return (a[1] > b[1]) ? -1 : ((a[1] < b[1]) ? 1 : 0);
+ });
+
+ return [importantResults, objectResults, unimportantResults]
+ }
+}
+
+$(document).ready(function() {
+ Search.init();
+});
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/underscore.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/underscore.js?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/underscore.js (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/underscore.js Thu May 10 06:54:16 2018
@@ -0,0 +1,23 @@
+// Underscore.js 0.5.5
+// (c) 2009 Jeremy Ashkenas, DocumentCloud Inc.
+// Underscore is freely distributable under the terms of the MIT license.
+// Portions of Underscore are inspired by or borrowed from Prototype.js,
+// Oliver Steele's Functional, and John Resig's Micro-Templating.
+// For all details and documentation:
+// http://documentcloud.github.com/underscore/
+(function(){var j=this,n=j._,i=function(a){this._wrapped=a},m=typeof StopIteration!=="undefined"?StopIteration:"__break__",b=j._=function(a){return new i(a)};if(typeof exports!=="undefined")exports._=b;var k=Array.prototype.slice,o=Array.prototype.unshift,p=Object.prototype.toString,q=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;b.VERSION="0.5.5";b.each=function(a,c,d){try{if(a.forEach)a.forEach(c,d);else if(b.isArray(a)||b.isArguments(a))for(var e=0,f=a.length;e<f;e++)c.call(d,
+a[e],e,a);else{var g=b.keys(a);f=g.length;for(e=0;e<f;e++)c.call(d,a[g[e]],g[e],a)}}catch(h){if(h!=m)throw h;}return a};b.map=function(a,c,d){if(a&&b.isFunction(a.map))return a.map(c,d);var e=[];b.each(a,function(f,g,h){e.push(c.call(d,f,g,h))});return e};b.reduce=function(a,c,d,e){if(a&&b.isFunction(a.reduce))return a.reduce(b.bind(d,e),c);b.each(a,function(f,g,h){c=d.call(e,c,f,g,h)});return c};b.reduceRight=function(a,c,d,e){if(a&&b.isFunction(a.reduceRight))return a.reduceRight(b.bind(d,e),c);
+var f=b.clone(b.toArray(a)).reverse();b.each(f,function(g,h){c=d.call(e,c,g,h,a)});return c};b.detect=function(a,c,d){var e;b.each(a,function(f,g,h){if(c.call(d,f,g,h)){e=f;b.breakLoop()}});return e};b.select=function(a,c,d){if(a&&b.isFunction(a.filter))return a.filter(c,d);var e=[];b.each(a,function(f,g,h){c.call(d,f,g,h)&&e.push(f)});return e};b.reject=function(a,c,d){var e=[];b.each(a,function(f,g,h){!c.call(d,f,g,h)&&e.push(f)});return e};b.all=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.every))return a.every(c,
+d);var e=true;b.each(a,function(f,g,h){(e=e&&c.call(d,f,g,h))||b.breakLoop()});return e};b.any=function(a,c,d){c=c||b.identity;if(a&&b.isFunction(a.some))return a.some(c,d);var e=false;b.each(a,function(f,g,h){if(e=c.call(d,f,g,h))b.breakLoop()});return e};b.include=function(a,c){if(b.isArray(a))return b.indexOf(a,c)!=-1;var d=false;b.each(a,function(e){if(d=e===c)b.breakLoop()});return d};b.invoke=function(a,c){var d=b.rest(arguments,2);return b.map(a,function(e){return(c?e[c]:e).apply(e,d)})};b.pluck=
+function(a,c){return b.map(a,function(d){return d[c]})};b.max=function(a,c,d){if(!c&&b.isArray(a))return Math.max.apply(Math,a);var e={computed:-Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g>=e.computed&&(e={value:f,computed:g})});return e.value};b.min=function(a,c,d){if(!c&&b.isArray(a))return Math.min.apply(Math,a);var e={computed:Infinity};b.each(a,function(f,g,h){g=c?c.call(d,f,g,h):f;g<e.computed&&(e={value:f,computed:g})});return e.value};b.sortBy=function(a,c,d){return b.pluck(b.map(a,
+function(e,f,g){return{value:e,criteria:c.call(d,e,f,g)}}).sort(function(e,f){e=e.criteria;f=f.criteria;return e<f?-1:e>f?1:0}),"value")};b.sortedIndex=function(a,c,d){d=d||b.identity;for(var e=0,f=a.length;e<f;){var g=e+f>>1;d(a[g])<d(c)?(e=g+1):(f=g)}return e};b.toArray=function(a){if(!a)return[];if(a.toArray)return a.toArray();if(b.isArray(a))return a;if(b.isArguments(a))return k.call(a);return b.values(a)};b.size=function(a){return b.toArray(a).length};b.first=function(a,c,d){return c&&!d?k.call(a,
+0,c):a[0]};b.rest=function(a,c,d){return k.call(a,b.isUndefined(c)||d?1:c)};b.last=function(a){return a[a.length-1]};b.compact=function(a){return b.select(a,function(c){return!!c})};b.flatten=function(a){return b.reduce(a,[],function(c,d){if(b.isArray(d))return c.concat(b.flatten(d));c.push(d);return c})};b.without=function(a){var c=b.rest(arguments);return b.select(a,function(d){return!b.include(c,d)})};b.uniq=function(a,c){return b.reduce(a,[],function(d,e,f){if(0==f||(c===true?b.last(d)!=e:!b.include(d,
+e)))d.push(e);return d})};b.intersect=function(a){var c=b.rest(arguments);return b.select(b.uniq(a),function(d){return b.all(c,function(e){return b.indexOf(e,d)>=0})})};b.zip=function(){for(var a=b.toArray(arguments),c=b.max(b.pluck(a,"length")),d=new Array(c),e=0;e<c;e++)d[e]=b.pluck(a,String(e));return d};b.indexOf=function(a,c){if(a.indexOf)return a.indexOf(c);for(var d=0,e=a.length;d<e;d++)if(a[d]===c)return d;return-1};b.lastIndexOf=function(a,c){if(a.lastIndexOf)return a.lastIndexOf(c);for(var d=
+a.length;d--;)if(a[d]===c)return d;return-1};b.range=function(a,c,d){var e=b.toArray(arguments),f=e.length<=1;a=f?0:e[0];c=f?e[0]:e[1];d=e[2]||1;e=Math.ceil((c-a)/d);if(e<=0)return[];e=new Array(e);f=a;for(var g=0;1;f+=d){if((d>0?f-c:c-f)>=0)return e;e[g++]=f}};b.bind=function(a,c){var d=b.rest(arguments,2);return function(){return a.apply(c||j,d.concat(b.toArray(arguments)))}};b.bindAll=function(a){var c=b.rest(arguments);if(c.length==0)c=b.functions(a);b.each(c,function(d){a[d]=b.bind(a[d],a)});
+return a};b.delay=function(a,c){var d=b.rest(arguments,2);return setTimeout(function(){return a.apply(a,d)},c)};b.defer=function(a){return b.delay.apply(b,[a,1].concat(b.rest(arguments)))};b.wrap=function(a,c){return function(){var d=[a].concat(b.toArray(arguments));return c.apply(c,d)}};b.compose=function(){var a=b.toArray(arguments);return function(){for(var c=b.toArray(arguments),d=a.length-1;d>=0;d--)c=[a[d].apply(this,c)];return c[0]}};b.keys=function(a){if(b.isArray(a))return b.range(0,a.length);
+var c=[];for(var d in a)q.call(a,d)&&c.push(d);return c};b.values=function(a){return b.map(a,b.identity)};b.functions=function(a){return b.select(b.keys(a),function(c){return b.isFunction(a[c])}).sort()};b.extend=function(a,c){for(var d in c)a[d]=c[d];return a};b.clone=function(a){if(b.isArray(a))return a.slice(0);return b.extend({},a)};b.tap=function(a,c){c(a);return a};b.isEqual=function(a,c){if(a===c)return true;var d=typeof a;if(d!=typeof c)return false;if(a==c)return true;if(!a&&c||a&&!c)return false;
+if(a.isEqual)return a.isEqual(c);if(b.isDate(a)&&b.isDate(c))return a.getTime()===c.getTime();if(b.isNaN(a)&&b.isNaN(c))return true;if(b.isRegExp(a)&&b.isRegExp(c))return a.source===c.source&&a.global===c.global&&a.ignoreCase===c.ignoreCase&&a.multiline===c.multiline;if(d!=="object")return false;if(a.length&&a.length!==c.length)return false;d=b.keys(a);var e=b.keys(c);if(d.length!=e.length)return false;for(var f in a)if(!b.isEqual(a[f],c[f]))return false;return true};b.isEmpty=function(a){return b.keys(a).length==
+0};b.isElement=function(a){return!!(a&&a.nodeType==1)};b.isArray=function(a){return!!(a&&a.concat&&a.unshift)};b.isArguments=function(a){return a&&b.isNumber(a.length)&&!b.isArray(a)&&!r.call(a,"length")};b.isFunction=function(a){return!!(a&&a.constructor&&a.call&&a.apply)};b.isString=function(a){return!!(a===""||a&&a.charCodeAt&&a.substr)};b.isNumber=function(a){return p.call(a)==="[object Number]"};b.isDate=function(a){return!!(a&&a.getTimezoneOffset&&a.setUTCFullYear)};b.isRegExp=function(a){return!!(a&&
+a.test&&a.exec&&(a.ignoreCase||a.ignoreCase===false))};b.isNaN=function(a){return b.isNumber(a)&&isNaN(a)};b.isNull=function(a){return a===null};b.isUndefined=function(a){return typeof a=="undefined"};b.noConflict=function(){j._=n;return this};b.identity=function(a){return a};b.breakLoop=function(){throw m;};var s=0;b.uniqueId=function(a){var c=s++;return a?a+c:c};b.template=function(a,c){a=new Function("obj","var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('"+a.replace(/[\r\t\n]/g,
+" ").replace(/'(?=[^%]*%>)/g,"\t").split("'").join("\\'").split("\t").join("'").replace(/<%=(.+?)%>/g,"',$1,'").split("<%").join("');").split("%>").join("p.push('")+"');}return p.join('');");return c?a(c):a};b.forEach=b.each;b.foldl=b.inject=b.reduce;b.foldr=b.reduceRight;b.filter=b.select;b.every=b.all;b.some=b.any;b.head=b.first;b.tail=b.rest;b.methods=b.functions;var l=function(a,c){return c?b(a).chain():a};b.each(b.functions(b),function(a){var c=b[a];i.prototype[a]=function(){var d=b.toArray(arguments);
+o.call(d,this._wrapped);return l(c.apply(b,d),this._chain)}});b.each(["pop","push","reverse","shift","sort","splice","unshift"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){c.apply(this._wrapped,arguments);return l(this._wrapped,this._chain)}});b.each(["concat","join","slice"],function(a){var c=Array.prototype[a];i.prototype[a]=function(){return l(c.apply(this._wrapped,arguments),this._chain)}});i.prototype.chain=function(){this._chain=true;return this};i.prototype.value=function(){return this._wrapped}})();
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/up-pressed.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/up-pressed.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/up-pressed.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/up.png
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/up.png?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/_static/up.png
------------------------------------------------------------------------------
svn:mime-type = image/png
Added: www-releases/trunk/5.0.2/tools/lld/docs/_static/websupport.js
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/_static/websupport.js?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/_static/websupport.js (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/_static/websupport.js Thu May 10 06:54:16 2018
@@ -0,0 +1,808 @@
+/*
+ * websupport.js
+ * ~~~~~~~~~~~~~
+ *
+ * sphinx.websupport utilties for all documentation.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+
+(function($) {
+ $.fn.autogrow = function() {
+ return this.each(function() {
+ var textarea = this;
+
+ $.fn.autogrow.resize(textarea);
+
+ $(textarea)
+ .focus(function() {
+ textarea.interval = setInterval(function() {
+ $.fn.autogrow.resize(textarea);
+ }, 500);
+ })
+ .blur(function() {
+ clearInterval(textarea.interval);
+ });
+ });
+ };
+
+ $.fn.autogrow.resize = function(textarea) {
+ var lineHeight = parseInt($(textarea).css('line-height'), 10);
+ var lines = textarea.value.split('\n');
+ var columns = textarea.cols;
+ var lineCount = 0;
+ $.each(lines, function() {
+ lineCount += Math.ceil(this.length / columns) || 1;
+ });
+ var height = lineHeight * (lineCount + 1);
+ $(textarea).css('height', height);
+ };
+})(jQuery);
+
+(function($) {
+ var comp, by;
+
+ function init() {
+ initEvents();
+ initComparator();
+ }
+
+ function initEvents() {
+ $('a.comment-close').live("click", function(event) {
+ event.preventDefault();
+ hide($(this).attr('id').substring(2));
+ });
+ $('a.vote').live("click", function(event) {
+ event.preventDefault();
+ handleVote($(this));
+ });
+ $('a.reply').live("click", function(event) {
+ event.preventDefault();
+ openReply($(this).attr('id').substring(2));
+ });
+ $('a.close-reply').live("click", function(event) {
+ event.preventDefault();
+ closeReply($(this).attr('id').substring(2));
+ });
+ $('a.sort-option').live("click", function(event) {
+ event.preventDefault();
+ handleReSort($(this));
+ });
+ $('a.show-proposal').live("click", function(event) {
+ event.preventDefault();
+ showProposal($(this).attr('id').substring(2));
+ });
+ $('a.hide-proposal').live("click", function(event) {
+ event.preventDefault();
+ hideProposal($(this).attr('id').substring(2));
+ });
+ $('a.show-propose-change').live("click", function(event) {
+ event.preventDefault();
+ showProposeChange($(this).attr('id').substring(2));
+ });
+ $('a.hide-propose-change').live("click", function(event) {
+ event.preventDefault();
+ hideProposeChange($(this).attr('id').substring(2));
+ });
+ $('a.accept-comment').live("click", function(event) {
+ event.preventDefault();
+ acceptComment($(this).attr('id').substring(2));
+ });
+ $('a.delete-comment').live("click", function(event) {
+ event.preventDefault();
+ deleteComment($(this).attr('id').substring(2));
+ });
+ $('a.comment-markup').live("click", function(event) {
+ event.preventDefault();
+ toggleCommentMarkupBox($(this).attr('id').substring(2));
+ });
+ }
+
+ /**
+ * Set comp, which is a comparator function used for sorting and
+ * inserting comments into the list.
+ */
+ function setComparator() {
+ // If the first three letters are "asc", sort in ascending order
+ // and remove the prefix.
+ if (by.substring(0,3) == 'asc') {
+ var i = by.substring(3);
+ comp = function(a, b) { return a[i] - b[i]; };
+ } else {
+ // Otherwise sort in descending order.
+ comp = function(a, b) { return b[by] - a[by]; };
+ }
+
+ // Reset link styles and format the selected sort option.
+ $('a.sel').attr('href', '#').removeClass('sel');
+ $('a.by' + by).removeAttr('href').addClass('sel');
+ }
+
+ /**
+ * Create a comp function. If the user has preferences stored in
+ * the sortBy cookie, use those, otherwise use the default.
+ */
+ function initComparator() {
+ by = 'rating'; // Default to sort by rating.
+ // If the sortBy cookie is set, use that instead.
+ if (document.cookie.length > 0) {
+ var start = document.cookie.indexOf('sortBy=');
+ if (start != -1) {
+ start = start + 7;
+ var end = document.cookie.indexOf(";", start);
+ if (end == -1) {
+ end = document.cookie.length;
+ by = unescape(document.cookie.substring(start, end));
+ }
+ }
+ }
+ setComparator();
+ }
+
+ /**
+ * Show a comment div.
+ */
+ function show(id) {
+ $('#ao' + id).hide();
+ $('#ah' + id).show();
+ var context = $.extend({id: id}, opts);
+ var popup = $(renderTemplate(popupTemplate, context)).hide();
+ popup.find('textarea[name="proposal"]').hide();
+ popup.find('a.by' + by).addClass('sel');
+ var form = popup.find('#cf' + id);
+ form.submit(function(event) {
+ event.preventDefault();
+ addComment(form);
+ });
+ $('#s' + id).after(popup);
+ popup.slideDown('fast', function() {
+ getComments(id);
+ });
+ }
+
+ /**
+ * Hide a comment div.
+ */
+ function hide(id) {
+ $('#ah' + id).hide();
+ $('#ao' + id).show();
+ var div = $('#sc' + id);
+ div.slideUp('fast', function() {
+ div.remove();
+ });
+ }
+
+ /**
+ * Perform an ajax request to get comments for a node
+ * and insert the comments into the comments tree.
+ */
+ function getComments(id) {
+ $.ajax({
+ type: 'GET',
+ url: opts.getCommentsURL,
+ data: {node: id},
+ success: function(data, textStatus, request) {
+ var ul = $('#cl' + id);
+ var speed = 100;
+ $('#cf' + id)
+ .find('textarea[name="proposal"]')
+ .data('source', data.source);
+
+ if (data.comments.length === 0) {
+ ul.html('<li>No comments yet.</li>');
+ ul.data('empty', true);
+ } else {
+ // If there are comments, sort them and put them in the list.
+ var comments = sortComments(data.comments);
+ speed = data.comments.length * 100;
+ appendComments(comments, ul);
+ ul.data('empty', false);
+ }
+ $('#cn' + id).slideUp(speed + 200);
+ ul.slideDown(speed);
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem retrieving the comments.');
+ },
+ dataType: 'json'
+ });
+ }
+
+ /**
+ * Add a comment via ajax and insert the comment into the comment tree.
+ */
+ function addComment(form) {
+ var node_id = form.find('input[name="node"]').val();
+ var parent_id = form.find('input[name="parent"]').val();
+ var text = form.find('textarea[name="comment"]').val();
+ var proposal = form.find('textarea[name="proposal"]').val();
+
+ if (text == '') {
+ showError('Please enter a comment.');
+ return;
+ }
+
+ // Disable the form that is being submitted.
+ form.find('textarea,input').attr('disabled', 'disabled');
+
+ // Send the comment to the server.
+ $.ajax({
+ type: "POST",
+ url: opts.addCommentURL,
+ dataType: 'json',
+ data: {
+ node: node_id,
+ parent: parent_id,
+ text: text,
+ proposal: proposal
+ },
+ success: function(data, textStatus, error) {
+ // Reset the form.
+ if (node_id) {
+ hideProposeChange(node_id);
+ }
+ form.find('textarea')
+ .val('')
+ .add(form.find('input'))
+ .removeAttr('disabled');
+ var ul = $('#cl' + (node_id || parent_id));
+ if (ul.data('empty')) {
+ $(ul).empty();
+ ul.data('empty', false);
+ }
+ insertComment(data.comment);
+ var ao = $('#ao' + node_id);
+ ao.find('img').attr({'src': opts.commentBrightImage});
+ if (node_id) {
+ // if this was a "root" comment, remove the commenting box
+ // (the user can get it back by reopening the comment popup)
+ $('#ca' + node_id).slideUp();
+ }
+ },
+ error: function(request, textStatus, error) {
+ form.find('textarea,input').removeAttr('disabled');
+ showError('Oops, there was a problem adding the comment.');
+ }
+ });
+ }
+
+ /**
+ * Recursively append comments to the main comment list and children
+ * lists, creating the comment tree.
+ */
+ function appendComments(comments, ul) {
+ $.each(comments, function() {
+ var div = createCommentDiv(this);
+ ul.append($(document.createElement('li')).html(div));
+ appendComments(this.children, div.find('ul.comment-children'));
+ // To avoid stagnating data, don't store the comments children in data.
+ this.children = null;
+ div.data('comment', this);
+ });
+ }
+
+ /**
+ * After adding a new comment, it must be inserted in the correct
+ * location in the comment tree.
+ */
+ function insertComment(comment) {
+ var div = createCommentDiv(comment);
+
+ // To avoid stagnating data, don't store the comments children in data.
+ comment.children = null;
+ div.data('comment', comment);
+
+ var ul = $('#cl' + (comment.node || comment.parent));
+ var siblings = getChildren(ul);
+
+ var li = $(document.createElement('li'));
+ li.hide();
+
+ // Determine where in the parents children list to insert this comment.
+ for(i=0; i < siblings.length; i++) {
+ if (comp(comment, siblings[i]) <= 0) {
+ $('#cd' + siblings[i].id)
+ .parent()
+ .before(li.html(div));
+ li.slideDown('fast');
+ return;
+ }
+ }
+
+ // If we get here, this comment rates lower than all the others,
+ // or it is the only comment in the list.
+ ul.append(li.html(div));
+ li.slideDown('fast');
+ }
+
+ function acceptComment(id) {
+ $.ajax({
+ type: 'POST',
+ url: opts.acceptCommentURL,
+ data: {id: id},
+ success: function(data, textStatus, request) {
+ $('#cm' + id).fadeOut('fast');
+ $('#cd' + id).removeClass('moderate');
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem accepting the comment.');
+ }
+ });
+ }
+
+ function deleteComment(id) {
+ $.ajax({
+ type: 'POST',
+ url: opts.deleteCommentURL,
+ data: {id: id},
+ success: function(data, textStatus, request) {
+ var div = $('#cd' + id);
+ if (data == 'delete') {
+ // Moderator mode: remove the comment and all children immediately
+ div.slideUp('fast', function() {
+ div.remove();
+ });
+ return;
+ }
+ // User mode: only mark the comment as deleted
+ div
+ .find('span.user-id:first')
+ .text('[deleted]').end()
+ .find('div.comment-text:first')
+ .text('[deleted]').end()
+ .find('#cm' + id + ', #dc' + id + ', #ac' + id + ', #rc' + id +
+ ', #sp' + id + ', #hp' + id + ', #cr' + id + ', #rl' + id)
+ .remove();
+ var comment = div.data('comment');
+ comment.username = '[deleted]';
+ comment.text = '[deleted]';
+ div.data('comment', comment);
+ },
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem deleting the comment.');
+ }
+ });
+ }
+
+ function showProposal(id) {
+ $('#sp' + id).hide();
+ $('#hp' + id).show();
+ $('#pr' + id).slideDown('fast');
+ }
+
+ function hideProposal(id) {
+ $('#hp' + id).hide();
+ $('#sp' + id).show();
+ $('#pr' + id).slideUp('fast');
+ }
+
+ function showProposeChange(id) {
+ $('#pc' + id).hide();
+ $('#hc' + id).show();
+ var textarea = $('#pt' + id);
+ textarea.val(textarea.data('source'));
+ $.fn.autogrow.resize(textarea[0]);
+ textarea.slideDown('fast');
+ }
+
+ function hideProposeChange(id) {
+ $('#hc' + id).hide();
+ $('#pc' + id).show();
+ var textarea = $('#pt' + id);
+ textarea.val('').removeAttr('disabled');
+ textarea.slideUp('fast');
+ }
+
+ function toggleCommentMarkupBox(id) {
+ $('#mb' + id).toggle();
+ }
+
+ /** Handle when the user clicks on a sort by link. */
+ function handleReSort(link) {
+ var classes = link.attr('class').split(/\s+/);
+ for (var i=0; i<classes.length; i++) {
+ if (classes[i] != 'sort-option') {
+ by = classes[i].substring(2);
+ }
+ }
+ setComparator();
+ // Save/update the sortBy cookie.
+ var expiration = new Date();
+ expiration.setDate(expiration.getDate() + 365);
+ document.cookie= 'sortBy=' + escape(by) +
+ ';expires=' + expiration.toUTCString();
+ $('ul.comment-ul').each(function(index, ul) {
+ var comments = getChildren($(ul), true);
+ comments = sortComments(comments);
+ appendComments(comments, $(ul).empty());
+ });
+ }
+
+ /**
+ * Function to process a vote when a user clicks an arrow.
+ */
+ function handleVote(link) {
+ if (!opts.voting) {
+ showError("You'll need to login to vote.");
+ return;
+ }
+
+ var id = link.attr('id');
+ if (!id) {
+ // Didn't click on one of the voting arrows.
+ return;
+ }
+ // If it is an unvote, the new vote value is 0,
+ // Otherwise it's 1 for an upvote, or -1 for a downvote.
+ var value = 0;
+ if (id.charAt(1) != 'u') {
+ value = id.charAt(0) == 'u' ? 1 : -1;
+ }
+ // The data to be sent to the server.
+ var d = {
+ comment_id: id.substring(2),
+ value: value
+ };
+
+ // Swap the vote and unvote links.
+ link.hide();
+ $('#' + id.charAt(0) + (id.charAt(1) == 'u' ? 'v' : 'u') + d.comment_id)
+ .show();
+
+ // The div the comment is displayed in.
+ var div = $('div#cd' + d.comment_id);
+ var data = div.data('comment');
+
+ // If this is not an unvote, and the other vote arrow has
+ // already been pressed, unpress it.
+ if ((d.value !== 0) && (data.vote === d.value * -1)) {
+ $('#' + (d.value == 1 ? 'd' : 'u') + 'u' + d.comment_id).hide();
+ $('#' + (d.value == 1 ? 'd' : 'u') + 'v' + d.comment_id).show();
+ }
+
+ // Update the comments rating in the local data.
+ data.rating += (data.vote === 0) ? d.value : (d.value - data.vote);
+ data.vote = d.value;
+ div.data('comment', data);
+
+ // Change the rating text.
+ div.find('.rating:first')
+ .text(data.rating + ' point' + (data.rating == 1 ? '' : 's'));
+
+ // Send the vote information to the server.
+ $.ajax({
+ type: "POST",
+ url: opts.processVoteURL,
+ data: d,
+ error: function(request, textStatus, error) {
+ showError('Oops, there was a problem casting that vote.');
+ }
+ });
+ }
+
+ /**
+ * Open a reply form used to reply to an existing comment.
+ */
+ function openReply(id) {
+ // Swap out the reply link for the hide link
+ $('#rl' + id).hide();
+ $('#cr' + id).show();
+
+ // Add the reply li to the children ul.
+ var div = $(renderTemplate(replyTemplate, {id: id})).hide();
+ $('#cl' + id)
+ .prepend(div)
+ // Setup the submit handler for the reply form.
+ .find('#rf' + id)
+ .submit(function(event) {
+ event.preventDefault();
+ addComment($('#rf' + id));
+ closeReply(id);
+ })
+ .find('input[type=button]')
+ .click(function() {
+ closeReply(id);
+ });
+ div.slideDown('fast', function() {
+ $('#rf' + id).find('textarea').focus();
+ });
+ }
+
+ /**
+ * Close the reply form opened with openReply.
+ */
+ function closeReply(id) {
+ // Remove the reply div from the DOM.
+ $('#rd' + id).slideUp('fast', function() {
+ $(this).remove();
+ });
+
+ // Swap out the hide link for the reply link
+ $('#cr' + id).hide();
+ $('#rl' + id).show();
+ }
+
+ /**
+ * Recursively sort a tree of comments using the comp comparator.
+ */
+ function sortComments(comments) {
+ comments.sort(comp);
+ $.each(comments, function() {
+ this.children = sortComments(this.children);
+ });
+ return comments;
+ }
+
+ /**
+ * Get the children comments from a ul. If recursive is true,
+ * recursively include childrens' children.
+ */
+ function getChildren(ul, recursive) {
+ var children = [];
+ ul.children().children("[id^='cd']")
+ .each(function() {
+ var comment = $(this).data('comment');
+ if (recursive)
+ comment.children = getChildren($(this).find('#cl' + comment.id), true);
+ children.push(comment);
+ });
+ return children;
+ }
+
+ /** Create a div to display a comment in. */
+ function createCommentDiv(comment) {
+ if (!comment.displayed && !opts.moderator) {
+ return $('<div class="moderate">Thank you! Your comment will show up '
+ + 'once it is has been approved by a moderator.</div>');
+ }
+ // Prettify the comment rating.
+ comment.pretty_rating = comment.rating + ' point' +
+ (comment.rating == 1 ? '' : 's');
+ // Make a class (for displaying not yet moderated comments differently)
+ comment.css_class = comment.displayed ? '' : ' moderate';
+ // Create a div for this comment.
+ var context = $.extend({}, opts, comment);
+ var div = $(renderTemplate(commentTemplate, context));
+
+ // If the user has voted on this comment, highlight the correct arrow.
+ if (comment.vote) {
+ var direction = (comment.vote == 1) ? 'u' : 'd';
+ div.find('#' + direction + 'v' + comment.id).hide();
+ div.find('#' + direction + 'u' + comment.id).show();
+ }
+
+ if (opts.moderator || comment.text != '[deleted]') {
+ div.find('a.reply').show();
+ if (comment.proposal_diff)
+ div.find('#sp' + comment.id).show();
+ if (opts.moderator && !comment.displayed)
+ div.find('#cm' + comment.id).show();
+ if (opts.moderator || (opts.username == comment.username))
+ div.find('#dc' + comment.id).show();
+ }
+ return div;
+ }
+
+ /**
+ * A simple template renderer. Placeholders such as <%id%> are replaced
+ * by context['id'] with items being escaped. Placeholders such as <#id#>
+ * are not escaped.
+ */
+ function renderTemplate(template, context) {
+ var esc = $(document.createElement('div'));
+
+ function handle(ph, escape) {
+ var cur = context;
+ $.each(ph.split('.'), function() {
+ cur = cur[this];
+ });
+ return escape ? esc.text(cur || "").html() : cur;
+ }
+
+ return template.replace(/<([%#])([\w\.]*)\1>/g, function() {
+ return handle(arguments[2], arguments[1] == '%' ? true : false);
+ });
+ }
+
+ /** Flash an error message briefly. */
+ function showError(message) {
+ $(document.createElement('div')).attr({'class': 'popup-error'})
+ .append($(document.createElement('div'))
+ .attr({'class': 'error-message'}).text(message))
+ .appendTo('body')
+ .fadeIn("slow")
+ .delay(2000)
+ .fadeOut("slow");
+ }
+
+ /** Add a link the user uses to open the comments popup. */
+ $.fn.comment = function() {
+ return this.each(function() {
+ var id = $(this).attr('id').substring(1);
+ var count = COMMENT_METADATA[id];
+ var title = count + ' comment' + (count == 1 ? '' : 's');
+ var image = count > 0 ? opts.commentBrightImage : opts.commentImage;
+ var addcls = count == 0 ? ' nocomment' : '';
+ $(this)
+ .append(
+ $(document.createElement('a')).attr({
+ href: '#',
+ 'class': 'sphinx-comment-open' + addcls,
+ id: 'ao' + id
+ })
+ .append($(document.createElement('img')).attr({
+ src: image,
+ alt: 'comment',
+ title: title
+ }))
+ .click(function(event) {
+ event.preventDefault();
+ show($(this).attr('id').substring(2));
+ })
+ )
+ .append(
+ $(document.createElement('a')).attr({
+ href: '#',
+ 'class': 'sphinx-comment-close hidden',
+ id: 'ah' + id
+ })
+ .append($(document.createElement('img')).attr({
+ src: opts.closeCommentImage,
+ alt: 'close',
+ title: 'close'
+ }))
+ .click(function(event) {
+ event.preventDefault();
+ hide($(this).attr('id').substring(2));
+ })
+ );
+ });
+ };
+
+ var opts = {
+ processVoteURL: '/_process_vote',
+ addCommentURL: '/_add_comment',
+ getCommentsURL: '/_get_comments',
+ acceptCommentURL: '/_accept_comment',
+ deleteCommentURL: '/_delete_comment',
+ commentImage: '/static/_static/comment.png',
+ closeCommentImage: '/static/_static/comment-close.png',
+ loadingImage: '/static/_static/ajax-loader.gif',
+ commentBrightImage: '/static/_static/comment-bright.png',
+ upArrow: '/static/_static/up.png',
+ downArrow: '/static/_static/down.png',
+ upArrowPressed: '/static/_static/up-pressed.png',
+ downArrowPressed: '/static/_static/down-pressed.png',
+ voting: false,
+ moderator: false
+ };
+
+ if (typeof COMMENT_OPTIONS != "undefined") {
+ opts = jQuery.extend(opts, COMMENT_OPTIONS);
+ }
+
+ var popupTemplate = '\
+ <div class="sphinx-comments" id="sc<%id%>">\
+ <p class="sort-options">\
+ Sort by:\
+ <a href="#" class="sort-option byrating">best rated</a>\
+ <a href="#" class="sort-option byascage">newest</a>\
+ <a href="#" class="sort-option byage">oldest</a>\
+ </p>\
+ <div class="comment-header">Comments</div>\
+ <div class="comment-loading" id="cn<%id%>">\
+ loading comments... <img src="<%loadingImage%>" alt="" /></div>\
+ <ul id="cl<%id%>" class="comment-ul"></ul>\
+ <div id="ca<%id%>">\
+ <p class="add-a-comment">Add a comment\
+ (<a href="#" class="comment-markup" id="ab<%id%>">markup</a>):</p>\
+ <div class="comment-markup-box" id="mb<%id%>">\
+ reStructured text markup: <i>*emph*</i>, <b>**strong**</b>, \
+ <tt>``code``</tt>, \
+ code blocks: <tt>::</tt> and an indented block after blank line</div>\
+ <form method="post" id="cf<%id%>" class="comment-form" action="">\
+ <textarea name="comment" cols="80"></textarea>\
+ <p class="propose-button">\
+ <a href="#" id="pc<%id%>" class="show-propose-change">\
+ Propose a change ▹\
+ </a>\
+ <a href="#" id="hc<%id%>" class="hide-propose-change">\
+ Propose a change ▿\
+ </a>\
+ </p>\
+ <textarea name="proposal" id="pt<%id%>" cols="80"\
+ spellcheck="false"></textarea>\
+ <input type="submit" value="Add comment" />\
+ <input type="hidden" name="node" value="<%id%>" />\
+ <input type="hidden" name="parent" value="" />\
+ </form>\
+ </div>\
+ </div>';
+
+ var commentTemplate = '\
+ <div id="cd<%id%>" class="sphinx-comment<%css_class%>">\
+ <div class="vote">\
+ <div class="arrow">\
+ <a href="#" id="uv<%id%>" class="vote" title="vote up">\
+ <img src="<%upArrow%>" />\
+ </a>\
+ <a href="#" id="uu<%id%>" class="un vote" title="vote up">\
+ <img src="<%upArrowPressed%>" />\
+ </a>\
+ </div>\
+ <div class="arrow">\
+ <a href="#" id="dv<%id%>" class="vote" title="vote down">\
+ <img src="<%downArrow%>" id="da<%id%>" />\
+ </a>\
+ <a href="#" id="du<%id%>" class="un vote" title="vote down">\
+ <img src="<%downArrowPressed%>" />\
+ </a>\
+ </div>\
+ </div>\
+ <div class="comment-content">\
+ <p class="tagline comment">\
+ <span class="user-id"><%username%></span>\
+ <span class="rating"><%pretty_rating%></span>\
+ <span class="delta"><%time.delta%></span>\
+ </p>\
+ <div class="comment-text comment"><#text#></div>\
+ <p class="comment-opts comment">\
+ <a href="#" class="reply hidden" id="rl<%id%>">reply ▹</a>\
+ <a href="#" class="close-reply" id="cr<%id%>">reply ▿</a>\
+ <a href="#" id="sp<%id%>" class="show-proposal">proposal ▹</a>\
+ <a href="#" id="hp<%id%>" class="hide-proposal">proposal ▿</a>\
+ <a href="#" id="dc<%id%>" class="delete-comment hidden">delete</a>\
+ <span id="cm<%id%>" class="moderation hidden">\
+ <a href="#" id="ac<%id%>" class="accept-comment">accept</a>\
+ </span>\
+ </p>\
+ <pre class="proposal" id="pr<%id%>">\
+<#proposal_diff#>\
+ </pre>\
+ <ul class="comment-children" id="cl<%id%>"></ul>\
+ </div>\
+ <div class="clearleft"></div>\
+ </div>\
+ </div>';
+
+ var replyTemplate = '\
+ <li>\
+ <div class="reply-div" id="rd<%id%>">\
+ <form id="rf<%id%>">\
+ <textarea name="comment" cols="80"></textarea>\
+ <input type="submit" value="Add reply" />\
+ <input type="button" value="Cancel" />\
+ <input type="hidden" name="parent" value="<%id%>" />\
+ <input type="hidden" name="node" value="" />\
+ </form>\
+ </div>\
+ </li>';
+
+ $(document).ready(function() {
+ init();
+ });
+})(jQuery);
+
+$(document).ready(function() {
+ // add comment anchors for all paragraphs that are commentable
+ $('.sphinx-has-comment').comment();
+
+ // highlight search words in search results
+ $("div.context").each(function() {
+ var params = $.getQueryParameters();
+ var terms = (params.q) ? params.q[0].split(/\s+/) : [];
+ var result = $(this);
+ $.each(terms, function() {
+ result.highlightText(this.toLowerCase(), 'highlighted');
+ });
+ });
+
+ // directly open comment window if requested
+ var anchor = document.location.hash;
+ if (anchor.substring(0, 9) == '#comment-') {
+ $('#ao' + anchor.substring(9)).click();
+ document.location.hash = '#s' + anchor.substring(9);
+ }
+});
Added: www-releases/trunk/5.0.2/tools/lld/docs/design.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/design.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/design.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/design.html Thu May 10 06:54:16 2018
@@ -0,0 +1,535 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Linker Design — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="up" title="ATOM-based lld" href="AtomLLD.html" />
+ <link rel="next" title="Getting Started: Building and Running lld" href="getting_started.html" />
+ <link rel="prev" title="ATOM-based lld" href="AtomLLD.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="getting_started.html" title="Getting Started: Building and Running lld"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="AtomLLD.html" title="ATOM-based lld"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" accesskey="U">ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Linker Design</a><ul>
+<li><a class="reference internal" href="#introduction">Introduction</a></li>
+<li><a class="reference internal" href="#atom-model">Atom Model</a></li>
+<li><a class="reference internal" href="#file-model">File Model</a><ul>
+<li><a class="reference internal" href="#object-file">Object File</a></li>
+<li><a class="reference internal" href="#static-library-archive">Static Library (Archive)</a></li>
+<li><a class="reference internal" href="#dynamic-library-shared-object">Dynamic Library (Shared Object)</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#linking-steps">Linking Steps</a><ul>
+<li><a class="reference internal" href="#input-files">Input Files</a></li>
+<li><a class="reference internal" href="#resolving">Resolving</a></li>
+<li><a class="reference internal" href="#passes">Passes</a></li>
+<li><a class="reference internal" href="#generate-output-file">Generate Output File</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#lld-file-representations">lld::File representations</a><ul>
+<li><a class="reference internal" href="#textual-representations-in-yaml">Textual representations in YAML</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#testing">Testing</a><ul>
+<li><a class="reference internal" href="#resolver-testing">Resolver testing</a></li>
+<li><a class="reference internal" href="#passes-testing">Passes testing</a></li>
+</ul>
+</li>
+<li><a class="reference internal" href="#design-issues">Design Issues</a><ul>
+<li><a class="reference internal" href="#debug-info">Debug Info</a></li>
+<li><a class="reference internal" href="#cpu-and-os-specific-functionality">CPU and OS specific functionality</a></li>
+<li><a class="reference internal" href="#file-attributes">File Attributes</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="AtomLLD.html"
+ title="previous chapter">ATOM-based lld</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="getting_started.html"
+ title="next chapter">Getting Started: Building and Running lld</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/design.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="linker-design">
+<span id="design"></span><h1>Linker Design<a class="headerlink" href="#linker-design" title="Permalink to this headline">¶</a></h1>
+<p>Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see <a class="reference internal" href="index.html"><em>LLD - The LLVM Linker</em></a>.</p>
+<div class="section" id="introduction">
+<h2>Introduction<a class="headerlink" href="#introduction" title="Permalink to this headline">¶</a></h2>
+<p>lld is a new generation of linker. It is not “section” based like traditional
+linkers which mostly just interlace sections from multiple object files into the
+output file. Instead, lld is based on “Atoms”. Traditional section based
+linking work well for simple linking, but their model makes advanced linking
+features difficult to implement. Features like dead code stripping, reordering
+functions for locality, and C++ coalescing require the linker to work at a finer
+grain.</p>
+<p>An atom is an indivisible chunk of code or data. An atom has a set of
+attributes, such as: name, scope, content-type, alignment, etc. An atom also
+has a list of References. A Reference contains: a kind, an optional offset, an
+optional addend, and an optional target atom.</p>
+<p>The Atom model allows the linker to use standard graph theory models for linking
+data structures. Each atom is a node, and each Reference is an edge. The
+feature of dead code stripping is implemented by following edges to mark all
+live atoms, and then delete the non-live atoms.</p>
+</div>
+<div class="section" id="atom-model">
+<h2>Atom Model<a class="headerlink" href="#atom-model" title="Permalink to this headline">¶</a></h2>
+<p>An atom is an indivisible chunk of code or data. Typically each user written
+function or global variable is an atom. In addition, the compiler may emit
+other atoms, such as for literal c-strings or floating point constants, or for
+runtime data structures like dwarf unwind info or pointers to initializers.</p>
+<p>A simple “hello world” object file would be modeled like this:</p>
+<img alt="_images/hello.png" src="_images/hello.png" />
+<p>There are three atoms: main, a proxy for printf, and an anonymous atom
+containing the c-string literal “hello world”. The Atom “main” has two
+references. One is the call site for the call to printf, and the other is a
+reference for the instruction that loads the address of the c-string literal.</p>
+<p>There are only four different types of atoms:</p>
+<blockquote>
+<div><ul>
+<li><dl class="first docutils">
+<dt>DefinedAtom</dt>
+<dd><p class="first last">95% of all atoms. This is a chunk of code or data</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>UndefinedAtom</dt>
+<dd><p class="first last">This is a place holder in object files for a reference to some atom
+outside the translation unit.During core linking it is usually replaced
+by (coalesced into) another Atom.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>SharedLibraryAtom</dt>
+<dd><p class="first">If a required symbol name turns out to be defined in a dynamic shared
+library (and not some object file). A SharedLibraryAtom is the
+placeholder Atom used to represent that fact.</p>
+<p class="last">It is similar to an UndefinedAtom, but it also tracks information
+about the associated shared library.</p>
+</dd>
+</dl>
+</li>
+<li><dl class="first docutils">
+<dt>AbsoluteAtom</dt>
+<dd><p class="first last">This is for embedded support where some stuff is implemented in ROM at
+some fixed address. This atom has no content. It is just an address
+that the Writer needs to fix up any references to point to.</p>
+</dd>
+</dl>
+</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="file-model">
+<h2>File Model<a class="headerlink" href="#file-model" title="Permalink to this headline">¶</a></h2>
+<p>The linker views the input files as basically containers of Atoms and
+References, and just a few attributes of their own. The linker works with three
+kinds of files: object files, static libraries, and dynamic shared libraries.
+Each kind of file has reader object which presents the file in the model
+expected by the linker.</p>
+<div class="section" id="object-file">
+<h3>Object File<a class="headerlink" href="#object-file" title="Permalink to this headline">¶</a></h3>
+<p>An object file is just a container of atoms. When linking an object file, a
+reader is instantiated which parses the object file and instantiates a set of
+atoms representing all content in the .o file. The linker adds all those atoms
+to a master graph.</p>
+</div>
+<div class="section" id="static-library-archive">
+<h3>Static Library (Archive)<a class="headerlink" href="#static-library-archive" title="Permalink to this headline">¶</a></h3>
+<p>This is the traditional unix static archive which is just a collection of object
+files with a “table of contents”. When linking with a static library, by default
+nothing is added to the master graph of atoms. Instead, if after merging all
+atoms from object files into a master graph, if any “undefined” atoms are left
+remaining in the master graph, the linker reads the table of contents for each
+static library to see if any have the needed definitions. If so, the set of
+atoms from the specified object file in the static library is added to the
+master graph of atoms.</p>
+</div>
+<div class="section" id="dynamic-library-shared-object">
+<h3>Dynamic Library (Shared Object)<a class="headerlink" href="#dynamic-library-shared-object" title="Permalink to this headline">¶</a></h3>
+<p>Dynamic libraries are different than object files and static libraries in that
+they don’t directly add any content. Their purpose is to check at build time
+that the remaining undefined references can be resolved at runtime, and provide
+a list of dynamic libraries (SO_NEEDED) that will be needed at runtime. The way
+this is modeled in the linker is that a dynamic library contributes no atoms to
+the initial graph of atoms. Instead, (like static libraries) if there are
+“undefined” atoms in the master graph of all atoms, then each dynamic library is
+checked to see if exports the required symbol. If so, a “shared library” atom is
+instantiated by the by the reader which the linker uses to replace the
+“undefined” atom.</p>
+</div>
+</div>
+<div class="section" id="linking-steps">
+<h2>Linking Steps<a class="headerlink" href="#linking-steps" title="Permalink to this headline">¶</a></h2>
+<p>Through the use of abstract Atoms, the core of linking is architecture
+independent and file format independent. All command line parsing is factored
+out into a separate “options” abstraction which enables the linker to be driven
+with different command line sets.</p>
+<p>The overall steps in linking are:</p>
+<blockquote>
+<div><ol class="arabic simple">
+<li>Command line processing</li>
+<li>Parsing input files</li>
+<li>Resolving</li>
+<li>Passes/Optimizations</li>
+<li>Generate output file</li>
+</ol>
+</div></blockquote>
+<p>The Resolving and Passes steps are done purely on the master graph of atoms, so
+they have no notion of file formats such as mach-o or ELF.</p>
+<div class="section" id="input-files">
+<h3>Input Files<a class="headerlink" href="#input-files" title="Permalink to this headline">¶</a></h3>
+<p>Existing developer tools using different file formats for object files.
+A goal of lld is to be file format independent. This is done
+through a plug-in model for reading object files. The lld::Reader is the base
+class for all object file readers. A Reader follows the factory method pattern.
+A Reader instantiates an lld::File object (which is a graph of Atoms) from a
+given object file (on disk or in-memory).</p>
+<p>Every Reader subclass defines its own “options” class (for instance the mach-o
+Reader defines the class ReaderOptionsMachO). This options class is the
+one-and-only way to control how the Reader operates when parsing an input file
+into an Atom graph. For instance, you may want the Reader to only accept
+certain architectures. The options class can be instantiated from command
+line options, or it can be subclassed and the ivars programmatically set.</p>
+</div>
+<div class="section" id="resolving">
+<h3>Resolving<a class="headerlink" href="#resolving" title="Permalink to this headline">¶</a></h3>
+<p>The resolving step takes all the atoms’ graphs from each object file and
+combines them into one master object graph. Unfortunately, it is not as simple
+as appending the atom list from each file into one big list. There are many
+cases where atoms need to be coalesced. That is, two or more atoms need to be
+coalesced into one atom. This is necessary to support: C language “tentative
+definitions”, C++ weak symbols for templates and inlines defined in headers,
+replacing undefined atoms with actual definition atoms, and for merging copies
+of constants like c-strings and floating point constants.</p>
+<p>The linker support coalescing by-name and by-content. By-name is used for
+tentative definitions and weak symbols. By-content is used for constant data
+that can be merged.</p>
+<p>The resolving process maintains some global linking “state”, including a “symbol
+table” which is a map from llvm::StringRef to lld::Atom*. With these data
+structures, the linker iterates all atoms in all input files. For each atom, it
+checks if the atom is named and has a global or hidden scope. If so, the atom
+is added to the symbol table map. If there already is a matching atom in that
+table, that means the current atom needs to be coalesced with the found atom, or
+it is a multiple definition error.</p>
+<p>When all initial input file atoms have been processed by the resolver, a scan is
+made to see if there are any undefined atoms in the graph. If there are, the
+linker scans all libraries (both static and dynamic) looking for definitions to
+replace the undefined atoms. It is an error if any undefined atoms are left
+remaining.</p>
+<p>Dead code stripping (if requested) is done at the end of resolving. The linker
+does a simple mark-and-sweep. It starts with “root” atoms (like “main” in a main
+executable) and follows each references and marks each Atom that it visits as
+“live”. When done, all atoms not marked “live” are removed.</p>
+<p>The result of the Resolving phase is the creation of an lld::File object. The
+goal is that the lld::File model is <strong>the</strong> internal representation
+throughout the linker. The file readers parse (mach-o, ELF, COFF) into an
+lld::File. The file writers (mach-o, ELF, COFF) taken an lld::File and produce
+their file kind, and every Pass only operates on an lld::File. This is not only
+a simpler, consistent model, but it enables the state of the linker to be dumped
+at any point in the link for testing purposes.</p>
+</div>
+<div class="section" id="passes">
+<h3>Passes<a class="headerlink" href="#passes" title="Permalink to this headline">¶</a></h3>
+<p>The Passes step is an open ended set of routines that each get a change to
+modify or enhance the current lld::File object. Some example Passes are:</p>
+<blockquote>
+<div><ul class="simple">
+<li>stub (PLT) generation</li>
+<li>GOT instantiation</li>
+<li>order_file optimization</li>
+<li>branch island generation</li>
+<li>branch shim generation</li>
+<li>Objective-C optimizations (Darwin specific)</li>
+<li>TLV instantiation (Darwin specific)</li>
+<li>DTrace probe processing (Darwin specific)</li>
+<li>compact unwind encoding (Darwin specific)</li>
+</ul>
+</div></blockquote>
+<p>Some of these passes are specific to Darwin’s runtime environments. But many of
+the passes are applicable to any OS (such as generating branch island for out of
+range branch instructions).</p>
+<p>The general structure of a pass is to iterate through the atoms in the current
+lld::File object, inspecting each atom and doing something. For instance, the
+stub pass, looks for call sites to shared library atoms (e.g. call to printf).
+It then instantiates a “stub” atom (PLT entry) and a “lazy pointer” atom for
+each proxy atom needed, and these new atoms are added to the current lld::File
+object. Next, all the noted call sites to shared library atoms have their
+References altered to point to the stub atom instead of the shared library atom.</p>
+</div>
+<div class="section" id="generate-output-file">
+<h3>Generate Output File<a class="headerlink" href="#generate-output-file" title="Permalink to this headline">¶</a></h3>
+<p>Once the passes are done, the output file writer is given current lld::File
+object. The writer’s job is to create the executable content file wrapper and
+place the content of the atoms into it.</p>
+<p>lld uses a plug-in model for writing output files. All concrete writers (e.g.
+ELF, mach-o, etc) are subclasses of the lld::Writer class.</p>
+<p>Unlike the Reader class which has just one method to instantiate an lld::File,
+the Writer class has multiple methods. The crucial method is to generate the
+output file, but there are also methods which allow the Writer to contribute
+Atoms to the resolver and specify passes to run.</p>
+<p>An example of contributing
+atoms is that if the Writer knows a main executable is being linked and such
+an executable requires a specially named entry point (e.g. “_main”), the Writer
+can add an UndefinedAtom with that special name to the resolver. This will
+cause the resolver to issue an error if that symbol is not defined.</p>
+<p>Sometimes a Writer supports lazily created symbols, such as names for the start
+of sections. To support this, the Writer can create a File object which vends
+no initial atoms, but does lazily supply atoms by name as needed.</p>
+<p>Every Writer subclass defines its own “options” class (for instance the mach-o
+Writer defines the class WriterOptionsMachO). This options class is the
+one-and-only way to control how the Writer operates when producing an output
+file from an Atom graph. For instance, you may want the Writer to optimize
+the output for certain OS versions, or strip local symbols, etc. The options
+class can be instantiated from command line options, or it can be subclassed
+and the ivars programmatically set.</p>
+</div>
+</div>
+<div class="section" id="lld-file-representations">
+<h2>lld::File representations<a class="headerlink" href="#lld-file-representations" title="Permalink to this headline">¶</a></h2>
+<p>Just as LLVM has three representations of its IR model, lld has two
+representations of its File/Atom/Reference model:</p>
+<blockquote>
+<div><ul class="simple">
+<li>In memory, abstract C++ classes (lld::Atom, lld::Reference, and lld::File).</li>
+<li>textual (in YAML)</li>
+</ul>
+</div></blockquote>
+<div class="section" id="textual-representations-in-yaml">
+<h3>Textual representations in YAML<a class="headerlink" href="#textual-representations-in-yaml" title="Permalink to this headline">¶</a></h3>
+<p>In designing a textual format we want something easy for humans to read and easy
+for the linker to parse. Since an atom has lots of attributes most of which are
+usually just the default, we should define default values for every attribute so
+that those can be omitted from the text representation. Here is the atoms for a
+simple hello world program expressed in YAML:</p>
+<div class="highlight-python"><pre>target-triple: x86_64-apple-darwin11
+
+atoms:
+ - name: _main
+ scope: global
+ type: code
+ content: [ 55, 48, 89, e5, 48, 8d, 3d, 00, 00, 00, 00, 30, c0, e8, 00, 00,
+ 00, 00, 31, c0, 5d, c3 ]
+ fixups:
+ - offset: 07
+ kind: pcrel32
+ target: 2
+ - offset: 0E
+ kind: call32
+ target: _fprintf
+
+ - type: c-string
+ content: [ 73, 5A, 00 ]
+
+...</pre>
+</div>
+<p>The biggest use for the textual format will be writing test cases. Writing test
+cases in C is problematic because the compiler may vary its output over time for
+its own optimization reasons which my inadvertently disable or break the linker
+feature trying to be tested. By writing test cases in the linkers own textual
+format, we can exactly specify every attribute of every atom and thus target
+specific linker logic.</p>
+<p>The textual/YAML format follows the ReaderWriter patterns used in lld. The lld
+library comes with the classes: ReaderYAML and WriterYAML.</p>
+</div>
+</div>
+<div class="section" id="testing">
+<h2>Testing<a class="headerlink" href="#testing" title="Permalink to this headline">¶</a></h2>
+<p>The lld project contains a test suite which is being built up as new code is
+added to lld. All new lld functionality should have a tests added to the test
+suite. The test suite is <a class="reference external" href="http://llvm.org/cmds/lit.html/">lit</a> driven. Each
+test is a text file with comments telling lit how to run the test and check the
+result To facilitate testing, the lld project builds a tool called lld-core.
+This tool reads a YAML file (default from stdin), parses it into one or more
+lld::File objects in memory and then feeds those lld::File objects to the
+resolver phase.</p>
+<div class="section" id="resolver-testing">
+<h3>Resolver testing<a class="headerlink" href="#resolver-testing" title="Permalink to this headline">¶</a></h3>
+<p>Basic testing is the “core linking” or resolving phase. That is where the
+linker merges object files. All test cases are written in YAML. One feature of
+YAML is that it allows multiple “documents” to be encoding in one YAML stream.
+That means one text file can appear to the linker as multiple .o files - the
+normal case for the linker.</p>
+<p>Here is a simple example of a core linking test case. It checks that an
+undefined atom from one file will be replaced by a definition from another
+file:</p>
+<div class="highlight-python"><pre># RUN: lld-core %s | FileCheck %s
+
+#
+# Test that undefined atoms are replaced with defined atoms.
+#
+
+---
+atoms:
+ - name: foo
+ definition: undefined
+---
+atoms:
+ - name: foo
+ scope: global
+ type: code
+...
+
+# CHECK: name: foo
+# CHECK: scope: global
+# CHECK: type: code
+# CHECK-NOT: name: foo
+# CHECK: ...</pre>
+</div>
+</div>
+<div class="section" id="passes-testing">
+<h3>Passes testing<a class="headerlink" href="#passes-testing" title="Permalink to this headline">¶</a></h3>
+<p>Since Passes just operate on an lld::File object, the lld-core tool has the
+option to run a particular pass (after resolving). Thus, you can write a YAML
+test case with carefully crafted input to exercise areas of a Pass and the check
+the resulting lld::File object as represented in YAML.</p>
+</div>
+</div>
+<div class="section" id="design-issues">
+<h2>Design Issues<a class="headerlink" href="#design-issues" title="Permalink to this headline">¶</a></h2>
+<p>There are a number of open issues in the design of lld. The plan is to wait and
+make these design decisions when we need to.</p>
+<div class="section" id="debug-info">
+<h3>Debug Info<a class="headerlink" href="#debug-info" title="Permalink to this headline">¶</a></h3>
+<p>Currently, the lld model says nothing about debug info. But the most popular
+debug format is DWARF and there is some impedance mismatch with the lld model
+and DWARF. In lld there are just Atoms and only Atoms that need to be in a
+special section at runtime have an associated section. Also, Atoms do not have
+addresses. The way DWARF is spec’ed different parts of DWARF are supposed to go
+into specially named sections and the DWARF references function code by address.</p>
+</div>
+<div class="section" id="cpu-and-os-specific-functionality">
+<h3>CPU and OS specific functionality<a class="headerlink" href="#cpu-and-os-specific-functionality" title="Permalink to this headline">¶</a></h3>
+<p>Currently, lld has an abstract “Platform” that deals with any CPU or OS specific
+differences in linking. We just keep adding virtual methods to the base
+Platform class as we find linking areas that might need customization. At some
+point we’ll need to structure this better.</p>
+</div>
+<div class="section" id="file-attributes">
+<h3>File Attributes<a class="headerlink" href="#file-attributes" title="Permalink to this headline">¶</a></h3>
+<p>Currently, lld::File just has a path and a way to iterate its atoms. We will
+need to add more attributes on a File. For example, some equivalent to the
+target triple. There is also a number of cached or computed attributes that
+could make various Passes more efficient. For instance, on Darwin there are a
+number of Objective-C optimizations that can be done by a Pass. But it would
+improve the plain C case if the Objective-C optimization Pass did not have to
+scan all atoms looking for any Objective-C data structures. This could be done
+if the lld::File object had an attribute that said if the file had any
+Objective-C data in it. The Resolving phase would then be required to “merge”
+that attribute as object files are added.</p>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="getting_started.html" title="Getting Started: Building and Running lld"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="AtomLLD.html" title="ATOM-based lld"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/development.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/development.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/development.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/development.html Thu May 10 06:54:16 2018
@@ -0,0 +1,169 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Development — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="up" title="ATOM-based lld" href="AtomLLD.html" />
+ <link rel="next" title="Developing lld Readers" href="Readers.html" />
+ <link rel="prev" title="Getting Started: Building and Running lld" href="getting_started.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="Readers.html" title="Developing lld Readers"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="getting_started.html" title="Getting Started: Building and Running lld"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" accesskey="U">ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Development</a><ul>
+<li><a class="reference internal" href="#creating-a-reader">Creating a Reader</a></li>
+<li><a class="reference internal" href="#modifying-the-driver">Modifying the Driver</a></li>
+<li><a class="reference internal" href="#debugging">Debugging</a></li>
+<li><a class="reference internal" href="#documentation">Documentation</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="getting_started.html"
+ title="previous chapter">Getting Started: Building and Running lld</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="Readers.html"
+ title="next chapter">Developing lld Readers</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/development.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="development">
+<span id="id1"></span><h1>Development<a class="headerlink" href="#development" title="Permalink to this headline">¶</a></h1>
+<p>Note: this document discuss Mach-O port of LLD. For ELF and COFF,
+see <a class="reference internal" href="index.html"><em>LLD - The LLVM Linker</em></a>.</p>
+<p>lld is developed as part of the <a class="reference external" href="http://llvm.org">LLVM</a> project.</p>
+<div class="section" id="creating-a-reader">
+<h2>Creating a Reader<a class="headerlink" href="#creating-a-reader" title="Permalink to this headline">¶</a></h2>
+<p>See the <a class="reference internal" href="Readers.html#readers"><em>Creating a Reader</em></a> guide.</p>
+</div>
+<div class="section" id="modifying-the-driver">
+<h2>Modifying the Driver<a class="headerlink" href="#modifying-the-driver" title="Permalink to this headline">¶</a></h2>
+<p>See <a class="reference internal" href="Driver.html"><em>Driver</em></a>.</p>
+</div>
+<div class="section" id="debugging">
+<h2>Debugging<a class="headerlink" href="#debugging" title="Permalink to this headline">¶</a></h2>
+<p>You can run lld with <tt class="docutils literal"><span class="pre">-mllvm</span> <span class="pre">-debug</span></tt> command line options to enable debugging
+printouts. If you want to enable debug information for some specific pass, you
+can run it with <tt class="docutils literal"><span class="pre">-mllvm</span> <span class="pre">'-debug-only=<pass>'</span></tt>, where pass is a name used in
+the <tt class="docutils literal"><span class="pre">DEBUG_WITH_TYPE()</span></tt> macro.</p>
+</div>
+<div class="section" id="documentation">
+<h2>Documentation<a class="headerlink" href="#documentation" title="Permalink to this headline">¶</a></h2>
+<p>The project documentation is written in reStructuredText and generated using the
+<a class="reference external" href="http://sphinx.pocoo.org/">Sphinx</a> documentation generator. For more
+information on writing documentation for the project, see the
+<a class="reference internal" href="sphinx_intro.html#sphinx-intro"><em>Sphinx Introduction for LLVM Developers</em></a>.</p>
+<div class="toctree-wrapper compound">
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="Readers.html" title="Developing lld Readers"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="getting_started.html" title="Getting Started: Building and Running lld"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/genindex.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/genindex.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/genindex.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/genindex.html Thu May 10 06:54:16 2018
@@ -0,0 +1,137 @@
+
+
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Index — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="#" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+
+
+
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+
+<h1 id="index">Index</h1>
+
+<div class="genindex-jumpbox">
+ <a href="#C"><strong>C</strong></a>
+ | <a href="#R"><strong>R</strong></a>
+
+</div>
+<h2 id="C">C</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="Readers.html#createReaderFoo__ReaderOptionsFooR">createReaderFoo (C++ function)</a>
+ </dt>
+
+ </dl></td>
+</tr></table>
+
+<h2 id="R">R</h2>
+<table style="width: 100%" class="indextable genindextable"><tr>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="Readers.html#ReaderFoo">ReaderFoo (C++ class)</a>
+ </dt>
+
+ </dl></td>
+ <td style="width: 33%" valign="top"><dl>
+
+ <dt><a href="Readers.html#ReaderOptionsFoo">ReaderOptionsFoo (C++ class)</a>
+ </dt>
+
+ </dl></td>
+</tr></table>
+
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="#" title="General Index"
+ >index</a></li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/getting_started.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/getting_started.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/getting_started.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/getting_started.html Thu May 10 06:54:16 2018
@@ -0,0 +1,265 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Getting Started: Building and Running lld — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="up" title="ATOM-based lld" href="AtomLLD.html" />
+ <link rel="next" title="Development" href="development.html" />
+ <link rel="prev" title="Linker Design" href="design.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="development.html" title="Development"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="design.html" title="Linker Design"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" accesskey="U">ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Getting Started: Building and Running lld</a><ul>
+<li><a class="reference internal" href="#building-lld">Building lld</a><ul>
+<li><a class="reference internal" href="#on-unix-like-systems">On Unix-like Systems</a></li>
+<li><a class="reference internal" href="#using-visual-studio">Using Visual Studio</a></li>
+<li><a class="reference internal" href="#more-information">More Information</a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="design.html"
+ title="previous chapter">Linker Design</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="development.html"
+ title="next chapter">Development</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/getting_started.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="getting-started-building-and-running-lld">
+<span id="getting-started"></span><h1>Getting Started: Building and Running lld<a class="headerlink" href="#getting-started-building-and-running-lld" title="Permalink to this headline">¶</a></h1>
+<p>This page gives you the shortest path to checking out and building lld. If you
+run into problems, please file bugs in the <a class="reference external" href="http://llvm.org/bugs/">LLVM Bugzilla</a></p>
+<div class="section" id="building-lld">
+<h2>Building lld<a class="headerlink" href="#building-lld" title="Permalink to this headline">¶</a></h2>
+<div class="section" id="on-unix-like-systems">
+<h3>On Unix-like Systems<a class="headerlink" href="#on-unix-like-systems" title="Permalink to this headline">¶</a></h3>
+<ol class="arabic simple">
+<li>Get the required tools.</li>
+</ol>
+<blockquote>
+<div><ul class="simple">
+<li><a class="reference external" href="http://www.cmake.org/cmake/resources/software.html">CMake 2.8</a>+.</li>
+<li>make (or any build system CMake supports).</li>
+<li><a class="reference external" href="http://clang.llvm.org/">Clang 3.1</a>+ or GCC 4.7+ (C++11 support is required).<ul>
+<li>If using Clang, you will also need <a class="reference external" href="http://libcxx.llvm.org/">libc++</a>.</li>
+</ul>
+</li>
+<li><a class="reference external" href="http://python.org/download/">Python 2.4</a>+ (not 3.x) for running tests.</li>
+</ul>
+</div></blockquote>
+<ol class="arabic" start="2">
+<li><p class="first">Check out LLVM:</p>
+<div class="highlight-python"><pre>$ cd path/to/llvm-project
+$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</pre>
+</div>
+</li>
+<li><p class="first">Check out lld:</p>
+<div class="highlight-python"><pre>$ cd llvm/tools
+$ svn co http://llvm.org/svn/llvm-project/lld/trunk lld</pre>
+</div>
+</li>
+</ol>
+<blockquote>
+<div><ul class="simple">
+<li>lld can also be checked out to <tt class="docutils literal"><span class="pre">path/to/llvm-project</span></tt> and built as an external
+project.</li>
+</ul>
+</div></blockquote>
+<ol class="arabic" start="4">
+<li><p class="first">Build LLVM and lld:</p>
+<div class="highlight-python"><pre>$ cd path/to/llvm-build/llvm (out of source build required)
+$ cmake -G "Unix Makefiles" path/to/llvm-project/llvm
+$ make</pre>
+</div>
+</li>
+</ol>
+<blockquote>
+<div><ul>
+<li><p class="first">If you want to build with clang and it is not the default compiler or
+it is installed in an alternate location, you’ll need to tell the cmake tool
+the location of the C and C++ compiler via CMAKE_C_COMPILER and
+CMAKE_CXX_COMPILER. For example:</p>
+<div class="highlight-python"><pre>$ cmake -DCMAKE_CXX_COMPILER=/path/to/clang++ -DCMAKE_C_COMPILER=/path/to/clang ...</pre>
+</div>
+</li>
+</ul>
+</div></blockquote>
+<ol class="arabic" start="5">
+<li><p class="first">Test:</p>
+<div class="highlight-python"><pre>$ make check-lld</pre>
+</div>
+</li>
+</ol>
+</div>
+<div class="section" id="using-visual-studio">
+<h3>Using Visual Studio<a class="headerlink" href="#using-visual-studio" title="Permalink to this headline">¶</a></h3>
+<ol class="arabic simple">
+<li>Get the required tools.</li>
+</ol>
+<blockquote>
+<div><ul class="simple">
+<li><a class="reference external" href="http://www.cmake.org/cmake/resources/software.html">CMake 2.8</a>+.</li>
+<li><a class="reference external" href="http://www.microsoft.com/visualstudio/11/en-us">Visual Studio 12 (2013) or later</a> (required for C++11 support)</li>
+<li><a class="reference external" href="http://python.org/download/">Python 2.4</a>+ (not 3.x) for running tests.</li>
+</ul>
+</div></blockquote>
+<ol class="arabic">
+<li><p class="first">Check out LLVM:</p>
+<div class="highlight-python"><pre>$ cd path/to/llvm-project
+$ svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm</pre>
+</div>
+</li>
+<li><p class="first">Check out lld:</p>
+<div class="highlight-python"><pre>$ cd llvm/tools
+$ svn co http://llvm.org/svn/llvm-project/lld/trunk lld</pre>
+</div>
+</li>
+</ol>
+<blockquote>
+<div><ul class="simple">
+<li>lld can also be checked out to <tt class="docutils literal"><span class="pre">path/to/llvm-project</span></tt> and built as an external
+project.</li>
+</ul>
+</div></blockquote>
+<ol class="arabic">
+<li><p class="first">Generate Visual Studio project files:</p>
+<div class="highlight-python"><pre>$ cd path/to/llvm-build/llvm (out of source build required)
+$ cmake -G "Visual Studio 11" path/to/llvm-project/llvm</pre>
+</div>
+</li>
+<li><p class="first">Build</p>
+</li>
+</ol>
+<blockquote>
+<div><ul class="simple">
+<li>Open LLVM.sln in Visual Studio.</li>
+<li>Build the <tt class="docutils literal"><span class="pre">ALL_BUILD</span></tt> target.</li>
+</ul>
+</div></blockquote>
+<ol class="arabic simple">
+<li>Test</li>
+</ol>
+<blockquote>
+<div><ul class="simple">
+<li>Build the <tt class="docutils literal"><span class="pre">lld-test</span></tt> target.</li>
+</ul>
+</div></blockquote>
+</div>
+<div class="section" id="more-information">
+<h3>More Information<a class="headerlink" href="#more-information" title="Permalink to this headline">¶</a></h3>
+<p>For more information on using CMake see the <a class="reference external" href="http://llvm.org/docs/CMake.html">LLVM CMake guide</a>.</p>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="development.html" title="Development"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="design.html" title="Linker Design"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/index.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/index.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/index.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/index.html Thu May 10 06:54:16 2018
@@ -0,0 +1,334 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>LLD - The LLVM Linker — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="#" />
+ <link rel="next" title="The ELF and COFF Linkers" href="NewLLD.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="#"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="NewLLD.html" title="The ELF and COFF Linkers"
+ accesskey="N">next</a> |</li>
+ <li><a href="#">lld Home</a> | </li>
+
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="#">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">LLD - The LLVM Linker</a><ul>
+<li><a class="reference internal" href="#features">Features</a></li>
+<li><a class="reference internal" href="#performance">Performance</a></li>
+<li><a class="reference internal" href="#build">Build</a></li>
+<li><a class="reference internal" href="#using-lld">Using LLD</a></li>
+<li><a class="reference internal" href="#history">History</a></li>
+<li><a class="reference internal" href="#internals">Internals</a><ul>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+
+ <h4>Next topic</h4>
+ <p class="topless"><a href="NewLLD.html"
+ title="next chapter">The ELF and COFF Linkers</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/index.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul><h3>Bugs</h3>
+
+<p>lld bugs should be reported at the
+ LLVM <a href="http://llvm.org/bugs">Bugzilla</a>.</p>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="lld-the-llvm-linker">
+<h1>LLD - The LLVM Linker<a class="headerlink" href="#lld-the-llvm-linker" title="Permalink to this headline">¶</a></h1>
+<p>LLD is a linker from the LLVM project. That is a drop-in replacement
+for system linkers and runs much faster than them. It also provides
+features that are useful for toolchain developers.</p>
+<p>The linker supports ELF (Unix), PE/COFF (Windows) and Mach-O (macOS)
+in descending order of completeness. Internally, LLD consists of three
+different linkers. The ELF port is the one that will be described in
+this document. The PE/COFF port is almost complete except the lack of
+the Windows debug info (PDB) support. The Mach-O port is built based
+on a different architecture than the ELF or COFF ports. For the
+details about Mach-O, please read <a class="reference internal" href="AtomLLD.html"><em>ATOM-based lld</em></a>.</p>
+<div class="section" id="features">
+<h2>Features<a class="headerlink" href="#features" title="Permalink to this headline">¶</a></h2>
+<ul>
+<li><p class="first">LLD is a drop-in replacement for the GNU linkers. That accepts the
+same command line arguments and linker scripts as GNU.</p>
+<p>We are currently working closely with the FreeBSD project to make
+LLD default system linker in future versions of the operating
+system, so we are serious about addressing compatibility issues. As
+of February 2017, LLD is able to link the entire FreeBSD/amd64 base
+system including the kernel. With a few work-in-progress patches it
+can link approximately 95% of the ports collection on AMD64. For the
+details, see <a class="reference external" href="https://www.freebsd.org/news/status/report-2016-10-2016-12.html#Using-LLVM%27s-LLD-Linker-as-FreeBSD%27s-System-Linker">FreeBSD quarterly status report</a>.</p>
+</li>
+<li><p class="first">LLD is very fast. When you link a large program on a multicore
+machine, you can expect that LLD runs more than twice as fast as GNU
+gold linker. Your milage may vary, though.</p>
+</li>
+<li><p class="first">It supports various CPUs/ABIs including x86-64, x86, x32, AArch64,
+ARM, MIPS 32/64 big/little-endian, PowerPC, PowerPC 64 and AMDGPU.
+Among these, x86-64 is the most well-supported target and have
+reached production quality. AArch64 and MIPS seem decent too. x86
+should be OK but not well tested yet. ARM support is being developed
+actively.</p>
+</li>
+<li><p class="first">It is always a cross-linker, meaning that it always supports all the
+above targets however it was built. In fact, we don’t provide a
+build-time option to enable/disable each target. This should make it
+easy to use our linker as part of a cross-compile toolchain.</p>
+</li>
+<li><p class="first">You can embed LLD to your program to eliminate dependency to
+external linkers. All you have to do is to construct object files
+and command line arguments just like you would do to invoke an
+external linker and then call the linker’s main function,
+<tt class="docutils literal"><span class="pre">lld::elf::link</span></tt>, from your code.</p>
+</li>
+<li><p class="first">It is small. We are using LLVM libObject library to read from object
+files, so it is not completely a fair comparison, but as of February
+2017, LLD/ELF consists only of 21k lines of C++ code while GNU gold
+consists of 198k lines of C++ code.</p>
+</li>
+<li><p class="first">Link-time optimization (LTO) is supported by default. Essentially,
+all you have to do to do LTO is to pass the <tt class="docutils literal"><span class="pre">-flto</span></tt> option to clang.
+Then clang creates object files not in the native object file format
+but in LLVM bitcode format. LLD reads bitcode object files, compile
+them using LLVM and emit an output file. Because in this way LLD can
+see the entire program, it can do the whole program optimization.</p>
+</li>
+<li><p class="first">Some very old features for ancient Unix systems (pre-90s or even
+before that) have been removed. Some default settings have been
+tuned for the 21st century. For example, the stack is marked as
+non-executable by default to tighten security.</p>
+</li>
+</ul>
+</div>
+<div class="section" id="performance">
+<h2>Performance<a class="headerlink" href="#performance" title="Permalink to this headline">¶</a></h2>
+<p>This is a link time comparison on a 2-socket 20-core 40-thread Xeon
+E5-2680 2.80 GHz machine with an SSD drive.</p>
+<p>LLD is much faster than the GNU linkers for large programs. That’s
+fast for small programs too, but because the link time is short
+anyway, the difference is not very noticeable in that case.</p>
+<p>Note that this is just a benchmark result of our environment.
+Depending on number of available cores, available amount of memory or
+disk latency/throughput, your results may vary.</p>
+<table border="1" class="docutils">
+<colgroup>
+<col width="22%" />
+<col width="20%" />
+<col width="22%" />
+<col width="24%" />
+<col width="11%" />
+</colgroup>
+<tbody valign="top">
+<tr class="row-odd"><td>Program</td>
+<td>Output size</td>
+<td>GNU ld</td>
+<td>GNU gold <a class="footnote-reference" href="#id3" id="id1">[1]</a></td>
+<td>LLD</td>
+</tr>
+<tr class="row-even"><td>ffmpeg dbg</td>
+<td>91 MiB</td>
+<td>1.59s</td>
+<td>1.15s</td>
+<td>0.78s</td>
+</tr>
+<tr class="row-odd"><td>mysqld dbg</td>
+<td>157 MiB</td>
+<td>7.09s</td>
+<td>2.49s</td>
+<td>1.31s</td>
+</tr>
+<tr class="row-even"><td>clang dbg</td>
+<td>1.45 GiB</td>
+<td>86.76s</td>
+<td>21.93s</td>
+<td>8.38s</td>
+</tr>
+<tr class="row-odd"><td>chromium dbg</td>
+<td>1.52 GiB</td>
+<td>142.30s <a class="footnote-reference" href="#id4" id="id2">[2]</a></td>
+<td>40.86s</td>
+<td>12.69s</td>
+</tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id3" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id1">[1]</a></td><td>With the <tt class="docutils literal"><span class="pre">--threads</span></tt> option to enable multi-threading support.</td></tr>
+</tbody>
+</table>
+<table class="docutils footnote" frame="void" id="id4" rules="none">
+<colgroup><col class="label" /><col /></colgroup>
+<tbody valign="top">
+<tr><td class="label"><a class="fn-backref" href="#id2">[2]</a></td><td>Since GNU ld doesn’t support the <tt class="docutils literal"><span class="pre">-icf=all</span></tt> option, we
+removed that from the command line for GNU ld. GNU ld would be
+slower than this if it had that option support. For gold and
+LLD, we use <tt class="docutils literal"><span class="pre">-icf=all</span></tt>.</td></tr>
+</tbody>
+</table>
+</div>
+<div class="section" id="build">
+<h2>Build<a class="headerlink" href="#build" title="Permalink to this headline">¶</a></h2>
+<p>If you have already checked out LLVM using SVN, you can check out LLD
+under <tt class="docutils literal"><span class="pre">tools</span></tt> directory just like you probably did for clang. For the
+details, see <a class="reference external" href="http://llvm.org/docs/GettingStarted.html">Getting Started with the LLVM System</a>.</p>
+<p>If you haven’t checkout out LLVM, the easiest way to build LLD is to
+checkout the entire LLVM projects/sub-projects from a git mirror and
+build that tree. You need <cite>cmake</cite> and of course a C++ compiler.</p>
+<div class="highlight-console"><div class="highlight"><pre><span class="gp">$</span> git clone https://github.com/llvm-project/llvm-project/
+<span class="gp">$</span> mkdir build
+<span class="gp">$</span> <span class="nb">cd </span>build
+<span class="gp">$</span> cmake -DCMAKE_BUILD_TYPE<span class="o">=</span>Release -DLLVM_ENABLE_PROJECTS<span class="o">=</span>lld -DCMAKE_INSTALL_PREFIX<span class="o">=</span>/usr/local ../llvm-project/llvm
+<span class="gp">$</span> make install
+</pre></div>
+</div>
+</div>
+<div class="section" id="using-lld">
+<h2>Using LLD<a class="headerlink" href="#using-lld" title="Permalink to this headline">¶</a></h2>
+<p>LLD is installed as <tt class="docutils literal"><span class="pre">ld.lld</span></tt>. On Unix, linkers are invoked by
+compiler drivers, so you are not expected to use that command
+directly. There are a few ways to tell compiler drivers to use ld.lld
+instead of the default linker.</p>
+<p>The easiest way to do that is to overwrite the default linker. After
+installing LLD to somewhere on your disk, you can create a symbolic
+link by doing <tt class="docutils literal"><span class="pre">ln</span> <span class="pre">-s</span> <span class="pre">/path/to/ld.lld</span> <span class="pre">/usr/bin/ld</span></tt> so that
+<tt class="docutils literal"><span class="pre">/usr/bin/ld</span></tt> is resolved to LLD.</p>
+<p>If you don’t want to change the system setting, you can use clang’s
+<tt class="docutils literal"><span class="pre">-fuse-ld</span></tt> option. In this way, you want to set <tt class="docutils literal"><span class="pre">-fuse-ld=lld</span></tt> to
+LDFLAGS when building your programs.</p>
+<p>LLD leaves its name and version number to a <tt class="docutils literal"><span class="pre">.comment</span></tt> section in an
+output. If you are in doubt whether you are successfully using LLD or
+not, run <tt class="docutils literal"><span class="pre">readelf</span> <span class="pre">--string-dump</span> <span class="pre">.comment</span> <span class="pre"><output-file></span></tt> and examine the
+output. If the string “Linker: LLD” is included in the output, you are
+using LLD.</p>
+</div>
+<div class="section" id="history">
+<h2>History<a class="headerlink" href="#history" title="Permalink to this headline">¶</a></h2>
+<p>Here is a brief project history of the ELF and COFF ports.</p>
+<ul class="simple">
+<li>May 2015: We decided to rewrite the COFF linker and did that.
+Noticed that the new linker is much faster than the MSVC linker.</li>
+<li>July 2015: The new ELF port was developed based on the COFF linker
+architecture.</li>
+<li>September 2015: The first patches to support MIPS and AArch64 landed.</li>
+<li>October 2015: Succeeded to self-host the ELF port. We have noticed
+that the linker was faster than the GNU linkers, but we weren’t sure
+at the time if we would be able to keep the gap as we would add more
+features to the linker.</li>
+<li>July 2016: Started working on improving the linker script support.</li>
+<li>December 2016: Succeeded to build the entire FreeBSD base system
+including the kernel. We had widen the performance gap against the
+GNU linkers.</li>
+</ul>
+</div>
+<div class="section" id="internals">
+<h2>Internals<a class="headerlink" href="#internals" title="Permalink to this headline">¶</a></h2>
+<p>For the internals of the linker, please read <a class="reference internal" href="NewLLD.html"><em>The ELF and COFF Linkers</em></a>. It is a bit
+outdated but the fundamental concepts remain valid. We’ll update the
+document soon.</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="NewLLD.html">The ELF and COFF Linkers</a></li>
+<li class="toctree-l1"><a class="reference internal" href="NewLLD.html#design">Design</a></li>
+<li class="toctree-l1"><a class="reference internal" href="AtomLLD.html">ATOM-based lld</a></li>
+<li class="toctree-l1"><a class="reference internal" href="windows_support.html">Windows support</a></li>
+<li class="toctree-l1"><a class="reference internal" href="ReleaseNotes.html">lld 5.0.0 Release Notes</a></li>
+</ul>
+</div>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="NewLLD.html" title="The ELF and COFF Linkers"
+ >next</a> |</li>
+ <li><a href="#">lld Home</a> | </li>
+
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/objects.inv
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/objects.inv?rev=331981&view=auto
==============================================================================
Binary file - no diff available.
Propchange: www-releases/trunk/5.0.2/tools/lld/docs/objects.inv
------------------------------------------------------------------------------
svn:mime-type = application/octet-stream
Added: www-releases/trunk/5.0.2/tools/lld/docs/open_projects.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/open_projects.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/open_projects.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/open_projects.html Thu May 10 06:54:16 2018
@@ -0,0 +1,155 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Open Projects — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <link rel="up" title="ATOM-based lld" href="AtomLLD.html" />
+ <link rel="next" title="Sphinx Introduction for LLVM Developers" href="sphinx_intro.html" />
+ <link rel="prev" title="Driver" href="Driver.html" />
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li class="right" >
+ <a href="sphinx_intro.html" title="Sphinx Introduction for LLVM Developers"
+ accesskey="N">next</a> |</li>
+ <li class="right" >
+ <a href="Driver.html" title="Driver"
+ accesskey="P">previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" accesskey="U">ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ <h3><a href="index.html">Table Of Contents</a></h3>
+ <ul>
+<li><a class="reference internal" href="#">Open Projects</a><ul>
+<li><a class="reference internal" href="#include-lld-core">include/lld/Core</a></li>
+<li><a class="reference internal" href="#documentation-todos">Documentation TODOs</a></li>
+</ul>
+</li>
+</ul>
+
+ <h4>Previous topic</h4>
+ <p class="topless"><a href="Driver.html"
+ title="previous chapter">Driver</a></p>
+ <h4>Next topic</h4>
+ <p class="topless"><a href="sphinx_intro.html"
+ title="next chapter">Sphinx Introduction for LLVM Developers</a></p>
+ <h3>This Page</h3>
+ <ul class="this-page-menu">
+ <li><a href="_sources/open_projects.txt"
+ rel="nofollow">Show Source</a></li>
+ </ul>
+<div id="searchbox" style="display: none">
+ <h3>Quick search</h3>
+ <form class="search" action="search.html" method="get">
+ <input type="text" name="q" />
+ <input type="submit" value="Go" />
+ <input type="hidden" name="check_keywords" value="yes" />
+ <input type="hidden" name="area" value="default" />
+ </form>
+ <p class="searchtip" style="font-size: 90%">
+ Enter search terms or a module, class or function name.
+ </p>
+</div>
+<script type="text/javascript">$('#searchbox').show(0);</script>
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <div class="section" id="open-projects">
+<span id="id1"></span><h1>Open Projects<a class="headerlink" href="#open-projects" title="Permalink to this headline">¶</a></h1>
+<div class="section" id="include-lld-core">
+<h2>include/lld/Core<a class="headerlink" href="#include-lld-core" title="Permalink to this headline">¶</a></h2>
+<ul class="simple">
+<li>The yaml reader/writer interfaces should be changed to return
+an explanatory string if there is an error. The existing error_code
+abstraction only works for returning low level OS errors. It does not
+work for describing formatting issues.</li>
+<li>We need to design a diagnostics interface. It would be nice to share code
+with <a class="reference external" href="http://clang.llvm.org/docs/InternalsManual.html#Diagnostics">Clang</a> where possible.</li>
+<li>We need to add more attributes to File. In particular, we need cpu
+and OS information (like target triples). We should also provide explicit
+support for <a class="reference external" href="http://llvm.org/docs/LangRef.html#module_flags">LLVM IR module flags metadata</a>.</li>
+</ul>
+</div>
+<div class="section" id="documentation-todos">
+<h2>Documentation TODOs<a class="headerlink" href="#documentation-todos" title="Permalink to this headline">¶</a></h2>
+</div>
+</div>
+
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li class="right" >
+ <a href="sphinx_intro.html" title="Sphinx Introduction for LLVM Developers"
+ >next</a> |</li>
+ <li class="right" >
+ <a href="Driver.html" title="Driver"
+ >previous</a> |</li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ <li><a href="AtomLLD.html" >ATOM-based lld</a> »</li>
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
Added: www-releases/trunk/5.0.2/tools/lld/docs/search.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/5.0.2/tools/lld/docs/search.html?rev=331981&view=auto
==============================================================================
--- www-releases/trunk/5.0.2/tools/lld/docs/search.html (added)
+++ www-releases/trunk/5.0.2/tools/lld/docs/search.html Thu May 10 06:54:16 2018
@@ -0,0 +1,113 @@
+
+
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+ <title>Search — lld 5 documentation</title>
+
+ <link rel="stylesheet" href="_static/llvm.css" type="text/css" />
+ <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
+
+ <script type="text/javascript">
+ var DOCUMENTATION_OPTIONS = {
+ URL_ROOT: '',
+ VERSION: '5',
+ COLLAPSE_INDEX: false,
+ FILE_SUFFIX: '.html',
+ HAS_SOURCE: true
+ };
+ </script>
+ <script type="text/javascript" src="_static/jquery.js"></script>
+ <script type="text/javascript" src="_static/underscore.js"></script>
+ <script type="text/javascript" src="_static/doctools.js"></script>
+ <script type="text/javascript" src="_static/searchtools.js"></script>
+ <link rel="shortcut icon" href="_static/favicon.ico"/>
+ <link rel="top" title="lld 5 documentation" href="index.html" />
+ <script type="text/javascript">
+ jQuery(function() { Search.loadIndex("searchindex.js"); });
+ </script>
+
+<style type="text/css">
+ table.right { float: right; margin-left: 20px; }
+ table.right td { border: 1px solid #ccc; }
+</style>
+
+
+ </head>
+ <body>
+<div class="logo">
+<a href="index.html"><img src="_static/logo.png" alt="LLVM Documentation"/></a>
+</div>
+
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ accesskey="I">index</a></li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+
+ <div class="sphinxsidebar">
+ <div class="sphinxsidebarwrapper">
+ </div>
+ </div>
+
+ <div class="document">
+ <div class="documentwrapper">
+ <div class="bodywrapper">
+ <div class="body">
+
+ <h1 id="search-documentation">Search</h1>
+ <div id="fallback" class="admonition warning">
+ <script type="text/javascript">$('#fallback').hide();</script>
+ <p>
+ Please activate JavaScript to enable the search
+ functionality.
+ </p>
+ </div>
+ <p>
+ From here you can search these documents. Enter your search
+ words into the box below and click "search". Note that the search
+ function will automatically search for all of the words. Pages
+ containing fewer words won't appear in the result list.
+ </p>
+ <form action="" method="get">
+ <input type="text" name="q" value="" />
+ <input type="submit" value="search" />
+ <span id="search-progress" style="padding-left: 10px"></span>
+ </form>
+
+ <div id="search-results">
+
+ </div>
+
+ </div>
+ </div>
+ </div>
+ <div class="clearer"></div>
+ </div>
+ <div class="related">
+ <h3>Navigation</h3>
+ <ul>
+ <li class="right" style="margin-right: 10px">
+ <a href="genindex.html" title="General Index"
+ >index</a></li>
+ <li><a href="index.html">lld Home</a> | </li>
+
+ </ul>
+ </div>
+ <div class="footer">
+ © Copyright 2011-2018, LLVM Project.
+ Last updated on 2018-05-10.
+ Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.1.3.
+ </div>
+ </body>
+</html>
\ No newline at end of file
More information about the llvm-commits
mailing list