aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2014-01-01 00:37:42 +0000
committerDimitry Andric <dim@FreeBSD.org>2014-01-01 00:37:42 +0000
commit33fa48314f06936f83859852feb3c0ce68b08c0c (patch)
tree6093927642346f0672b480cbc4b6c2a1b26b8a64
parentbfef399519ca9b8a4b4c6b563253bad7e0eeffe0 (diff)
Vendor import of clang RELEASE_34/final tag r197956 (effectively, 3.4 release):vendor/clang/clang-release_34-r197956
Notes
Notes: svn path=/vendor/clang/dist/; revision=260148 svn path=/vendor/clang/clang-release_34-r197956/; revision=260149; tag=vendor/clang/clang-release_34-r197956
-rw-r--r--docs/ReleaseNotes.rst29
-rw-r--r--lib/Basic/Version.cpp2
-rw-r--r--lib/Parse/ParseDeclCXX.cpp8
-rw-r--r--test/Parser/recovery.cpp6
4 files changed, 28 insertions, 17 deletions
diff --git a/docs/ReleaseNotes.rst b/docs/ReleaseNotes.rst
index ec0dbffed079..453110e650aa 100644
--- a/docs/ReleaseNotes.rst
+++ b/docs/ReleaseNotes.rst
@@ -18,23 +18,22 @@ documentation <http://llvm.org/docs/ReleaseNotes.html>`_. All LLVM
releases may be downloaded from the `LLVM releases web
site <http://llvm.org/releases/>`_.
-For more information about Clang or LLVM, including information about
-the latest release, please check out the main `Clang Web
-Site <http://clang.llvm.org>`_ or the `LLVM Web
-Site <http://llvm.org>`_.
+For more information about Clang or LLVM, including information about the
+latest release, please check out the main `Clang Web Site
+<http://clang.llvm.org>`_ or the `LLVM Web Site <http://llvm.org>`_.
-Note that if you are reading this file from a Subversion checkout or the
-main Clang web page, this document applies to the *next* release, not
-the current one. To see the release notes for a specific release, please
-see the `releases page <http://llvm.org/releases/>`_.
+Note that if you are reading this file from a Subversion checkout or the main
+Clang web page, this document applies to the *next* release, not the current
+one. To see the release notes for a specific release, please see the `releases
+page <http://llvm.org/releases/>`_.
What's New in Clang 3.4?
========================
-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.
+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.
Last release which will build as C++98
--------------------------------------
@@ -58,9 +57,9 @@ Major New Features
Improvements to Clang's diagnostics
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-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.3 release include:
+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.3 release include:
- -Wheader-guard warns on mismatches between the #ifndef and #define lines
in a header guard.
diff --git a/lib/Basic/Version.cpp b/lib/Basic/Version.cpp
index 4a2b1fccb24e..77e4ad5bc4aa 100644
--- a/lib/Basic/Version.cpp
+++ b/lib/Basic/Version.cpp
@@ -36,7 +36,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.
- StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/branches/release_34/lib/Basic/Version.cpp $");
+ StringRef SVNRepository("$URL: https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/final/lib/Basic/Version.cpp $");
if (URL.empty()) {
URL = SVNRepository.slice(SVNRepository.find(':'),
SVNRepository.find("/lib/Basic"));
diff --git a/lib/Parse/ParseDeclCXX.cpp b/lib/Parse/ParseDeclCXX.cpp
index 16d06d7d152c..dd29f99ffc71 100644
--- a/lib/Parse/ParseDeclCXX.cpp
+++ b/lib/Parse/ParseDeclCXX.cpp
@@ -1427,7 +1427,13 @@ void Parser::ParseClassSpecifier(tok::TokenKind TagTokKind,
<< DeclSpec::getSpecifierName(TagType);
}
- SkipUntil(tok::comma, StopAtSemi);
+ // If we are parsing a definition and stop at a base-clause, continue on
+ // until the semicolon. Continuing from the comma will just trick us into
+ // thinking we are seeing a variable declaration.
+ if (TUK == Sema::TUK_Definition && Tok.is(tok::colon))
+ SkipUntil(tok::semi, StopBeforeMatch);
+ else
+ SkipUntil(tok::comma, StopAtSemi);
return;
}
diff --git a/test/Parser/recovery.cpp b/test/Parser/recovery.cpp
index b5b09484ad9e..4bed2570fcba 100644
--- a/test/Parser/recovery.cpp
+++ b/test/Parser/recovery.cpp
@@ -119,3 +119,9 @@ void MissingSemiInFunction() {
struct Inner4 {} // ok, no missing ';' here
Inner5;
}
+
+namespace PR17084 {
+enum class EnumID {};
+template <typename> struct TempID;
+template <> struct TempID<BadType> : BadType, EnumID::Garbage; // expected-error{{use of undeclared identifier 'BadType'}}
+}