diff options
author | Matt Beaumont-Gay <matthewbg@google.com> | 2011-08-04 23:11:04 +0000 |
---|---|---|
committer | Matt Beaumont-Gay <matthewbg@google.com> | 2011-08-04 23:11:04 +0000 |
commit | 42d7b2d25b6f90dc397886d05502b10ab5a8b51b (patch) | |
tree | 6fc00fa397c623f56a68ed5a13182956d52a6389 | |
parent | 57fb591a54eab7db65d73e77c632f047bca22c54 (diff) |
Specialize diag::warn_unused_call for the "warn_unused_result" attribute, so
it can be controlled with a distinct flag.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@136941 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/Basic/DiagnosticGroups.td | 3 | ||||
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 3 | ||||
-rw-r--r-- | lib/Sema/SemaStmt.cpp | 4 |
3 files changed, 7 insertions, 3 deletions
diff --git a/include/clang/Basic/DiagnosticGroups.td b/include/clang/Basic/DiagnosticGroups.td index 9bfe5f51be..a300764733 100644 --- a/include/clang/Basic/DiagnosticGroups.td +++ b/include/clang/Basic/DiagnosticGroups.td @@ -163,7 +163,8 @@ def UnusedMemberFunction : DiagGroup<"unused-member-function", [UnneededMemberFunction]>; def UnusedLabel : DiagGroup<"unused-label">; def UnusedParameter : DiagGroup<"unused-parameter">; -def UnusedValue : DiagGroup<"unused-value">; +def UnusedResult : DiagGroup<"unused-result">; +def UnusedValue : DiagGroup<"unused-value", [UnusedResult]>; def UnusedVariable : DiagGroup<"unused-variable">; def UsedButMarkedUnused : DiagGroup<"used-but-marked-unused">; def ReadOnlySetterAttrs : DiagGroup<"readonly-setter-attrs">; diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index d6401dd7d2..a2cd1e1fc4 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -3783,6 +3783,9 @@ def warn_unused_property_expr : Warning< def warn_unused_call : Warning< "ignoring return value of function declared with %0 attribute">, InGroup<UnusedValue>; +def warn_unused_result : Warning< + "ignoring return value of function declared with warn_unused_result " + "attribute">, InGroup<DiagGroup<"unused-result">>; def err_incomplete_type_used_in_type_trait_expr : Error< "incomplete type %0 used in type trait expression">; diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index 5825d6b9b6..6b2935fdf7 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -123,7 +123,7 @@ void Sema::DiagnoseUnusedExprResult(const Stmt *S) { // a more specific message to make it clear what is happening. if (const Decl *FD = CE->getCalleeDecl()) { if (FD->getAttr<WarnUnusedResultAttr>()) { - Diag(Loc, diag::warn_unused_call) << R1 << R2 << "warn_unused_result"; + Diag(Loc, diag::warn_unused_result) << R1 << R2; return; } if (FD->getAttr<PureAttr>()) { @@ -142,7 +142,7 @@ void Sema::DiagnoseUnusedExprResult(const Stmt *S) { } const ObjCMethodDecl *MD = ME->getMethodDecl(); if (MD && MD->getAttr<WarnUnusedResultAttr>()) { - Diag(Loc, diag::warn_unused_call) << R1 << R2 << "warn_unused_result"; + Diag(Loc, diag::warn_unused_result) << R1 << R2; return; } } else if (isa<ObjCPropertyRefExpr>(E)) { |