Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 22 Dec 2012 15:00:54 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r244592 - in vendor/clang/dist: docs include/clang/Sema lib/Basic lib/Driver lib/Parse lib/Sema test/CXX/basic/basic.scope/basic.scope.local test/Parser
Message-ID:  <201212221500.qBMF0sRj098221@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat Dec 22 15:00:54 2012
New Revision: 244592
URL: http://svnweb.freebsd.org/changeset/base/244592

Log:
  Vendor import of clang tags/RELEASE_32/final r170710 (effectively, 3.2
  release):
  http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_32/final@170710

Modified:
  vendor/clang/dist/docs/ReleaseNotes.html
  vendor/clang/dist/include/clang/Sema/Scope.h
  vendor/clang/dist/lib/Basic/Version.cpp
  vendor/clang/dist/lib/Driver/ToolChains.cpp
  vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp
  vendor/clang/dist/lib/Parse/ParseStmt.cpp
  vendor/clang/dist/lib/Sema/IdentifierResolver.cpp
  vendor/clang/dist/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp
  vendor/clang/dist/test/Parser/bracket-crash.cpp

Modified: vendor/clang/dist/docs/ReleaseNotes.html
==============================================================================
--- vendor/clang/dist/docs/ReleaseNotes.html	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/docs/ReleaseNotes.html	Sat Dec 22 15:00:54 2012	(r244592)
@@ -43,12 +43,6 @@ td {
   <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>
 <!-- ======================================================================= -->
@@ -91,7 +85,7 @@ explain them more clearly, and provide m
 them. The improvements since the 3.1 release include:</p>
 
 <ul>
-  <li><tt>-Wuninitialized</tt> has been taught to recognise uninitialized uses
+  <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:
 
@@ -170,14 +164,11 @@ int f(vector&lt;map&lt;int, double&gt;&g
 
   </li>
 
-  <li>Clang's <tt>-fcatch-undefined-behavior</tt> option has been renamed to
-  <tt>-fsanitize=undefined</tt> and has grown the ability to check for several
-  new types of undefined behavior. See the Users Manual for more information.
-
-  <!-- Flesh this out prior to release. -->
-
-  <!-- Document renaming of -faddress-sanitizer and -fthread-sanitizer. -->
-
+  <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>
@@ -215,6 +206,35 @@ function call.</p>
 <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 &amp;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>
 <!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
@@ -239,7 +259,8 @@ attributes in Clang language extensions 
 
 <h4 id="c11changes">C11 Feature Support</h4>
 
-<p>...</p>
+<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>
@@ -247,40 +268,42 @@ attributes in Clang language extensions 
 
 <h4 id="cxx11changes">C++11 Feature Support</h4>
 
-<p>...</p>
+<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>
 
-<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
-<h3 id="objcchanges">Objective-C Language Changes in Clang</h3>
-<!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
-
-<p>...</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="apichanges">Internal API Changes</h3>
+<h3 id="objcchanges">Objective-C Language Changes in Clang</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>
+<p>Bug-fixes, no functionality changes.</p>
 
 <!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
 <h3 id="pythonchanges">Python Binding Changes</h3>
 <!-- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = -->
 
-The following methods have been added:
+The following classes and methods have been added:
 <ul>
-  <li>...</li>
+   <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="knownproblems">Significant Known Problems</h2>
-<!-- ======================================================================= -->
-
-<!-- ======================================================================= -->
 <h2 id="additionalinfo">Additional Information</h2>
 <!-- ======================================================================= -->
 
@@ -296,17 +319,6 @@ The following methods have been added:
    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>

Modified: vendor/clang/dist/include/clang/Sema/Scope.h
==============================================================================
--- vendor/clang/dist/include/clang/Sema/Scope.h	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/include/clang/Sema/Scope.h	Sat Dec 22 15:00:54 2012	(r244592)
@@ -84,11 +84,18 @@ public:
     /// TryScope - This is the scope of a C++ try statement.
     TryScope = 0x1000,
 
+    /// CatchScope - This is the scope of a C++ catch statement.
+    CatchScope = 0x2000,
+
+    /// FnTryCatchScope - This is the scope for a function-level C++ try or
+    /// catch scope.
+    FnTryCatchScope = 0x4000,
+
     /// FnTryScope - This is the scope of a function-level C++ try scope.
-    FnTryScope = 0x3000,
+    FnTryScope = TryScope | FnTryCatchScope,
 
     /// FnCatchScope - This is the scope of a function-level C++ catch scope.
-    FnCatchScope = 0x4000
+    FnCatchScope = CatchScope | FnTryCatchScope
   };
 private:
   /// The parent scope for this scope.  This is null for the translation-unit

Modified: vendor/clang/dist/lib/Basic/Version.cpp
==============================================================================
--- vendor/clang/dist/lib/Basic/Version.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/lib/Basic/Version.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -32,7 +32,7 @@ std::string getClangRepositoryPath() {
 
   // If the SVN_REPOSITORY is empty, try to use the SVN keyword. This helps us
   // pick up a tag in an SVN export, for example.
-  static StringRef SVNRepository("$URL: http://llvm.org/svn/llvm-project/cfe/branches/release_32/lib/Basic/Version.cpp $");
+  static StringRef SVNRepository("$URL: http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_32/final/lib/Basic/Version.cpp $");
   if (URL.empty()) {
     URL = SVNRepository.slice(SVNRepository.find(':'),
                               SVNRepository.find("/lib/Basic"));

Modified: vendor/clang/dist/lib/Driver/ToolChains.cpp
==============================================================================
--- vendor/clang/dist/lib/Driver/ToolChains.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/lib/Driver/ToolChains.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -1855,6 +1855,8 @@ enum LinuxDistro {
   UbuntuNatty,
   UbuntuOneiric,
   UbuntuPrecise,
+  UbuntuQuantal,
+  UbuntuRaring,
   UnknownDistro
 };
 
@@ -1872,7 +1874,7 @@ static bool IsDebian(enum LinuxDistro Di
 }
 
 static bool IsUbuntu(enum LinuxDistro Distro) {
-  return Distro >= UbuntuHardy && Distro <= UbuntuPrecise;
+  return Distro >= UbuntuHardy && Distro <= UbuntuRaring;
 }
 
 static LinuxDistro DetectLinuxDistro(llvm::Triple::ArchType Arch) {
@@ -1894,6 +1896,8 @@ static LinuxDistro DetectLinuxDistro(llv
           .Case("natty", UbuntuNatty)
           .Case("oneiric", UbuntuOneiric)
           .Case("precise", UbuntuPrecise)
+          .Case("quantal", UbuntuQuantal)
+          .Case("raring", UbuntuRaring)
           .Default(UnknownDistro);
     return Version;
   }

Modified: vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp
==============================================================================
--- vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -706,8 +706,7 @@ SourceLocation Parser::ParseDecltypeSpec
       if (SkipUntil(tok::r_paren, /*StopAtSemi=*/true, /*DontConsume=*/true)) {
         EndLoc = ConsumeParen();
       } else {
-        assert(Tok.is(tok::semi));
-        if (PP.isBacktrackEnabled()) {
+        if (PP.isBacktrackEnabled() && Tok.is(tok::semi)) {
           // Backtrack to get the location of the last token before the semi.
           PP.RevertCachedTokens(2);
           ConsumeToken(); // the semi.

Modified: vendor/clang/dist/lib/Parse/ParseStmt.cpp
==============================================================================
--- vendor/clang/dist/lib/Parse/ParseStmt.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/lib/Parse/ParseStmt.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -2197,7 +2197,7 @@ StmtResult Parser::ParseCXXCatchBlock(bo
   // The name in a catch exception-declaration is local to the handler and
   // shall not be redeclared in the outermost block of the handler.
   ParseScope CatchScope(this, Scope::DeclScope | Scope::ControlScope |
-                          (FnCatch ? Scope::FnCatchScope : 0));
+                          (FnCatch ? Scope::FnCatchScope : Scope::CatchScope));
 
   // exception-declaration is equivalent to '...' or a parameter-declaration
   // without default arguments.

Modified: vendor/clang/dist/lib/Sema/IdentifierResolver.cpp
==============================================================================
--- vendor/clang/dist/lib/Sema/IdentifierResolver.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/lib/Sema/IdentifierResolver.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -135,16 +135,13 @@ bool IdentifierResolver::isDeclInScope(D
       // of the controlled statement.
       //
       assert(S->getParent() && "No TUScope?");
-      if (S->getFlags() & Scope::FnTryScope)
-        return S->getParent()->isDeclScope(D);
       if (S->getParent()->getFlags() & Scope::ControlScope) {
-        if (S->getParent()->getFlags() & Scope::FnCatchScope) {
-          S = S->getParent();
-          if (S->isDeclScope(D))
-            return true;
-        }
-        return S->getParent()->isDeclScope(D);
+        S = S->getParent();
+        if (S->isDeclScope(D))
+          return true;
       }
+      if (S->getFlags() & Scope::FnTryCatchScope)
+        return S->getParent()->isDeclScope(D);
     }
     return false;
   }

Modified: vendor/clang/dist/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp
==============================================================================
--- vendor/clang/dist/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/test/CXX/basic/basic.scope/basic.scope.local/p2.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -35,3 +35,26 @@ void func7() {
     int i; // expected-error{{redefinition of 'i'}}
   }
 }
+
+void func8() {
+  int i;
+  try {
+    int i;
+  } catch (...) {
+  }
+}
+
+void func9() {
+  if (bool b = true)
+    try {
+      int b; // FIXME: this probably should be invalid, maybe
+    } catch (...) {
+    }
+}
+
+void func10() {
+  if (bool b = true)
+    if (true) {
+      int b; // FIXME: decide whether this is valid
+    }
+}

Modified: vendor/clang/dist/test/Parser/bracket-crash.cpp
==============================================================================
--- vendor/clang/dist/test/Parser/bracket-crash.cpp	Sat Dec 22 14:59:27 2012	(r244591)
+++ vendor/clang/dist/test/Parser/bracket-crash.cpp	Sat Dec 22 15:00:54 2012	(r244592)
@@ -4,3 +4,6 @@ decltype(;
 struct{
   a
 }
+
+// PR14549. Must be at end of file.
+decltype(



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201212221500.qBMF0sRj098221>