aboutsummaryrefslogtreecommitdiff
path: root/www
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2011-10-20 21:14:49 +0000
committerDimitry Andric <dim@FreeBSD.org>2011-10-20 21:14:49 +0000
commit36981b17ed939300f6f8fc2355a255f711fcef71 (patch)
treeee2483e98b09cac943dc93a6969d83ca737ff139 /www
parent180abc3db9ae3b4fc63cd65b15697e6ffcc8a657 (diff)
downloadsrc-36981b17ed939300f6f8fc2355a255f711fcef71.tar.gz
src-36981b17ed939300f6f8fc2355a255f711fcef71.zip
Vendor import of clang release_30 branch r142614:vendor/clang/clang-r142614
Notes
Notes: svn path=/vendor/clang/dist/; revision=226586 svn path=/vendor/clang/clang-r142614/; revision=226587; tag=vendor/clang/clang-r142614
Diffstat (limited to 'www')
-rw-r--r--www/OpenProjects.html4
-rw-r--r--www/analyzer/latest_checker.html.incl2
-rw-r--r--www/analyzer/release_notes.html13
-rw-r--r--www/comparison.html4
-rw-r--r--www/compatibility.html40
-rw-r--r--www/cxx_status.html977
-rw-r--r--www/demo/index.cgi2
-rw-r--r--www/diagnostics.html33
-rw-r--r--www/get_involved.html31
-rw-r--r--www/get_started.html2
-rw-r--r--www/hacking.html22
-rw-r--r--www/index.html2
-rw-r--r--www/menu.html.incl5
13 files changed, 472 insertions, 665 deletions
diff --git a/www/OpenProjects.html b/www/OpenProjects.html
index b3e0841a73a1..fec23dc14aaa 100644
--- a/www/OpenProjects.html
+++ b/www/OpenProjects.html
@@ -78,8 +78,8 @@ improve the quality of clang by self-testing. Some examples:
</ul>
</li>
-<li><b>Continue work on C++'0x support</b>:
- C++'98 is feature complete, but there is still a lot of C++'0x featuers to
+<li><b>Continue work on C++'11 support</b>:
+ C++'98 is feature complete, but there is still a lot of C++'11 features to
implement. Please see the <a href="cxx_status.html">C++ status report
page</a> to find out what is missing.</li>
</ul>
diff --git a/www/analyzer/latest_checker.html.incl b/www/analyzer/latest_checker.html.incl
index 76b88ddd9041..8d7b58de215d 100644
--- a/www/analyzer/latest_checker.html.incl
+++ b/www/analyzer/latest_checker.html.incl
@@ -1 +1 @@
-<b><a href="/checker/checker-257.tar.bz2">checker-257.tar.bz2</a></b> (built May 25, 2011)
+<b><a href="/checker/checker-258.tar.bz2">checker-258.tar.bz2</a></b> (built October 13, 2011)
diff --git a/www/analyzer/release_notes.html b/www/analyzer/release_notes.html
index 4a568f51e471..311c5aecd5c8 100644
--- a/www/analyzer/release_notes.html
+++ b/www/analyzer/release_notes.html
@@ -15,6 +15,19 @@
<h1>Release notes for <tt>checker-XXX</tt> builds</h1>
+<h4 id="checker_258">checker-258</h4>
+
+<p><b>built:</b>October 13, 2011<br>
+<b>download:</b> <a href="/checker/checker-258.tar.bz2">checker-258.tar.bz2</a></p>
+<p><b>highlights:</b></p>
+
+<ul>
+ <li>Contains a newer version of the analyzer than the one shipped in Xcode 4.2.</li>
+ <li>Adds a new security checker for looking at correct uses of the Mac OS KeyChain API.</li>
+ <li>Supports ARC (please file bugs where you see issues)</li>
+ <li>Major under-the-cover changes. This should result in more precise results in some cases, but this is laying the groundwork for major improvements. Please file bugs where you see regressions or issues.</li>
+</ul>
+
<h4 id="checker_257">checker-257</h4>
<p><b>built:</b>May 25, 2011<br>
diff --git a/www/comparison.html b/www/comparison.html
index a7d4d75a2e59..4b72a8527179 100644
--- a/www/comparison.html
+++ b/www/comparison.html
@@ -50,7 +50,7 @@
<ul>
<li>GCC supports languages that clang does not aim to, such as Java, Ada,
FORTRAN, etc.</li>
- <li>GCC has a few <a href="cxx_status.html">C++'0x features</a> that Clang
+ <li>GCC has a few <a href="cxx_status.html">C++'11 features</a> that Clang
does not yet support.</li>
<li>GCC supports more targets than LLVM.</li>
<li>GCC is popular and widely adopted.</li>
@@ -133,7 +133,7 @@
<ul>
<li>Clang's C and C++ support is far more mature and practically useful than
- Elsa's, and includes many C++'0x features.</li>
+ Elsa's, and includes many C++'11 features.</li>
<li>The Elsa community is extremely small and major development work seems
to have ceased in 2005. Work continued to be used by other small
projects (e.g. Oink), but Oink is apparently dead now too. Clang has a
diff --git a/www/compatibility.html b/www/compatibility.html
index 783758f3ac80..2102ccca7e1d 100644
--- a/www/compatibility.html
+++ b/www/compatibility.html
@@ -60,6 +60,12 @@
<li><a href="#param_name_lookup">Parameter name lookup</a></li>
</ul>
</li>
+ <li><a href="#c++11">C++11 compatibility</a>
+ <ul>
+ <li><a href="#deleted-special-func">Deleted special member
+ functions</a></li>
+ </ul>
+ </li>
<li><a href="#objective-c++">Objective-C++ compatibility</a>
<ul>
<li><a href="#implicit-downcasts">Implicit downcasts</a></li>
@@ -755,7 +761,39 @@ void f(int a, int a);
<p>Clang diagnoses this error (where the parameter name has been redeclared). To fix this problem, rename one of the parameters.</p>
<!-- ======================================================================= -->
-<h2 id="objective-c++">Objective-C++ compatibility</h3>
+<h2 id="c++11">C++11 compatibility</h2>
+<!-- ======================================================================= -->
+
+<!-- ======================================================================= -->
+<h3 id="deleted-special-func">Deleted special member functions</h3>
+<!-- ======================================================================= -->
+
+<p>In C++11, the explicit declaration of a move constructor or a move
+assignment operator within a class disables the implicit declaration
+of the copy constructor and copy assignment operator. This change came
+fairly late in the C++11 standardization process, so early
+implementations of C++11 (including Clang before 3.0, GCC before 4.7,
+and Visual Studio 2010) do not implement this rule, leading them to
+accept this ill-formed code:</p>
+
+<pre>
+struct X {
+ X(X&amp;&amp;); <i>// suppresses implicit copy constructor</i>
+};
+
+void f(X x);
+void g(X x) {
+ f(x); <i>// error: X has no copy constructor</i>
+}
+</pre>
+
+<p>This affects some C++11 code, including Boost's popular <a
+href="http://www.boost.org/doc/libs/release/libs/smart_ptr/shared_ptr.htm"><tt>shared_ptr</tt></a>
+up to version 1.47.0. The fix for Boost's <tt>shared_ptr</tt> is
+<a href="https://svn.boost.org/trac/boost/changeset/73202">available here</a>.</p>
+
+<!-- ======================================================================= -->
+<h2 id="objective-c++">Objective-C++ compatibility</h2>
<!-- ======================================================================= -->
<!-- ======================================================================= -->
diff --git a/www/cxx_status.html b/www/cxx_status.html
index 5998de822ebb..3fb1ef614bd0 100644
--- a/www/cxx_status.html
+++ b/www/cxx_status.html
@@ -3,7 +3,7 @@
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
- <title>Clang - C++ and C++'0x Status</title>
+ <title>Clang - C++ and C++'11 Status</title>
<link type="text/css" rel="stylesheet" href="menu.css">
<link type="text/css" rel="stylesheet" href="content.css">
<style type="text/css">
@@ -23,666 +23,347 @@
<div id="content">
<!--*************************************************************************-->
-<h1>C++ and C++'0x Support in Clang</h1>
+<h1>C++ and C++'11 Support in Clang</h1>
<!--*************************************************************************-->
-<p>Last updated: $Date: 2011-05-06 00:07:51 +0200 (Fri, 06 May 2011) $</p>
+<p>Last updated: $Date: 2011-10-15 01:35:48 +0200 (Sat, 15 Oct 2011) $</p>
- <ul>
- <li><a href="#projects">Projects Building with Clang</a></li>
- <li><a href="#specification">Implementation Status by Section</a></li>
- <li><a href="#cxx0x">C++0x Status</a></li>
- </ul>
-
-<p>Clang currently implements all of the ISO C++ 1998 standard (including
- the defects addressed in the ISO C++ 2003 standard) except for 'export'
- (which has been removed from the C++'0x draft).
- The <a href="http://llvm.org/bugs/">LLVM bug tracker</a>
- contains a Clang C++ component that tracks known Clang C++ bugs.</p>
+<p>Clang currently implements all of the ISO C++ 1998 standard
+ (including the defects addressed in the ISO C++ 2003 standard)
+ except for 'export' (which has been removed in C++'11)
+ and is considered a production-quality C++ compiler. The <a
+ href="http://llvm.org/bugs/">LLVM bug tracker</a> contains a Clang
+ C++ component that tracks known Clang C++ bugs.</p>
- <h2 id="projects">Projects Building with Clang</h2>
+<h2 id="cxx11">C++11 Implementation status</h2>
- <p>Clang is now capable of compiling large C++ projects, and the following
- table describes various projects that we have attempted to compile with
- Clang++.</p>
+ <p>Clang provides support for a number of features included in the new <a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">ISO C++ Standard, ISO/IEC 14882:2011</a>. The following table describes which C++11 features have been implemented in Clang and in which Clang versions they became available.</p>
-<table width="689" border="1" cellspacing="0">
- <tr>
- <th>Project</th>
- <th>Status</th>
- <th>Last Tested</th>
- <th>Tracking Bug</th>
- </tr>
- <tr>
- <td><a href="http://clang.llvm.org">Clang</a> and <a href="http://llvm.org">LLVM</a></td>
- <td>Successful self-hosting achieved</td>
- <td>Continually</td>
- <td></td>
- </tr>
- <tr>
- <td><a href="http://www.cmake.org">CMake</a></td>
- <td>Compiles, passes regression tests (debug build)</td>
- <td>February 9, 2010</td>
- <td></td>
- </tr>
- <tr>
- <td><a href="http://www.boost.org">Boost</a></td>
- <td><a href="http://blog.llvm.org/2010/05/clang-builds-boost.html">Compiles
- and passes regression tests</a> on Darwin/X86-64.</td>
- <td>May 20, 2010</td>
- <td><a href="http://llvm.org/bugs/show_bug.cgi?id=6023"><del>PR6023</del></a></td>
- </tr>
- <tr>
- <td><a href="http://qt.nokia.com">Qt</a></td>
- <td>Partially compiles; miscompilation of uic prevents complete compilation, qmake works, some small examples also.</td>
- <td>February 9, 2010</td>
- <td><a href="http://llvm.org/bugs/show_bug.cgi?id=5881">PR5881</a></td>
- </tr>
-</table>
-
-<h2 id="cxx0x">C++0x Implementation status</h2>
-
-<p>Clang's development effort is focused primarily on fixing bugs in the current
-ISO C++ standard (1998/2003). This section tracks the status of various C++0x
-features.</p>
-
-<p>You can use clang in C++0x mode either
+<p>You can use Clang in C++11 mode either
with <a href="http://libcxx.llvm.org/">libc++</a> or with gcc's libstdc++.
libstdc++-4.4 requires <a href="libstdc++4.4-clang0x.patch">a patch</a> to work
with clang; other versions have not been tested.</p>
-
-<h2 id="specification">Implementation Status by Feature</h2>
-
-
-<!-- Within this table: The colors we're using to color-code our level
-of support for a given section:
-
- White (no background): not considered/tested.
- #C11B17: Broken.
- #F88017: Some useful examples work
- #FDD017: Many examples work
- #347C17: Nearly everything works
- #00FF00 + check mark: Implementation complete!
- -->
-
-<p>The following table is used to help track our implementation
- progress toward implementing the complete C++'0x standard. We use a
- simple, somewhat arbitrary color-coding scheme to describe the
- relative completeness of features:</p>
-
<table width="689" border="1" cellspacing="0">
- <tr>
- <th>Not started/not evaluated</th>
- <th>Not Applicable</th>
- <th>Broken</th>
- <th>Some examples work</th>
- <th>Many examples work</th>
- <th>Nearly everything works</th>
- <th>Complete</th>
-<!--
- <th>Complete (with tests for each paragraph)</th>
--->
- </tr>
- <tr>
- <td></td>
- <td class="na">N/A</td>
- <td class="broken"></td>
- <td class="basic"></td>
- <td class="medium"></td>
- <td class="advanced"></td>
- <td class="complete">rXXXXXX</td>
-<!--
- <td class="complete" align="center">&#x2713;</td>
--->
- </tr>
-</table>
-
-<p>In addition, boxes marked with &#x2713 have complete and passing tests.
- Similarly, boxes marked with &#x2717 have complete tests, some of which
- are failing, and a <b>?</b> indicates partial tests while not making any
- statement about passing status.</p>
-
-<p>A feature is "complete" when the appropriate Clang component (Parse, AST,
-Sema, CodeGen) implements the behavior described in all of the
-paragraphs in the relevant C++'0x draft standard. The major
-components are:</p>
-
-<dl>
- <dt>Parse</dt>
- <dd>Clang is able to parse the grammar of this feature (or the grammar
- described by this section), but does not necessarily do anything with the
- parsed result. Use Clang's <code>-fsyntax-only</code> option to parse C++
- programs.</dd>
+ <tr>
+ <th bgcolor="#ffddaa">Language Feature</th>
+ <th bgcolor="#ffddaa">C++0x Proposal</th>
+ <th bgcolor="#ffddaa">Available in Clang?</th>
+ </tr>
+ <tr>
+ <td>Rvalue references</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;Rvalue references for <code>*this</code></td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm">N2439</a></td>
+ <td align="center">Clang 2.9<br/></td>
+ </tr>
+ <tr>
+ <td>Initialization of class objects by rvalues</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1610.html">N1610</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Non-static data member initializers</td>
+ <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2008/n2756.htm">N2756</a></td>
+ <td align="center">Clang 3.0</a></td>
+ </tr>
+ <tr>
+ <td>Variadic templates</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;Extending variadic template template parameters</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Initializer lists</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2672.htm">N2672</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Static assertions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.html">N1720</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td><code>auto</code>-typed variables</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;Multi-declarator <code>auto</code></td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1737.pdf">N1737</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;Removal of auto as a storage-class specifier</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2546.htm">N2546</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>&nbsp;&nbsp;&nbsp;&nbsp;New function declarator syntax</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2541.htm">N2541</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>New wording for C++0x lambdas</td>
+ <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2927.pdf">N2927</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Declared type of an expression</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Right angle brackets</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Default template arguments for function templates</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#226">DR226</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Solving the SFINAE problem for expressions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2634.html">DR339</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Alias templates</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Extern templates</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Null pointer constant</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Strongly-typed enums</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Forward declarations for enums</td>
+ <td>
+ <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2764.pdf">N2764
+ </a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Generalized attributes</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2761.pdf">N2761</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Generalized constant expressions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Alignment support</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2341.pdf">N2341</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <!-- Skipped N1627: Conditionally-support behavior -->
+ <!-- Skipped N1727: Changing Undefined Behavior into Diagnosable Errors -->
+ <tr>
+ <td>Delegating constructors</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986.pdf">N1986</a></td>
+ <td align="center">Clang 3.0<br/></td>
+ </tr>
+ <tr>
+ <td>Inheriting constructors</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2540.htm">N2540</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Explicit conversion operators</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>New character types</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Unicode string literals</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm">N2442</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Raw string literals</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.htm">N2442</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Universal character name literals</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2170.html">N2170</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>User-defined literals</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2765.pdf">N2765</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Standard Layout Types</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htm">N2342</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Defaulted and deleted functions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2346.htm">N2346</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Extended friend declarations</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1791.pdf">N1791</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Extending <code>sizeof</code></td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2253.html">N2253</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Inline namespaces</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">N2535</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Unrestricted unions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Local and unnamed types as template arguments</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Range-based for</td>
+ <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2930.html">N2930</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Explicit virtual overrides</td>
+ <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2928.htm">N2928</a>
+ <br/><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm">N3206</a>
+<br/><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3272.htm">N3272</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Minimal support for garbage collection and reachability-based leak detection</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2670.htm">N2670</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Allowing move constructors to throw [noexcept]</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.htm">N3050</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
+ <tr>
+ <td>Defining move special member functions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3053.htm">N3053</a></td>
+ <td align="center">Clang 3.0</td>
+ </tr>
- <dt>AST</dt>
- <dd>Clang builds an abstract syntax tree (AST) for the feature, but does not
- necessarily perform any type-checking. Use Clang's <code>-ast-print</code>
- option to print the resulting ASTs.</dd>
+ <tr class="separator">
+ <th align="center" colspan="3" bgcolor="#ffddaa">Concurrency</th>
+ </tr>
+ <tr>
+ <td>Sequence points</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2239.html">N2239</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Atomic operations</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2427.html">N2427</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Strong Compare and Exchange</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2748.html">N2748</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Bidirectional Fences</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2752.htm">N2752</a></td>
+ <td align="center">No</td>
+ </tr>
- <dt>Sema</dt>
- <dd>Clang parses and type-checks this feature and provides a well-formed AST
- annotated with types. Use Clang's <code>-fsyntax-only</code> to type-check
- code.</dd>
-
- <dt>CodeGen</dt>
- <dd>Clang parses, type-checks, and generates code for this feature, allowing
- one to compile and execute programs.</dd>
-</dl>
-
-<p>Updates to this table are welcome! Tests for the various features are also
-welcome!</p>
-
-<table width="689" border="1" cellspacing="0">
-<tr><td colspan="7" align="center" bgcolor="#ffddaa">C++0x Features (current draft report <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3291.pdf">here</a>)</td>
-</tr>
- <tr>
- <th>Feature</th>
- <th>Parse</th>
- <th>AST</th>
- <th>Sema</th>
- <th>CodeGen</th>
- <th>Standard Sections</th>
- <th>Notes</th>
- </tr>
-<tr><td colspan="7" class="category">Control Flow Modifications</td></tr>
-<tr>
- <td>Range-based for loop</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td>6.5.4</td>
- <td><a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2007/n2243.html">N2243</a>
- <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3271.htm">N3271</a></td>
-</tr>
+ <tr>
+ <td>Memory model</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2429.htm">N2429</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Data-dependency ordering: atomics and memory model</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2664.htm">N2664</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Propagating exceptions</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2179.html">N2179</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Abandoning a process and at_quick_exit</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2440.htm">N2440</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Allow atomics use in signal handlers</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2547.htm">N2547</a></td>
+ <td align="center"><span class="unsupported">No</span></td>
+ </tr>
+ <tr>
+ <td>Thread-local storage</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2659.htm">N2659</a></td>
+ <td align="center">No</td>
+ </tr>
+ <tr>
+ <td>Dynamic initialization and destruction with concurrency</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660</a></td>
+ <td align="center">No</td>
+ </tr>
-<tr><td colspan="7" class="category">Type System Modifications</td></tr>
-<tr>
- <td>rvalue references</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete"></td>
- <td>8.3.2</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2118.html">N2118</a>,
- <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2009/n2831.html">N2831</a> <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm">N2439</a>
- </td>
-</tr>
-<tr>
- <td>decltype</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="advanced" align="center"></td>
- <td class="advanced" align="center"></td>
- <td>7.1.6.2</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2343.pdf">N2343</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1478.pdf">N1478</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1978.pdf">N1978</a>
- </td>
-</tr>
-<tr>
- <td>auto type deduction</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td>7.1.6.2, 7.1.6.4</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1984.pdf">N1984</a></td>
-</tr>
-<tr>
- <td>nullptr</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="medium" align="center"></td>
- <td class="broken"></td>
- <td>2.14.7, 4.10, 4.11</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2431.pdf">N2431</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1488.pdf">N1488</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2214.pdf">N2214</a>
- </td>
-</tr>
-<tr>
- <td>enum classes</td>
- <td class="complete"></td>
- <td class="advanced"></td>
- <td class="advanced"></td>
- <td></td>
- <td>7.2</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1513.pdf">N1513</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2347.pdf">N2347</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2499.pdf">N2499</a>
- Includes forward declaration capability
- </td>
-</tr>
-<tr>
- <td>long long</td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td>3.9.1</td>
- <td>C99
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a>
- </td>
-</tr>
-<tr>
- <td>constexpr</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>3.6.2, 3.9, 5.19, 7.1.5</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1521.pdf">N1521</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2235.pdf">N2235</a>
- </td>
-</tr>
-<tr>
- <td>char16_t/char32_t</td>
- <td class="medium"></td>
- <td class="medium"></td>
- <td class="medium"></td>
- <td class="medium"></td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2249.html">N2249</a></td>
-</tr>
-<tr>
- <td>Unicode string literal types</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>2.14.3, 2.14.5</td>
- <td></td>
-</tr>
-<tr>
- <td>Raw string literal types</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>2.14.5</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2053.html">N2053</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2442.html">N2442</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a>
- </td>
-</tr>
-<tr>
- <td>user-defined literal types</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>2.14.8</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2378.pdf">N2378</a></td>
-</tr>
-<tr>
- <td>POD definition changes</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>3.9, 9</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2294.html">N2294</a></td>
-</tr>
-<tr>
- <td>Unrestricted unions</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>9.5</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2544.pdf">N2544</a></td>
-</tr>
-<tr>
- <td>Tighter narrowing rules</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>8.5.4</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
- </td>
-</tr>
-<tr><td colspan="7" class="category">Class Modifications</td></tr>
-<tr>
- <td>delegating constructors</td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td>12.6.2</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1986">N1986</a></td>
-</tr>
-<tr>
- <td>inheriting constructors</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>12.9</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1890.pdf">N1890</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1898.pdf">N1898</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2512.html">N2512</a>
- </td>
-</tr>
-<tr>
- <td>In-declaration member initialization</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2628.html">N2628</a></td>
-</tr>
-<tr>
- <td>Changes to implicitly generated methods</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>Includes implicit generation of move operations</td>
-</tr>
-<tr>
- <td>defaulted methods</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1717.pdf">N1717</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.html">N2326</a>
- </td>
-</tr>
-<tr>
- <td>destructor defaults to noexcept</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>sizeof on members without object instance</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2150.html">N2150</a></td>
-</tr>
-<tr>
- <td>virtual function safety modifications</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>Explicit conversion operators</td>
- <td class="complete" align="center"></td>
- <td class="basic" align="center"></td>
- <td class="basic" align="center"></td>
- <td class="broken"></td>
- <td>12.3</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2437.pdf">N2437</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2333.html">N2333</a>
- No name mangling; ASTs don't contain calls to conversion operators</td>
-</tr>
-<tr><td colspan="7" class="category">Template Modifications</td></tr>
-<tr>
- <td>Right angle brackets</td>
- <td class="complete" align="center"></td>
- <td class="na" align="center">N/A</td>
- <td class="na" align="center">N/A</td>
- <td class="na">N/A</td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1757.html">N1757</a></td>
-</tr>
-<tr>
- <td>variadic templates</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td>14.6.3</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2080.pdf">N2080</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n2087.pdf">N2087</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2242.pdf">N2242</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2488.pdf">N2488</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2555.pdf">N2555</a>
- </td>
-</tr>
-<tr>
- <td>template aliases</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td>7.1.3, 14.6.7</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2003/n1489.pdf">N1489</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2258.pdf">N2258</a>
- </td>
-</tr>
-<tr>
- <td>Removal of export</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td></td>
- <td>This was never implemented in C++03</td>
-</tr>
-<tr>
- <td>extern templates</td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td class="complete"></td>
- <td>14.8.2</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1987.htm">N1987</a></td>
-</tr>
-<tr>
- <td>Local classes as template parameters</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2402.pdf">N2402</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm">N2657</a>
- </td>
-</tr>
-<tr><td colspan="7" class="category">Exception Modifications</td></tr>
-<tr>
- <td>Deprecation of exception specifications</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>15.4</td>
- <td></td>
-</tr>
-<tr>
- <td>noexcept</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="na">N/A</td>
- <td>5.3.7, 15.4</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3050.html">N3050</a></td>
-</tr>
-<tr><td colspan="7" class="category">Preprocessor Modifications</td></tr>
-<tr>
- <td>__STDC_HOSTED__</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>16.8</td>
- <td>C99
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
- </td>
-</tr>
-<tr>
- <td>_Pragma</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>16.9</td>
- <td>C99
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
- </td>
-</tr>
-<tr>
- <td>Variable argument macros</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>16.3</td>
- <td>C99
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
- </td>
-</tr>
-<tr>
- <td>Empty macro arguments</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>16.3</td>
- <td>C99
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
- </td>
-</tr>
-<tr>
- <td>__func__</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>8.4.1</td>
- <td>C99
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1568.htm">N1568</a>
- </td>
-</tr>
-<tr>
- <td>__cplusplus</td>
- <td class="complete"></td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td class="na">N/A</td>
- <td>16.8</td>
- <td></td>
-</tr>
-<tr><td colspan="7" class="category">Things Completely New</td></tr>
-<tr>
- <td>Late-specified return type</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="na">N/A</td>
- <td>8.3.5</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2445.html">N2445</a></td>
-</tr>
-<tr>
- <td>lambda expressions</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>5.1.2</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1968.htm">N1968</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2550.pdf">N2550</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2859.pdf">N2859</a>
- </td>
-</tr>
-<tr>
- <td>Uniform initializers </td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>12.6</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2215.pdf">N2215</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2640.pdf">N2640</a>
- </td>
-</tr>
-<tr>
- <td>Memory model</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>1.7</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2556.html">N2556</a></td>
-</tr>
-<tr><td colspan="7" class="category">Miscellania</td></tr>
-<tr>
- <td>Standard attribute syntax</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2418.pdf">N2418</a></td>
-</tr>
-<tr>
- <td>alignment control</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
-</tr>
-<tr>
- <td>Deleted functions</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="medium" align="center"></td>
- <td class="na">N/A</td>
- <td>8.4.3</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2326.htm">N2326</a></br>
- This also includes class methods.</td>
-</tr>
-<tr>
- <td>static_assert</td>
- <td class="complete" align="center"></td>
- <td class="complete" align="center"></td>
- <td class="advanced" align="center"></td>
- <td class="na">N/A</td>
- <td>7</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1381.htm">N1381</a>
- <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1720.pdf">N1720</a>
- </td>
-</tr>
-<tr>
- <td>Inline namespaces</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">&#x2713;</td>
- <td class="complete" align="center">N/A</td>
- <td>7.3.1</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2535.htm">N2535</a></td>
-</tr>
-<tr>
- <td>thread_local storage</td>
- <td></td>
- <td></td>
- <td></td>
- <td></td>
- <td>3.7.2, 7.1.1</td>
- <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm">N2660</a></td>
-</tr>
-<tr><td colspan="7" class="category">Standard Library Modifications, see <a href="http://libcxx.llvm.org/index.html">libc++</a> or <a href="http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt01ch01.html#manual.intro.status.standard.200x">libstdc++</a> or <a href="http://blogs.msdn.com/b/vcblog/archive/2010/07/02/video-introduction-to-the-stl-part-1.aspx">VC++ 2010</a></td></tr>
+ <tr class="separator">
+ <th align="center" colspan="3" bgcolor="#ffddaa">C99 Features in C++0x</th>
+ </tr>
+ <tr>
+ <td><code>__func__</code> predefined identifier</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2340.htm">N2340</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>C99 preprocessor</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2004/n1653.htm">N1653</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td><code>long long</code></td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1811.pdf">N1811</a></td>
+ <td align="center">Clang 2.9</td>
+ </tr>
+ <tr>
+ <td>Extended integral types</td>
+ <td><a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1988.pdf">N1988</a></td>
+ <td align="center">No</td>
+ </tr>
</table>
<br />
</div>
diff --git a/www/demo/index.cgi b/www/demo/index.cgi
index b29efb60e9cc..901b009dbdea 100644
--- a/www/demo/index.cgi
+++ b/www/demo/index.cgi
@@ -269,7 +269,7 @@ sub try_run {
alarm 0;
};
if ( $@ and $@ =~ /timeout/ ) {
- barf("Program $program took too long, compile time limited for the web script, sorry!.\n");
+ barf("Program $program took too long, compile time limited for the web script, sorry!\n");
}
if ( -s $outputFile ) {
print scalar dumpFile( "Output from $program", $outputFile );
diff --git a/www/diagnostics.html b/www/diagnostics.html
index 48d222abb2f2..b3b168b88836 100644
--- a/www/diagnostics.html
+++ b/www/diagnostics.html
@@ -104,10 +104,8 @@ quickly.</p>
<h2>No Pretty Printing of Expressions in Diagnostics</h2>
<p>Since Clang has range highlighting, it never needs to pretty print your code
-back out to you. This is particularly bad in G++ (which often emits errors
-containing lowered vtable references), but even GCC can produce
-inscrutible error messages in some cases when it tries to do this. In this
-example P and Q have type "int*":</p>
+back out to you. GCC can produce inscrutible error messages in some cases when
+it tries to do this. In this example P and Q have type "int*":</p>
<pre>
$ <b>gcc-4.2 -fsyntax-only t.c</b>
@@ -118,6 +116,31 @@ example P and Q have type "int*":</p>
<font color="blue"> ~~~~~^</font>
</pre>
+<p>This can be particularly bad in G++, which often emits errors
+ containing lowered vtable references. For example:</p>
+
+<pre>
+ $ <b>cat t.cc</b>
+ struct a {
+ virtual int bar();
+ };
+
+ struct foo : public virtual a {
+ };
+
+ void test(foo *P) {
+ return P->bar() + *P;
+ }
+ $ <b>gcc-4.2 t.cc</b>
+ t.cc: In function 'void test(foo*)':
+ t.cc:9: error: no match for 'operator+' in '(((a*)P) + (*(long int*)(P-&gt;foo::&lt;anonymous&gt;.a::_vptr$a + -0x00000000000000020)))-&gt;a::bar() + * P'
+ t.cc:9: error: return-statement with a value, in function returning 'void'
+ $ <b>clang t.cc</b>
+ t.cc:9:18: <font color="red">error:</font> invalid operands to binary expression ('int' and 'foo')
+ <font color="darkgreen"> return P->bar() + *P;</font>
+ <font color="blue"> ~~~~~~~~ ^ ~~</font>
+</pre>
+
<h2>Typedef Preservation and Selective Unwrapping</h2>
@@ -169,7 +192,7 @@ namespace myapp {
}
using namespace myapp;
-void addHTTPService(servers::Server const &server, ::services::WebService const *http) {
+void addHTTPService(servers::Server const &amp;server, ::services::WebService const *http) {
server += http;
}
</pre>
diff --git a/www/get_involved.html b/www/get_involved.html
index a383d7013225..eb9a97945b06 100644
--- a/www/get_involved.html
+++ b/www/get_involved.html
@@ -54,7 +54,36 @@ href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits">cfe-commits mailing
list</a>. All of these lists have archives, so you can browse through previous
discussions or follow the list development on the web if you prefer.</p>
-<p>If you're looking for something to work on, check out our <a href="OpenProjects.html">Open Projects</a> page or go look through the <a href="http://llvm.org/bugs/">Bugzilla bug database.</p>
+<p>If you're looking for something to work on, check out our <a href="OpenProjects.html">Open Projects</a> page or go look through the <a href="http://llvm.org/bugs/">Bugzilla bug database</a>.</p>
+
+<h2 name="criteria">Contributing Extensions to Clang</h2>
+
+<p>Clang has always been designed as a platform for experimentation,
+allowing programmers to easily extend the compiler to support great
+new language features and tools. At some point, the authors of these
+extensions may propose that the extensions become a part of Clang
+itself, to benefit the whole Clang community. But not every idea--not
+even every great idea--should become part of Clang. Extensions
+(particularly language extensions) pose a long-term maintenance burden
+on Clang, and therefore the benefits of the extension must outweight
+those costs. Hence, these are the seven criteria used to evaluate the
+merits of a proposed extension:</p>
+
+<ol>
+ <li>Evidence of a significant user community: This is based on a number of factors, including an actual, existing user community, the perceived likelihood that users would adopt such a feature if it were available, and any "trickle-down" effects that come from, e.g., a library adopting the feature and providing benefits to its users.</li>
+
+ <li>A specific need to reside within the Clang tree: There are some extensions that would be better expressed as a separate tool, and should remain as separate tools even if they end up being hosted as part of the LLVM umbrella project.</li>
+
+ <li>A complete specification: The specification must be sufficient to understand the design of the feature as well as interpret the meaning of specific examples. The specification should be detailed enough that another compiler vendor could conceivably implement the feature.</li>
+
+ <li>Representation within the appropriate governing organization: For extensions to a language governed by a standards committee (C, C++, OpenCL), the extension itself must have an active proposal and proponent within that committee and have a reasonable chance of acceptance. Clang should drive the standard, not diverge from it. This criterion does not apply to all extensions, since some extensions fall outside of the realm of the standards bodies.</li>
+
+ <li>A long-term support plan: Contributing a non-trivial extension to Clang implies a commitment to supporting that extension, improving the implementation and specification as Clang evolves. The capacity of the contributor to make that commitment is as important as the commitment itself.</li>
+
+ <li>A high-quality implementation: The implementation must fit well into Clang's architecture, follow LLVM's coding conventions, and meet Clang's quality standards, including high-quality diagnostics and rich AST representations. This is particularly important for language extensions, because users will learn how those extensions work through the behavior of the compiler.</li>
+
+ <li>A proper test suite: Extensive testing is crucial to ensure that the language extension is not broken by ongoing maintenance in Clang. The test suite should be complete enough that another compiler vendor could conceivably validate their implementation of the feature against it.</li>
+</ol>
</div>
</body>
diff --git a/www/get_started.html b/www/get_started.html
index f8745f96bcbc..515cd57ce259 100644
--- a/www/get_started.html
+++ b/www/get_started.html
@@ -165,7 +165,7 @@ Visual Studio:</p>
more information on other configuration options for cmake.</li>
</li>
<li>The above, if successful, will have created an LLVM.sln file in the
- llvm directory.
+ <tt>build</tt> directory.
</ul>
<li>Build Clang:</li>
<ul>
diff --git a/www/hacking.html b/www/hacking.html
index 969a39c55998..b65768c9873a 100644
--- a/www/hacking.html
+++ b/www/hacking.html
@@ -86,6 +86,28 @@
</ul>
<!--=====================================================================-->
+ <h3 id="debuggingVisualStudio">Debugging using Visual Studio</h3>
+ <!--=====================================================================-->
+
+ <p>The file <tt>utils/clangVisualizers.txt</tt> provides debugger visualizers that make debugging
+ of more complex data types much easier.</p>
+ <p>There are two ways to install them:</p>
+
+ <ul>
+ <li>Put the path to <tt>clangVisualizers.txt</tt> in the environment variable called
+ <tt>_vcee_autoexp</tt>. This method should work for Visual Studio 2008 and above.
+ </li>
+ <li>Edit your local <tt>autoexp.dat</tt> (make sure you make a backup first!),
+ located in <tt>Visual Studio Directory\Common7\Packages\Debugger</tt> and append
+ the contents of <tt>clangVisuailzers.txt</tt> to it. This method should work for
+ Visual Studio 2005 and above.
+ </li>
+ </ul>
+
+ <p><i>[Note: To disable the visualizer for any specific variable, type
+ <tt>variable_name,!</tt> inside the watch window.]</i></p>
+
+ <!--=====================================================================-->
<h2 id="testing">Testing</h2>
<!--=====================================================================-->
diff --git a/www/index.html b/www/index.html
index 623f7198827a..095eed790df8 100644
--- a/www/index.html
+++ b/www/index.html
@@ -94,7 +94,7 @@
targeting X86-32, X86-64, and ARM (other targets may have caveats, but are
usually easy to fix). If you are looking for source analysis or
source-to-source transformation tools, clang is probably a great
- solution for you. Clang does not support C++'0x yet, please see the <a
+ solution for you. Clang does not support C++'11 yet, please see the <a
href="cxx_status.html">C++ status</a> page for more
information.</p>
diff --git a/www/menu.html.incl b/www/menu.html.incl
index 4acfbe54f966..878e678f64ac 100644
--- a/www/menu.html.incl
+++ b/www/menu.html.incl
@@ -53,8 +53,9 @@
</div>
<div class="submenu">
- <label>Events</label>
- <a href="http://llvm.org/devmtg/2009-10/">October 2, 2009 - LLVM/Clang Developer Meeting</a>
+ <label>Clang Events</label>
+ <a href="http://llvm.org/devmtg/2009-10/">October 2009</a>
+ <a href="http://llvm.org/devmtg/2010-11/">November 2010</a>
</div>
</div>