================
Comment at: lib/Sema/Sema.cpp:548
@@ -547,2 +547,3 @@
     else if (const FunctionTemplateDecl *F = 
dyn_cast<FunctionTemplateDecl>(*I))
-      Complete = F->getTemplatedDecl()->isDefined();
+      Complete = !F->getTemplatedDecl()->isLateTemplateParsed() &&
+                  F->getTemplatedDecl()->isDefined();
----------------
ehsan wrote:
> hans wrote:
> > Is the issue that the template has been defined, but we haven't parsed and 
> > semantically analysed it because it's late-parsed?
> > 
> > This gets called from ActOnEndOfTranslationUnit, so shouldn't the delayed 
> > template parsing already have taken place?
> Yes the template is not defined by we haven't done semantic analysis (and 
> parsing!) on it yet.  It looks like by ActOnEndOfTranslationUnit the semantic 
> analysis still wouldn't happen unless if we see a call to that function (or 
> presumably other things such as its address being taken etc.)  IOW if the 
> test case includes an instantiation of the template member, the warning 
> doesn't appear.
Oh that makes sense. If we don't instantiate it, we don't parse it.

This patch seems correct to me, but please add a comment about this check.

http://reviews.llvm.org/D5718



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to