summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIlya Biryukov <ibiryukov@google.com>2018-10-24 08:29:24 +0000
committerIlya Biryukov <ibiryukov@google.com>2018-10-24 08:29:24 +0000
commit47e06bb81f9f8a70d6eb09c944861eaac10f7002 (patch)
treef117868ab8a1ad35c02c37f33a816e131dce7dc1
parentdf9c7e3001377d6da7098fdd4fc5c54293620d37 (diff)
downloadbcm5719-llvm-47e06bb81f9f8a70d6eb09c944861eaac10f7002.tar.gz
bcm5719-llvm-47e06bb81f9f8a70d6eb09c944861eaac10f7002.zip
[Sema] Do not show unused parameter warnings when body is skipped
Summary: Without the function body, we cannot determine is parameter was used. Reviewers: ioeric, sammccall Reviewed By: sammccall Subscribers: arphaman, cfe-commits Differential Revision: https://reviews.llvm.org/D53456 llvm-svn: 345122
-rw-r--r--clang/lib/Sema/SemaDecl.cpp5
-rw-r--r--clang/test/Index/skipped-bodies-unused.cpp8
2 files changed, 11 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp
index ef17f8d57b9..88c1d595e59 100644
--- a/clang/lib/Sema/SemaDecl.cpp
+++ b/clang/lib/Sema/SemaDecl.cpp
@@ -13037,7 +13037,7 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body,
if (!FD->isInvalidDecl()) {
// Don't diagnose unused parameters of defaulted or deleted functions.
- if (!FD->isDeleted() && !FD->isDefaulted())
+ if (!FD->isDeleted() && !FD->isDefaulted() && !FD->hasSkippedBody())
DiagnoseUnusedParameters(FD->parameters());
DiagnoseSizeOfParametersAndReturnValue(FD->parameters(),
FD->getReturnType(), FD);
@@ -13132,7 +13132,8 @@ Decl *Sema::ActOnFinishFunctionBody(Decl *dcl, Stmt *Body,
assert(MD == getCurMethodDecl() && "Method parsing confused");
MD->setBody(Body);
if (!MD->isInvalidDecl()) {
- DiagnoseUnusedParameters(MD->parameters());
+ if (!MD->hasSkippedBody())
+ DiagnoseUnusedParameters(MD->parameters());
DiagnoseSizeOfParametersAndReturnValue(MD->parameters(),
MD->getReturnType(), MD);
diff --git a/clang/test/Index/skipped-bodies-unused.cpp b/clang/test/Index/skipped-bodies-unused.cpp
new file mode 100644
index 00000000000..fc1ebc8efd8
--- /dev/null
+++ b/clang/test/Index/skipped-bodies-unused.cpp
@@ -0,0 +1,8 @@
+// RUN: env CINDEXTEST_SKIP_FUNCTION_BODIES=1 c-index-test -test-load-source all %s -Wunused-parameter 2>&1 \
+// RUN: | FileCheck %s
+
+// No 'unused parameter' warnings should be shown when skipping the function bodies.
+inline int foo(int used, int unused) {
+ used = 100;
+}
+// CHECK-NOT: warning: unused parameter
OpenPOWER on IntegriCloud