diff options
-rw-r--r-- | compilerplugins/clang/unusedmethods.cxx | 10 |
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); |