Disable inherited constructors for 2.9.
llvm-svn: 127541
diff --git a/clang/include/clang/Basic/DiagnosticSemaKinds.td b/clang/include/clang/Basic/DiagnosticSemaKinds.td
index 3a6c43c..9a2d8d3 100644
--- a/clang/include/clang/Basic/DiagnosticSemaKinds.td
+++ b/clang/include/clang/Basic/DiagnosticSemaKinds.td
@@ -164,6 +164,8 @@
   "using declaration refers to its own class">;
 def err_using_decl_nested_name_specifier_is_not_base_class : Error<
   "using declaration refers into '%0', which is not a base class of %1">;
+def err_using_decl_inherited_constructor_unsupported : Error<
+  "inherited constructors are not supported">;
 def err_using_decl_constructor_not_in_direct_base : Error<
   "%0 is not a direct base of %1, can not inherit constructors">;
 def err_using_decl_constructor_conflict : Error<
diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp
index f655105..7a597be 100644
--- a/clang/lib/Sema/SemaDeclCXX.cpp
+++ b/clang/lib/Sema/SemaDeclCXX.cpp
@@ -2898,7 +2898,8 @@
   //   waste space and performance on classes that are not meant to be
   //   instantiated (e.g. meta-functions). This doesn't apply to classes that
   //   have inherited constructors.
-  DeclareInheritedConstructors(Record);
+  // Disabled for 2.9
+  //DeclareInheritedConstructors(Record);
 }
 
 /// \brief Data used with FindHiddenVirtualMethod
@@ -4324,8 +4325,11 @@
 
   // Constructor inheriting using decls get special treatment.
   if (NameInfo.getName().getNameKind() == DeclarationName::CXXConstructorName) {
-    if (CheckInheritedConstructorUsingDecl(UD))
-      UD->setInvalidDecl();
+    // Disabled for 2.9
+    Diag(UD->getLocation(),
+         diag::err_using_decl_inherited_constructor_unsupported);
+    //if (CheckInheritedConstructorUsingDecl(UD))
+    UD->setInvalidDecl();
     return UD;
   }
 
diff --git a/clang/test/CXX/special/class.inhctor/elsewhere.cpp b/clang/test/CXX/special/class.inhctor/elsewhere.cpp
index 82944d6..83eeb00 100644
--- a/clang/test/CXX/special/class.inhctor/elsewhere.cpp
+++ b/clang/test/CXX/special/class.inhctor/elsewhere.cpp
@@ -1,4 +1,6 @@
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
+// RUN: true
+// Disabled for 2.9
+//%clang_cc1 -std=c++0x -fsyntax-only -verify %s
 
 // Tests related to constructor inheriting, but not specified in [class.inhctor]
 
diff --git a/clang/test/CXX/special/class.inhctor/p3.cpp b/clang/test/CXX/special/class.inhctor/p3.cpp
index 021f701..be75b6c 100644
--- a/clang/test/CXX/special/class.inhctor/p3.cpp
+++ b/clang/test/CXX/special/class.inhctor/p3.cpp
@@ -1,4 +1,6 @@
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
+// RUN: true
+// Disabled for 2.9
+//%clang_cc1 -std=c++0x -fsyntax-only -verify %s
 
 struct B1 {
   B1(int);
diff --git a/clang/test/CXX/special/class.inhctor/p7.cpp b/clang/test/CXX/special/class.inhctor/p7.cpp
index 3ad761f..4f80896 100644
--- a/clang/test/CXX/special/class.inhctor/p7.cpp
+++ b/clang/test/CXX/special/class.inhctor/p7.cpp
@@ -1,4 +1,6 @@
-// RUN: %clang_cc1 -std=c++0x -fsyntax-only -verify %s
+// RUN: true
+// Disabled for 2.9
+//%clang_cc1 -std=c++0x -fsyntax-only -verify %s
 
 // Straight from the standard
 struct B1 {