From 5083e2623bb99c533d1c80553be374a8a1fa137f Mon Sep 17 00:00:00 2001 From: Fariborz Jahanian Date: Tue, 1 Sep 2009 23:08:16 +0000 Subject: [PATCH] After a conversation with Doug. I added a fix me to where we build the constructor's initializer list. llvm-svn: 80735 --- clang/lib/AST/DeclCXX.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index adcd3f9aa92e..96423104065b 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -609,6 +609,19 @@ CXXConstructorDecl::setBaseOrMemberInitializers( } if (HasDependentBaseInit) { + // FIXME. This does not preserve the ordering of the initializers. + // Try (with -Wreorder) + // template struct A {}; + // template struct B : A { + // B() : x1(10), A() {} + // int x1; + // }; + // B x; + // On seeing one dependent type, we should essentially exit this routine + // while preserving user-declared initializer list. When this routine is + // called during instantiatiation process, this routine will rebuild the + // oderdered initializer list correctly. + // If we have a dependent base initialization, we can't determine the // association between initializers and bases; just dump the known // initializers into the list, and don't try to deal with other bases.