summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--compilerplugins/clang/unusedmethods.cxx10
1 files changed, 8 insertions, 2 deletions
diff --git a/compilerplugins/clang/unusedmethods.cxx b/compilerplugins/clang/unusedmethods.cxx
index fe5825fbfd4f..aa645fb7cc4a 100644
--- a/compilerplugins/clang/unusedmethods.cxx
+++ b/compilerplugins/clang/unusedmethods.cxx
@@ -212,7 +212,9 @@ void UnusedMethods::logCallToRootMethods(const FunctionDecl* functionDecl, std::
{
while (functionDecl->getTemplateInstantiationPattern())
functionDecl = functionDecl->getTemplateInstantiationPattern();
- funcSet.insert(niceName(functionDecl));
+ if (functionDecl->getLocation().isValid() && !ignoreLocation( functionDecl )
+ && !functionDecl->isExternC())
+ funcSet.insert(niceName(functionDecl));
}
}
@@ -348,8 +350,12 @@ bool UnusedMethods::VisitFunctionDecl( const FunctionDecl* functionDecl )
if (functionDecl->isDeleted() || functionDecl->isDefaulted()) {
return true;
}
+ if (isa<CXXConstructorDecl>(functionDecl) && dyn_cast<CXXConstructorDecl>(functionDecl)->isCopyConstructor()) {
+ return true;
+ }
- if( functionDecl->getLocation().isValid() && !ignoreLocation( functionDecl ))
+ if( functionDecl->getLocation().isValid() && !ignoreLocation( functionDecl )
+ && !functionDecl->isExternC())
{
MyFuncInfo funcInfo = niceName(functionDecl);
definitionSet.insert(funcInfo);