diff options
Diffstat (limited to 'lib/Sema/SemaDecl.cpp')
-rw-r--r-- | lib/Sema/SemaDecl.cpp | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/lib/Sema/SemaDecl.cpp b/lib/Sema/SemaDecl.cpp index 392360f5aa..617adfe363 100644 --- a/lib/Sema/SemaDecl.cpp +++ b/lib/Sema/SemaDecl.cpp @@ -3998,23 +3998,31 @@ static bool ShouldWarnAboutMissingPrototype(const FunctionDecl *FD) { // Don't warn about invalid declarations. if (FD->isInvalidDecl()) return false; - + // Or declarations that aren't global. if (!FD->isGlobal()) return false; - + // Don't warn about C++ member functions. if (isa<CXXMethodDecl>(FD)) return false; - + // Don't warn about 'main'. if (FD->isMain()) return false; - + // Don't warn about inline functions. if (FD->isInlineSpecified()) return false; - + + // Don't warn about function templates. + if (FD->getDescribedFunctionTemplate()) + return false; + + // Don't warn about function template specializations. + if (FD->isFunctionTemplateSpecialization()) + return false; + bool MissingPrototype = true; for (const FunctionDecl *Prev = FD->getPreviousDeclaration(); Prev; Prev = Prev->getPreviousDeclaration()) { |