diff options
author | Marek Polacek <polacek@redhat.com> | 2016-07-29 17:39:39 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2016-07-29 17:39:39 +0000 |
commit | 638fc14f07ae8908141b520b9d11ba364f087018 (patch) | |
tree | 0fe460480bf9bb01eac667e2c342d2230fe60b19 | |
parent | e00dceafd2de848a7735dbce48922aa2304a0f94 (diff) | |
download | gcc-638fc14f07ae8908141b520b9d11ba364f087018.zip gcc-638fc14f07ae8908141b520b9d11ba364f087018.tar.gz gcc-638fc14f07ae8908141b520b9d11ba364f087018.tar.bz2 |
re PR c/71926 (wrong location for -Wparentheses warning)
PR c/71926
* c-common.c (c_common_truthvalue_conversion): Use LOCATION for the
parentheses warning.
* semantics.c (maybe_convert_cond): Use the location of COND for the
parentheses warning.
* g++.dg/warn/Wparentheses-30.C: New test.
* gcc.dg/Wparentheses-14.c: New test.
From-SVN: r238886
-rw-r--r-- | gcc/c-family/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/c-family/c-common.c | 5 | ||||
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/Wparentheses-30.C | 11 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/Wparentheses-14.c | 11 |
7 files changed, 41 insertions, 4 deletions
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 705d00c..aed494a 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,5 +1,9 @@ 2016-07-29 Marek Polacek <polacek@redhat.com> + PR c/71926 + * c-common.c (c_common_truthvalue_conversion): Use LOCATION for the + parentheses warning. + PR c/71574 * c-common.c (handle_alloc_align_attribute): Also check FUNCTION_DECL. diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c index efd9815..27031b5 100644 --- a/gcc/c-family/c-common.c +++ b/gcc/c-family/c-common.c @@ -4591,8 +4591,9 @@ c_common_truthvalue_conversion (location_t location, tree expr) if (!TREE_NO_WARNING (expr) && warn_parentheses) { - warning (OPT_Wparentheses, - "suggest parentheses around assignment used as truth value"); + warning_at (location, OPT_Wparentheses, + "suggest parentheses around assignment used as " + "truth value"); TREE_NO_WARNING (expr) = 1; } break; diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 71aa084..db6e1eb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-07-29 Marek Polacek <polacek@redhat.com> + + PR c/71926 + * semantics.c (maybe_convert_cond): Use the location of COND for the + parentheses warning. + 2016-07-29 Jason Merrill <jason@redhat.com> * decl.c (build_enumerator): Tweak diagnostic. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 63063b8..2fe2d09 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -656,8 +656,8 @@ maybe_convert_cond (tree cond) && !TREE_NO_WARNING (cond) && warn_parentheses) { - warning (OPT_Wparentheses, - "suggest parentheses around assignment used as truth value"); + warning_at (EXPR_LOC_OR_LOC (cond, input_location), OPT_Wparentheses, + "suggest parentheses around assignment used as truth value"); TREE_NO_WARNING (cond) = 1; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index e29c07c..5cf7c1f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -11,6 +11,10 @@ PR c/71573 * gcc.dg/noncompile/pr71573.c: New test. + PR c/71926 + * g++.dg/warn/Wparentheses-30.C: New test. + * gcc.dg/Wparentheses-14.c: New test. + 2016-07-29 Uros Bizjak <ubizjak@gmail.com> * gcc.dg/pr59833.c: Use dg-add-options ieee. diff --git a/gcc/testsuite/g++.dg/warn/Wparentheses-30.C b/gcc/testsuite/g++.dg/warn/Wparentheses-30.C new file mode 100644 index 0000000..ea7c741 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/Wparentheses-30.C @@ -0,0 +1,11 @@ +/* PR c/71926 */ +/* { dg-options "-Wparentheses" } */ + +int +f (void) +{ + int a = 1, b = 2, c = 3, d = 4; + if (a = 2 || (b != 3 && c != 4 && d != 5)) /* { dg-warning "9:suggest parentheses" } */ + return 1; + return 0; +} diff --git a/gcc/testsuite/gcc.dg/Wparentheses-14.c b/gcc/testsuite/gcc.dg/Wparentheses-14.c new file mode 100644 index 0000000..36dedf7 --- /dev/null +++ b/gcc/testsuite/gcc.dg/Wparentheses-14.c @@ -0,0 +1,11 @@ +/* PR c/71926 */ +/* { dg-options "-Wparentheses" } */ + +int +f (void) +{ + int a = 1, b = 2, c = 3, d = 4; + if (a = 2 || (b != 3 && c != 4 && d != 5)) /* { dg-warning "7:suggest parentheses" } */ + return 1; + return 0; +} |