diff options
Diffstat (limited to 'docs/ReleaseNotes.html')
-rw-r--r-- | docs/ReleaseNotes.html | 325 |
1 files changed, 0 insertions, 325 deletions
diff --git a/docs/ReleaseNotes.html b/docs/ReleaseNotes.html deleted file mode 100644 index a1ba15c..0000000 --- a/docs/ReleaseNotes.html +++ /dev/null @@ -1,325 +0,0 @@ -<!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> |