From 28309185b28034edc1b54c4e2a01c399f5097f28 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Wed, 12 Nov 2014 03:52:25 +0000 Subject: Mark TypeDecls used in member initializers as referenced. Without this, -Wunused-local-typedef would incorrectly warn on the two typedefs in this program: void foo() { struct A {}; struct B : public A { typedef A INHERITED; B() : INHERITED() {} typedef B SELF; B(int) : SELF() {} }; } llvm-svn: 221765 --- clang/lib/Sema/SemaDeclCXX.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'clang/lib') diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index f9f9d3ff94e..d4cb2fe3504 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -2914,6 +2914,7 @@ Sema::BuildMemInitializer(Decl *ConstructorD, if (BaseType.isNull()) { BaseType = Context.getTypeDeclType(TyD); + MarkAnyDeclReferenced(TyD->getLocation(), TyD, /*OdrUse=*/false); if (SS.isSet()) // FIXME: preserve source range information BaseType = Context.getElaboratedType(ETK_None, SS.getScopeRep(), -- cgit v1.2.3