From: Douglas Gregor Date: Thu, 15 Jul 2010 18:47:04 +0000 (+0000) Subject: Make the "unused result" warning a warning about run-time behavior, so X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=35e12c90c1b107a75c5615aa76fdbd403661aaa6;p=clang Make the "unused result" warning a warning about run-time behavior, so that we don't warn when there isn't going to be any computation anyway. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@108442 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaStmt.cpp b/lib/Sema/SemaStmt.cpp index 9c8f48bfea..075f662824 100644 --- a/lib/Sema/SemaStmt.cpp +++ b/lib/Sema/SemaStmt.cpp @@ -141,7 +141,7 @@ void Sema::DiagnoseUnusedExprResult(const Stmt *S) { } } - Diag(Loc, DiagID) << R1 << R2; + DiagRuntimeBehavior(Loc, PDiag(DiagID) << R1 << R2); } Action::OwningStmtResult diff --git a/test/Sema/const-eval.c b/test/Sema/const-eval.c index c132b347d7..9c537250a9 100644 --- a/test/Sema/const-eval.c +++ b/test/Sema/const-eval.c @@ -74,5 +74,5 @@ const _Bool constbool = 0; EVAL_EXPR(35, constbool) EVAL_EXPR(36, constbool) -EVAL_EXPR(37, (1,2.0) == 2.0) // expected-warning {{expression result unused}} +EVAL_EXPR(37, (1,2.0) == 2.0) EVAL_EXPR(38, __builtin_expect(1,1) == 1) diff --git a/test/Sema/expr-comma-c89.c b/test/Sema/expr-comma-c89.c index dc427028d0..d0883ba202 100644 --- a/test/Sema/expr-comma-c89.c +++ b/test/Sema/expr-comma-c89.c @@ -11,7 +11,7 @@ int B[sizeof((a.c)) == 17 ? 1 : -1]; // comma does array/function promotion in c99. -int X[sizeof(0, (foo().c)) == sizeof(char*) ? 1 : -1]; // expected-warning {{expression result unused}} -int Y[sizeof(0, (a,b).c) == sizeof(char*) ? 1 : -1]; // expected-warning {{expression result unused}} expected-warning {{expression result unused}} -int Z[sizeof(0, (a=b).c) == sizeof(char*) ? 1 : -1]; // expected-warning {{expression result unused}} +int X[sizeof(0, (foo().c)) == sizeof(char*) ? 1 : -1]; +int Y[sizeof(0, (a,b).c) == sizeof(char*) ? 1 : -1]; +int Z[sizeof(0, (a=b).c) == sizeof(char*) ? 1 : -1]; diff --git a/test/Sema/expr-comma.c b/test/Sema/expr-comma.c index b004fc1ba3..d3e4020af6 100644 --- a/test/Sema/expr-comma.c +++ b/test/Sema/expr-comma.c @@ -11,7 +11,7 @@ int B[sizeof((a.c)) == 17 ? 1 : -1]; // comma does not promote array/function in c90 unless they are lvalues. -int W[sizeof(0, a.c) == sizeof(char*) ? 1 : -1]; // expected-warning {{expression result unused}} -int X[sizeof(0, (foo().c)) == 17 ? 1 : -1]; // expected-warning {{expression result unused}} -int Y[sizeof(0, (a,b).c) == 17 ? 1 : -1]; // expected-warning {{expression result unused}} // expected-warning {{expression result unused}} -int Z[sizeof(0, (a=b).c) == 17 ? 1 : -1]; // expected-warning {{expression result unused}} +int W[sizeof(0, a.c) == sizeof(char*) ? 1 : -1]; +int X[sizeof(0, (foo().c)) == 17 ? 1 : -1]; +int Y[sizeof(0, (a,b).c) == 17 ? 1 : -1]; +int Z[sizeof(0, (a=b).c) == 17 ? 1 : -1]; diff --git a/test/SemaCXX/decltype.cpp b/test/SemaCXX/decltype.cpp index b6bcd043f3..d4ef7e33a1 100644 --- a/test/SemaCXX/decltype.cpp +++ b/test/SemaCXX/decltype.cpp @@ -3,7 +3,7 @@ // PR5290 int const f0(); void f0_test() { - decltype(0, f0()) i = 0; // expected-warning{{expression result unused}} + decltype(0, f0()) i = 0; i = 0; }