[llvm-commits] [www-releases] r170859 - in /www-releases/trunk/3.2/tools: ./ clang/ clang/docs/ clang/docs/ReleaseNotes.html

Pawel Wodnicki pawel at 32bitmicro.com
Thu Dec 20 23:51:16 PST 2012


Author: pawel
Date: Fri Dec 21 01:51:16 2012
New Revision: 170859

URL: http://llvm.org/viewvc/llvm-project?rev=170859&view=rev
Log:
add clang docs

Added:
    www-releases/trunk/3.2/tools/
    www-releases/trunk/3.2/tools/clang/
    www-releases/trunk/3.2/tools/clang/docs/
    www-releases/trunk/3.2/tools/clang/docs/ReleaseNotes.html

Added: www-releases/trunk/3.2/tools/clang/docs/ReleaseNotes.html
URL: http://llvm.org/viewvc/llvm-project/www-releases/trunk/3.2/tools/clang/docs/ReleaseNotes.html?rev=170859&view=auto
==============================================================================
--- www-releases/trunk/3.2/tools/clang/docs/ReleaseNotes.html (added)
+++ www-releases/trunk/3.2/tools/clang/docs/ReleaseNotes.html Fri Dec 21 01:51:16 2012
@@ -0,0 +1,325 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
+          "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<title>Clang 3.2 Release Notes</title>
+<link type="text/css" rel="stylesheet" href="../menu.css">
+<link type="text/css" rel="stylesheet" href="../content.css">
+<style type="text/css">
+td {
+	vertical-align: top;
+}
+</style>
+</head>
+<body>
+
+<!--#include virtual="../menu.html.incl"-->
+
+<div id="content">
+
+<h1>Clang 3.2 Release Notes</h1>
+
+<img style="float:right" src="http://llvm.org/img/DragonSmall.png"
+     width="136" height="136" alt="LLVM Dragon Logo">
+
+<ul>
+  <li><a href="#intro">Introduction</a></li>
+  <li><a href="#whatsnew">What's New in Clang 3.2?</a>
+    <ul>
+      <li><a href="#majorfeatures">Major New Features</a></li>
+      <li><a href="#newflags">New Compiler Flags</a></li>
+      <li><a href="#cchanges">C Language Changes</a></li>
+      <li><a href="#cxxchanges">C++ Language Changes</a></li>
+      <li><a href="#objcchanges">Objective-C Language Changes</a></li>
+      <li><a href="#apichanges">Internal API Changes</a></li>
+      <li><a href="#pythonchanges">Python Binding Changes</a></li>
+    </ul>
+  </li>
+  <li><a href="#knownproblems">Known Problems</a></li>
+  <li><a href="#additionalinfo">Additional Information</a></li>
+</ul>
+
+<div class="doc_author">
+  <p>Written by the <a href="http://llvm.org/">LLVM Team</a></p>
+</div>
+
+<!-- ======================================================================= -->
+<h2 id="intro">Introduction</h2>
+<!-- ======================================================================= -->
+
+<p>This document contains the release notes for the Clang C/C++/Objective-C
+   frontend, part of the LLVM Compiler Infrastructure, release 3.2.  Here we
+   describe the status of Clang in some detail, including major improvements
+   from the previous release and new feature work. For the general LLVM release
+   notes, see <a href="http://llvm.org/docs/ReleaseNotes.html">the LLVM
+   documentation</a>. All LLVM releases may be downloaded from the
+   <a href="http://llvm.org/releases/">LLVM releases web site</a>.</p>
+
+<p>For more information about Clang or LLVM, including information about the
+   latest release, please check out the main please see the
+   <a href="http://clang.llvm.org">Clang Web Site</a> or the
+   <a href="http://llvm.org">LLVM Web Site</a>.
+
+<p>Note that if you are reading this file from a Subversion checkout or the main
+   Clang web page, this document applies to the <i>next</i> release, not the
+   current one.  To see the release notes for a specific release, please see the
+   <a href="http://llvm.org/releases/">releases page</a>.</p>
+
+<!-- ======================================================================= -->
+<h2 id="whatsnew">What's New in Clang 3.2?</h2>
+<!-- ======================================================================= -->
+
+<p>Some of the major new features and improvements to Clang are listed here.
+  Generic improvements to Clang as a whole or to its underlying infrastructure
+  are described first, followed by language-specific sections with improvements
+  to Clang's support for those languages.</p>
+
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<h3 id="majorfeatures">Major New Features</h3>
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+
+<h4 id="diagnostics">Improvements to Clang's diagnostics</h4>
+
+<p>Clang's diagnostics are constantly being improved to catch more issues,
+explain them more clearly, and provide more accurate source information about
+them. The improvements since the 3.1 release include:</p>
+
+<ul>
+  <li><tt>-Wuninitialized</tt> has been taught to recognize uninitialized uses
+  which always occur when an explicitly-written non-constant condition is either
+  <tt>true</tt> or <tt>false</tt>. For example:
+
+<pre>
+int f(bool b) {
+  int n;
+  if (b)
+    n = 1;
+  return n;
+}
+
+<b>sometimes-uninit.cpp:3:7: <span class="warning">warning:</span> variable 'n' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]</b>
+  if (b)
+      <span class="caret">^</span>
+<b>sometimes-uninit.cpp:5:10: <span class="note">note:</span></b> uninitialized use occurs here
+  return n;
+         <span class="caret">^</span>
+<b>sometimes-uninit.cpp:3:3: <span class="note">note:</span></b> remove the 'if' if its condition is always true
+  if (b)
+  <span class="caret">^~~~~~</span>
+<b>sometimes-uninit.cpp:2:8: <span class="note">note:</span></b> initialize the variable 'n' to silence this warning
+  int n;
+       <span class="caret">^</span>
+       <span class="caret"> = 0</span>
+</pre>
+
+  This functionality can be enabled or disabled separately from
+  <tt>-Wuninitialized</tt> with the <tt>-Wsometimes-uninitialized</tt> warning
+  flag.</li>
+
+  <li>Template type diffing improves the display of diagnostics with templated
+  types in them.
+
+<pre>
+int f(vector<map<int, double>>);
+int x = f(vector<map<int, float>>());
+</pre>
+  The error message is the same, but the note is different based on the options selected.
+<pre>
+<b>template-diff.cpp:5:9: <span class="error">error:</span> no matching function for call to 'f'</b>
+int x = f(vector<map<int, float>>());
+        <span class="caret">^</span>
+</pre>
+  Templated type diffing with type elision (default):
+<pre>
+<b>template-diff.cpp:4:5: <span class="note">note:</span></b> candidate function not viable: no known conversion from 'vector<map<[...], <span class="template-highlight">float</span>>>' to 'vector<map<[...], <span class="template-highlight">double</span>>>' for 1st argument;
+int f(vector<map<int, double>>);
+    <span class="caret">^</span>
+</pre>
+  Templated type diffing without type elision (-fno-elide-type):
+<pre>
+<b>template-diff.cpp:4:5: <span class="note">note:</span></b> candidate function not viable: no known conversion from 'vector<map<int, <span class="template-highlight">float</span>>>' to 'vector<map<int, <span class="template-highlight">double</span>>>' for 1st argument;
+int f(vector<map<int, double>>);
+    <span class="caret">^</span>
+</pre>
+  Templated tree printing with type elision (-fdiagnostics-show-template-tree):
+<pre>
+<b>template-diff.cpp:4:5: <span class="note">note:</span></b> candidate function not viable: no known conversion for 1st argument;
+  vector<
+    map<
+      [...],
+      [<span class="template-highlight">float</span> != <span class="template-highlight">double</span>]>>
+int f(vector<map<int, double>>);
+    <span class="caret">^</span>
+</pre>
+  Templated tree printing without type elision (-fdiagnostics-show-template-tree -fno-elide-type):
+<pre>
+<b>template-diff.cpp:4:5: <span class="note">note:</span></b> candidate function not viable: no known conversion for 1st argument;
+  vector<
+    map<
+      int,
+      [<span class="template-highlight">float</span> != <span class="template-highlight">double</span>]>>
+int f(vector<map<int, double>>);
+    <span class="caret">^</span>
+</pre>
+
+  </li>
+
+  <li>The Address Sanitizer feature and Clang's <tt>-fcatch-undefined-behavior</tt> option have been moved to a unified flag set: 
+  <tt>-fsanitize</tt>. This flag can be used to enable the different dynamic checking tools when building. For example,
+  <tt>-faddress-sanitizer</tt> is now <tt>-fsanitize=address</tt>, and <tt>-fcatch-undefined-behavior</tt> is now 
+  <tt>-fsanitize=undefined</tt>. With this release the set of checks available continues to grow, see the Clang
+  documentation and specific sanitizer notes below for details.
+  </li>
+
+</ul>
+
+<h4 id="tlsmodel">Support for <code>tls_model</code> attribute</h4>
+
+<p>Clang now supports the <code>tls_model</code> attribute, allowing code that
+uses thread-local storage to explicitly select which model to use. The available
+models are <code>"global-dynamic"</code>, <code>"local-dynamic"</code>,
+<code>"initial-exec"</code> and <code>"local-exec"</code>. See
+<a href="http://www.akkadia.org/drepper/tls.pdf">ELF Handling For Thread-Local
+ Storage</a> for more information.</p>
+
+<p>The compiler is free to choose a different model if the specified model is not
+supported by the target, or if the compiler determines that a more specific
+model can be used.
+</p>
+
+<h4>Type safety attributes</h4>
+<p>Clang now supports type safety attributes that allow checking during compile
+time that 'void *' function arguments and arguments for variadic functions are
+of a particular type which is determined by some other argument to the same
+function call.</p>
+
+<p>Usecases include:</p>
+<ul>
+<li>MPI library implementations, where these attributes enable checking that
+  buffer type matches the passed <code>MPI_Datatype</code>;</li>
+<li> HDF5 library -- similar usecase as for MPI;</li>
+<li> checking types of variadic functions' arguments for functions like
+<code>fcntl()</code> and <code>ioctl()</code>.</li>
+</ul>
+
+<p>See entries for <code>argument_with_type_tag</code>,
+<code>pointer_with_type_tag</code> and <code>type_tag_for_datatype</code>
+attributes in Clang language extensions documentation.</p>
+
+<h4>Documentation comment support</h4>
+<p>Clang now supports documentation comments written in a Doxygen-like syntax.
+Clang parses the comments and can detect syntactic and semantic errors in
+comments.  These warnings are off by default.  Pass <tt>-Wdocumentation</tt>
+flag to enable warnings about documentation comments.</p>
+
+<p>For example, given:</p>
+
+<pre>/// \param [in] Str the string.
+/// \returns a modified string.
+void do_something(const std::string &str);</pre>
+
+<p><tt>clang -Wdocumentation</tt> will emit two warnings:</p>
+
+<pre><b>doc-test.cc:3:6: <span class="warning">warning:</span></b> '\returns' command used in a comment that is attached to a function returning void [-Wdocumentation]
+/// \returns a modified string.
+    <span class="caret">~^~~~~~~~~~~~~~~~~~~~~~~~~~</span>
+<b>doc-test.cc:2:17: <span class="warning">warning:</span></b> parameter 'Str' not found in the function declaration [-Wdocumentation]
+/// \param [in] Str the string.
+                <span class="caret">^~~</span>
+<b>doc-test.cc:2:17: <span class="note">note:</span></b> did you mean 'str'?
+/// \param [in] Str the string.
+                <span class="caret">^~~</span>
+                <span class="caret">str</span></pre>
+
+<p>libclang includes a new API, <tt>clang_FullComment_getAsXML</tt>, to convert
+comments to XML documents.  This API can be used to build documentation
+extraction tools.</p>
+
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<h3 id="newflags">New Compiler Flags</h3>
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<ul>
+  <li><tt>-gline-tables-only</tt> controls the
+  <a href="http://clang.llvm.org/docs/UsersManual.html#debuginfosize">size of debug information</a>.
+  This flag tells Clang to emit debug info which is just enough to obtain stack traces with
+  function names, file names and line numbers (by such tools as gdb or addr2line).
+  Debug info for variables or function parameters is not produced, which reduces
+  the size of the resulting binary.
+
+  <li><tt>-ftls-model</tt> controls which TLS model to use for thread-local
+  variables. This can be overridden per variable using the
+  <a href="#tlsmodel"><tt>tls_model</tt> attribute</a> mentioned above.
+  For more details, see the <a href="UsersManual.html#opt_ftls-model">User's
+  Manual</a>.</li>
+</ul>
+
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<h3 id="cchanges">C Language Changes in Clang</h3>
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+
+<h4 id="c11changes">C11 Feature Support</h4>
+
+<p>Clang 3.2 adds support for the C11 <code>_Alignof</code> keyword, pedantic warning through option
+       <code>-Wempty-translation-unit</code> (C11 6.9p1) </p>
+
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<h3 id="cxxchanges">C++ Language Changes in Clang</h3>
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+
+<h4 id="cxx11changes">C++11 Feature Support</h4>
+
+<p>Clang 3.2 supports <a href="http://clang.llvm.org/cxx_status.html#cxx11">most of the language features</a> 
+       added in the latest ISO C++ standard,<a href="http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=50372">C++ 2011</a>.
+       Use <code>-std=c++11</code> or <code>-std=gnu++11</code> to enable support for these features. In addition to the features supported by Clang 3.1, the
+       following features have been added:</p>
+
+<ul>
+ <li>Implemented the C++11 discarded value expression rules for volatile lvalues.</li>
+ <li>Support for the C++11 enum forward declarations.</li>
+ <li>Handling of C++11 attribute namespaces (automatically).</li>
+ <li>Implemented C++11 [conv.prom]p4: an enumeration with a fixed underlying type has integral promotions 
+         to both its underlying type and to its underlying type's promoted type.</li>
+</ul>
+
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<h3 id="objcchanges">Objective-C Language Changes in Clang</h3>
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+
+<p>Bug-fixes, no functionality changes.</p>
+
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+<h3 id="pythonchanges">Python Binding Changes</h3>
+<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
+
+The following classes and methods have been added:
+<ul>
+   <li>class CompilationDatabaseError(Exception)</li>
+   <li>class CompileCommand(object)</li>
+   <li>class CompileCommands(object)</li>
+   <li>class CompilationDatabase(ClangObject)</li>
+  <li>Cursor.is_static_method</li>
+  <li>Cursor.is_static_method</li>
+  <li>SourceLocation.from_offset</li>
+  <li>Cursor.is_static_method</li>
+</ul>
+
+<!-- ======================================================================= -->
+<h2 id="additionalinfo">Additional Information</h2>
+<!-- ======================================================================= -->
+
+<p>A wide variety of additional information is available on the
+   <a href="http://clang.llvm.org/">Clang web page</a>.  The web page contains
+   versions of the API documentation which are up-to-date with the Subversion
+   version of the source code.  You can access versions of these documents
+   specific to this release by going into the "<tt>clang/doc/</tt>" directory in
+   the Clang tree.</p>
+
+<p>If you have any questions or comments about Clang, please feel free to
+   contact us via
+   the <a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev"> mailing
+   list</a>.</p>
+
+
+</div>
+</body>
+</html>





More information about the llvm-commits mailing list