[gcc(refs/vendors/redhat/heads/gcc-10-branch)] Mark switch expression as used to avoid bogus warning

Jakub Jelinek jakub@gcc.gnu.org
Sun Feb 16 12:28:00 GMT 2020


https://gcc.gnu.org/g:f9eb0973edb2b4eed4cdbba7105b8af7afe5b547

commit f9eb0973edb2b4eed4cdbba7105b8af7afe5b547
Author: Jeff Law <law@redhat.com>
Date:   Thu Jan 30 14:09:41 2020 -0700

    Mark switch expression as used to avoid bogus warning
    
            PR c/88660
            * c-parser.c (c_parser_switch_statement): Make sure to request
            marking the switch expr as used.
    
            PR c/88660
            * gcc.dg/pr88660.c: New test.

Diff:
---
 gcc/c/ChangeLog                |  6 ++++++
 gcc/c/c-parser.c               |  2 +-
 gcc/testsuite/ChangeLog        |  5 +++++
 gcc/testsuite/gcc.dg/pr88660.c | 13 +++++++++++++
 4 files changed, 25 insertions(+), 1 deletion(-)

diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 9497365..995f315 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-30  Jeff Law  <law@redhat.com>
+
+	PR c/88660
+	* c-parser.c (c_parser_switch_statement): Make sure to request
+	marking the switch expr as used.
+
 2020-01-22  Joseph Myers  <joseph@codesourcery.com>
 
 	PR c/93348
diff --git a/gcc/c/c-parser.c b/gcc/c/c-parser.c
index 6164017..1e8f2f7 100644
--- a/gcc/c/c-parser.c
+++ b/gcc/c/c-parser.c
@@ -6607,7 +6607,7 @@ c_parser_switch_statement (c_parser *parser, bool *if_p)
 	  && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
 	explicit_cast_p = true;
       ce = c_parser_expression (parser);
-      ce = convert_lvalue_to_rvalue (switch_cond_loc, ce, true, false);
+      ce = convert_lvalue_to_rvalue (switch_cond_loc, ce, true, true);
       expr = ce.value;
       /* ??? expr has no valid location?  */
       parens.skip_until_found_close (parser);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4503016..90eb0b2 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2020-01-30  Jeff Law  <law@redhat.com
+
+	PR c/88660
+	* gcc.dg/pr88660.c: New test
+
 2020-01-30  Jakub Jelinek  <jakub@redhat.com>
 
 	PR lto/93384
diff --git a/gcc/testsuite/gcc.dg/pr88660.c b/gcc/testsuite/gcc.dg/pr88660.c
new file mode 100644
index 0000000..09a2d32
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr88660.c
@@ -0,0 +1,13 @@
+/* { dg-do-compile } */
+/* { dg-options "-O -Wunused-but-set-variable" } */
+
+int main(void)
+{
+	const int i = 0;
+	switch(i)
+	{
+	default: break;
+	}
+}
+
+



More information about the Gcc-cvs mailing list