<!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="#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>

<h1 style="color:red">These are in-progress notes for the upcoming Clang 3.2
release.<br>
You may prefer the
<a href="http://llvm.org/releases/3.1/docs/ClangReleaseNotes.html">Clang 3.1
Release Notes</a>.</h1>

<!-- ======================================================================= -->
<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 recognise 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>
</ul>


<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<h3 id="cchanges">C Language Changes in Clang</h3>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->

<h4 id="c11changes">C11 Feature Support</h4>

<p>...</p>

<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<h3 id="cxxchanges">C++ Language Changes in Clang</h3>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->

<h4 id="cxx11changes">C++11 Feature Support</h4>

<p>...</p>

<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<h3 id="objcchanges">Objective-C Language Changes in Clang</h3>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->

<p>...</p>

<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<h3 id="apichanges">Internal API Changes</h3>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->

<p>These are major API changes that have happened since the 3.1 release of
   Clang. If upgrading an external codebase that uses Clang as a library, this
   section should help get you past the largest hurdles of upgrading.</p>

<h4 id="api1">API change 1</h4>

<p>...</p>

<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
<h3 id="pythonchanges">Python Binding Changes</h3>
<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->

The following methods have been added:
<ul>
  <li>...</li>
</ul>

<!-- ======================================================================= -->
<h2 id="knownproblems">Significant Known Problems</h2>
<!-- ======================================================================= -->

<!-- ======================================================================= -->
<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>

<!-- ======================================================================= -->
<!-- Likely 3.1 release notes -->
<!-- ======================================================================= -->
<!--
This is just a section to hold things that have already gotten started and
should likely pick up proper release notes in 3.1.

- C1X and C++11 atomics infrastructure and support
- CUDA support?

-->

</div>
</body>
</html>
