[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#625357: gcc -Wunused-but-set-variable warning is confusing



reassign 625357 src:gcc-snapshot 20111210-1
affects 625357 + gcc-4.6
affects 625357 + gcc-4.7
quit

Jonathan Nieder wrote:
> Steve McIntyre wrote:

>>     error = add_md5_entry(UNKNOWN, md5, file_name);
>>     return 0;
>> }
>>
>> To explain a bit more: the warning reported by gcc (unhelpfully)
>> points at the declaration/initialisation of "error", which led me to
>> (incorrectly) think that it was complaining about set-but-unused for
>> the initialisation. With minor tweaks, I can see that it's complaining
>> about the return value from add_md5_entry() being ignored but doesn't
>> *say* that. :-(
>
> Ah, I see and I think I agree.
[...]
> Something like
>
>  test.c:3:6: warning: unused variable ‘x’ [-Wunused-but-set-variable]
>
> would be clearer.

Here's a rough patch.  Will send upstream after testing, but thoughts
welcome already.  Sensible?
From: Jonathan Nieder <jrnieder@gmail.com>
Date: Thu, 5 Jan 2012 17:13:29 -0600
Subject: gcc: make -Wunused-but-set-variable message less confusing

gcc:
	* c-decl.c (pop_scope, finish_function): Say "unused variable
	‘x’ [-Wunused-but-set-variable]" instead of "variable ‘x’ set
	but not used [-Wunused-but-set-variable]" to put the emphasis
	on the "unused" part.
	* cp/decl.c (pop_scope, finish_function): Likewise.

gcc/testsuite:
	* c-c++-common/Wunused-var-1.c (f1, f2, f5, f8, f14, f17, f18, f20):
	Substitute "unused" for "set but not used" in expected warnings.
	* c-c++-common/Wunused-var-3.c (f1): Likewise.
	* c-c++-common/Wunused-var-4.c (f3): Likewise.
	* c-c++-common/Wunused-var-7.c (bar): Likewise.
	* c-c++-common/Wunused-var-9.c (f6): Likewise.
	* c-c++-common/Wunused-var-12.c (bar): Likewise.
	* g++.dg/template/sfinae16.C (main): Likewise.
	* g++.dg/warn/Wunused-7.C (func): Likewise.
	* g++.dg/warn/Wunused-var-4.C (f1, f2): Likewise.
	* g++.dg/warn/Wunused-var-5.C (f1, f2, f5, f8, f14, f17, f18, f20):
	Likewise.
	* g++.dg/warn/Wunused-var-7.C (f1): Likewise.
	* g++.dg/warn/Wunused-var-10.C (f3): Likewise.
	* objc.dg/set-not-used-1.m (main): Likewise.
	* obj-c++.dg/set-not-used-1.mm (main): Likewise.

	* gcc.dg/Wunused-parm-1.c (f3): Substitute "unused parameter" for "set
	but not used" in expected warning.
	* g++.dg/warn/Wunused-parm-1.C (f4): Likewise.
	* g++.dg/warn/Wunused-parm-2.C (f4): Likewise.

	* gcc.dg/Wunused-var-1.c (f2): Substitute "unused variable" for "set but
	not used" in expected warning.
---
 gcc/c-decl.c                                |    4 ++--
 gcc/cp/decl.c                               |    4 ++--
 gcc/testsuite/c-c++-common/Wunused-var-1.c  |   18 +++++++++---------
 gcc/testsuite/c-c++-common/Wunused-var-12.c |    2 +-
 gcc/testsuite/c-c++-common/Wunused-var-3.c  |    4 ++--
 gcc/testsuite/c-c++-common/Wunused-var-4.c  |    4 ++--
 gcc/testsuite/c-c++-common/Wunused-var-7.c  |    2 +-
 gcc/testsuite/c-c++-common/Wunused-var-9.c  |    2 +-
 gcc/testsuite/g++.dg/template/sfinae16.C    |    2 +-
 gcc/testsuite/g++.dg/warn/Wunused-7.C       |    2 +-
 gcc/testsuite/g++.dg/warn/Wunused-parm-1.C  |    2 +-
 gcc/testsuite/g++.dg/warn/Wunused-parm-2.C  |    2 +-
 gcc/testsuite/g++.dg/warn/Wunused-var-10.C  |    2 +-
 gcc/testsuite/g++.dg/warn/Wunused-var-4.C   |   10 +++++-----
 gcc/testsuite/g++.dg/warn/Wunused-var-5.C   |   18 +++++++++---------
 gcc/testsuite/g++.dg/warn/Wunused-var-7.C   |    4 ++--
 gcc/testsuite/gcc.dg/Wunused-parm-1.c       |    2 +-
 gcc/testsuite/gcc.dg/Wunused-var-1.c        |    2 +-
 gcc/testsuite/obj-c++.dg/set-not-used-1.mm  |    6 +++---
 gcc/testsuite/objc.dg/set-not-used-1.m      |    6 +++---
 20 files changed, 49 insertions(+), 49 deletions(-)

diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 96e9c7d1..bde2668f 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -1176,7 +1176,7 @@ pop_scope (void)
 	      else if (DECL_CONTEXT (p) == current_function_decl)
 		warning_at (DECL_SOURCE_LOCATION (p),
 			    OPT_Wunused_but_set_variable,
-			    "variable %qD set but not used", p);
+			    "unused variable %qD", p);
 	    }
 
 	  if (b->inner_comp)
@@ -8396,7 +8396,7 @@ finish_function (void)
 	    && !TREE_NO_WARNING (decl))
 	  warning_at (DECL_SOURCE_LOCATION (decl),
 		      OPT_Wunused_but_set_parameter,
-		      "parameter %qD set but not used", decl);
+		      "unused parameter %qD", decl);
     }
 
   /* Complain about locally defined typedefs that are not used in this
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 7daac5fe..e832880a 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -634,7 +634,7 @@ poplevel (int keep, int reverse, int functionbody)
 		       || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
 	    {
 	      warning (OPT_Wunused_but_set_variable,
-		       "variable %q+D set but not used", decl); 
+		       "unused variable %q+D", decl); 
 	      unused_but_set_errorcount = errorcount;
 	    }
 	}
@@ -13527,7 +13527,7 @@ finish_function (int flags)
 	    && (!CLASS_TYPE_P (TREE_TYPE (decl))
 	        || !TYPE_HAS_NONTRIVIAL_DESTRUCTOR (TREE_TYPE (decl))))
 	  warning (OPT_Wunused_but_set_parameter,
-		   "parameter %q+D set but not used", decl);
+		   "unused parameter %q+D", decl);
       unused_but_set_errorcount = errorcount;
     }
 
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-1.c b/gcc/testsuite/c-c++-common/Wunused-var-1.c
index ef8f6d45..201ae343 100644
--- a/gcc/testsuite/c-c++-common/Wunused-var-1.c
+++ b/gcc/testsuite/c-c++-common/Wunused-var-1.c
@@ -4,7 +4,7 @@
 void
 f1 (void)
 {
-  int a;	/* { dg-warning "set but not used" } */
+  int a;	/* { dg-warning "unused" } */
   int b;
   int c;
   c = 1;
@@ -14,9 +14,9 @@ f1 (void)
 void
 f2 (int x)
 {
-  int a;	/* { dg-warning "set but not used" } */
+  int a;	/* { dg-warning "unused" } */
   int b;
-  int c;	/* { dg-warning "set but not used" } */
+  int c;	/* { dg-warning "unused" } */
   c = (a = x, b = x);
 }
 
@@ -38,7 +38,7 @@ f4 (int x)
 void
 f5 (int x)
 {
-  int a[2];	/* { dg-warning "set but not used" } */
+  int a[2];	/* { dg-warning "unused" } */
   int b;
   int *c, d[2];
   c = d;
@@ -70,7 +70,7 @@ struct S { int i; };
 void
 f8 (void)
 {
-  struct S s;	/* { dg-warning "set but not used" } */
+  struct S s;	/* { dg-warning "unused" } */
   s.i = 6;
 }
 
@@ -118,7 +118,7 @@ f13 (void (*x) (void))
 void
 f14 (void (*x) (void))
 {
-  void (*a) (void);	/* { dg-warning "set but not used" } */
+  void (*a) (void);	/* { dg-warning "unused" } */
   a = x;
 }
 
@@ -145,7 +145,7 @@ f16 (void)
 void
 f17 (int x)
 {
-  long a;	/* { dg-warning "set but not used" } */
+  long a;	/* { dg-warning "unused" } */
   int b;
   a = b = x;
 }
@@ -153,7 +153,7 @@ f17 (int x)
 void
 f18 (int x)
 {
-  int a;	/* { dg-warning "set but not used" } */
+  int a;	/* { dg-warning "unused" } */
   int b;
   a = (char) (b = x);
 }
@@ -173,7 +173,7 @@ f20 (int x)
 {
   static int a[] = { 3, 4, 5, 6 };
   static int b[] = { 4, 5, 6, 7 };
-  static int c[] = { 5, 6, 7, 8 };	/* { dg-warning "set but not used" } */
+  static int c[] = { 5, 6, 7, 8 };	/* { dg-warning "unused" } */
   c[1] = 1;
   return x ? a : b;
 }
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-12.c b/gcc/testsuite/c-c++-common/Wunused-var-12.c
index 94e56d8a..a77bc650 100644
--- a/gcc/testsuite/c-c++-common/Wunused-var-12.c
+++ b/gcc/testsuite/c-c++-common/Wunused-var-12.c
@@ -20,7 +20,7 @@ void
 bar (void)
 {
   vec a;
-  vec b;	/* { dg-warning "set but not used" } */
+  vec b;	/* { dg-warning "unused" } */
   a = c;
   b = a;
 }
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-3.c b/gcc/testsuite/c-c++-common/Wunused-var-3.c
index 9b1fce77..79aa47bf 100644
--- a/gcc/testsuite/c-c++-common/Wunused-var-3.c
+++ b/gcc/testsuite/c-c++-common/Wunused-var-3.c
@@ -4,8 +4,8 @@
 void
 f1 (void)
 {
-  _Complex int a;	/* { dg-warning "set but not used" } */
-  _Complex double b;	/* { dg-warning "set but not used" } */
+  _Complex int a;	/* { dg-warning "unused" } */
+  _Complex double b;	/* { dg-warning "unused" } */
   __real__ a = 1;
   __imag__ a = 2;
   __real__ b = 3.0;
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-4.c b/gcc/testsuite/c-c++-common/Wunused-var-4.c
index d60c476a..5169e7f1 100644
--- a/gcc/testsuite/c-c++-common/Wunused-var-4.c
+++ b/gcc/testsuite/c-c++-common/Wunused-var-4.c
@@ -22,8 +22,8 @@ f2 (void)
 void
 f3 (void)
 {
-  struct S { int i; } a;	/* { dg-warning "set but not used" } */
-  int b[1];			/* { dg-warning "set but not used" } */
+  struct S { int i; } a;	/* { dg-warning "unused" } */
+  int b[1];			/* { dg-warning "unused" } */
   a.i = 1;
   b[0] = 1;
 }
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-7.c b/gcc/testsuite/c-c++-common/Wunused-var-7.c
index 74196436..1ce0c509 100644
--- a/gcc/testsuite/c-c++-common/Wunused-var-7.c
+++ b/gcc/testsuite/c-c++-common/Wunused-var-7.c
@@ -26,7 +26,7 @@ bar (void)
 {
   int a;
   int b;
-  int c;		/* { dg-warning "set but not used" } */
+  int c;		/* { dg-warning "unused" } */
   a = 1;
   b = 2;
   c = 3;
diff --git a/gcc/testsuite/c-c++-common/Wunused-var-9.c b/gcc/testsuite/c-c++-common/Wunused-var-9.c
index b2cdc451..58390ca9 100644
--- a/gcc/testsuite/c-c++-common/Wunused-var-9.c
+++ b/gcc/testsuite/c-c++-common/Wunused-var-9.c
@@ -26,7 +26,7 @@ f5 (int x)
 void
 f6 (int x)
 {
-  int a;	/* { dg-warning "set but not used" } */
+  int a;	/* { dg-warning "unused" } */
   a = x;
 }
 
diff --git a/gcc/testsuite/g++.dg/template/sfinae16.C b/gcc/testsuite/g++.dg/template/sfinae16.C
index 28a06d28..c5dc1ef3 100644
--- a/gcc/testsuite/g++.dg/template/sfinae16.C
+++ b/gcc/testsuite/g++.dg/template/sfinae16.C
@@ -29,6 +29,6 @@ template<typename Rep>
 int main()
 {
   duration<int> d0;
-  duration<int> d1 = d0;	// { dg-warning "set but not used" }
+  duration<int> d1 = d0;	// { dg-warning "unused" }
 }
 
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-7.C b/gcc/testsuite/g++.dg/warn/Wunused-7.C
index 6f5c23e9..d4414ad9 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-7.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-7.C
@@ -6,7 +6,7 @@ void func()
   struct mybitfields {
     unsigned int s_field:8;
   };
-  struct mybitfields s;	// { dg-warning "set but not used" }
+  struct mybitfields s;	// { dg-warning "unused" }
   s.s_field = 255;
 };
 
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-parm-1.C b/gcc/testsuite/g++.dg/warn/Wunused-parm-1.C
index 08bfaa66..28bee57f 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-parm-1.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-parm-1.C
@@ -25,7 +25,7 @@ f3 (int a)	// { dg-warning "unused parameter" }
 }
 
 int
-f4 (int a)	// { dg-warning "set but not used" }
+f4 (int a)	// { dg-warning "unused parameter" }
 {
   a = 1;
   return 0;
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-parm-2.C b/gcc/testsuite/g++.dg/warn/Wunused-parm-2.C
index d4276c0a..fb660b7f 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-parm-2.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-parm-2.C
@@ -29,7 +29,7 @@ f3 (int a)	// { dg-warning "unused parameter" }
 
 template <int N>
 int
-f4 (int a)	// { dg-warning "set but not used" }
+f4 (int a)	// { dg-warning "unused parameter" }
 {
   a = 1;
   return 0;
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-10.C b/gcc/testsuite/g++.dg/warn/Wunused-var-10.C
index ffdb8932..6ffd35d3 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-var-10.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-10.C
@@ -29,7 +29,7 @@ f2 ()
 void
 f3 ()
 {
-  S s;		// { dg-warning "set but not used" }
+  S s;		// { dg-warning "unused" }
   s.c = 6;
 }
 
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-4.C b/gcc/testsuite/g++.dg/warn/Wunused-var-4.C
index 11ed7afe..6e7ee1b9 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-var-4.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-4.C
@@ -16,9 +16,9 @@ f1 (void)
   c = 3;
   d = 4;
   s.e = 5;
-  __typeof (c) e;	// { dg-warning "set but not used" }
-  __decltype (d) f;	// { dg-warning "set but not used" }
-  __decltype (s.e) g;	// { dg-warning "set but not used" }
+  __typeof (c) e;	// { dg-warning "unused" }
+  __decltype (d) f;	// { dg-warning "unused" }
+  __decltype (s.e) g;	// { dg-warning "unused" }
   e = 1;
   f = 1;
   g = 1;
@@ -36,8 +36,8 @@ int f2 (void)
   b = 2;
   c = 3;
   d = 4;
-  __typeof (c) e;	// { dg-warning "set but not used" }
-  __decltype (d) f;	// { dg-warning "set but not used" }
+  __typeof (c) e;	// { dg-warning "unused" }
+  __decltype (d) f;	// { dg-warning "unused" }
   e = 1;
   f = 1;
   return sizeof (a) + __alignof__ (b);
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-5.C b/gcc/testsuite/g++.dg/warn/Wunused-var-5.C
index 7fcaa955..96fc613e 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-var-5.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-5.C
@@ -5,7 +5,7 @@ template <int N>
 void
 f1 (void)
 {
-  int a;	// { dg-warning "set but not used" }
+  int a;	// { dg-warning "unused" }
   int b;
   int c;
   c = 1;
@@ -16,9 +16,9 @@ template <int N>
 void
 f2 (int x)
 {
-  int a;	// { dg-warning "set but not used" }
+  int a;	// { dg-warning "unused" }
   int b;
-  int c;	// { dg-warning "set but not used" }
+  int c;	// { dg-warning "unused" }
   c = (a = x, b = x);
 }
 
@@ -43,7 +43,7 @@ template <int N>
 void
 f5 (int x)
 {
-  int a[2];	// { dg-warning "set but not used" }
+  int a[2];	// { dg-warning "unused" }
   int b;
   int *c, d[2];
   c = d;
@@ -78,7 +78,7 @@ template <int N>
 void
 f8 (void)
 {
-  struct S s;	// { dg-warning "set but not used" }
+  struct S s;	// { dg-warning "unused" }
   s.i = 6;
 }
 
@@ -132,7 +132,7 @@ template <int N>
 void
 f14 (void (*x) (void))
 {
-  void (*a) (void);	// { dg-warning "set but not used" }
+  void (*a) (void);	// { dg-warning "unused" }
   a = x;
 }
 
@@ -162,7 +162,7 @@ template <int N>
 void
 f17 (int x)
 {
-  long a;	// { dg-warning "set but not used" }
+  long a;	// { dg-warning "unused" }
   int b;
   a = b = x;
 }
@@ -171,7 +171,7 @@ template <int N>
 void
 f18 (int x)
 {
-  int a;	// { dg-warning "set but not used" }
+  int a;	// { dg-warning "unused" }
   int b;
   a = (char) (b = x);
 }
@@ -193,7 +193,7 @@ f20 (int x)
 {
   static int a[] = { 3, 4, 5, 6 };
   static int b[] = { 4, 5, 6, 7 };
-  static int c[] = { 5, 6, 7, 8 };	// { dg-warning "set but not used" }
+  static int c[] = { 5, 6, 7, 8 };	// { dg-warning "unused" }
   c[1] = 1;
   return x ? a : b;
 }
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-var-7.C b/gcc/testsuite/g++.dg/warn/Wunused-var-7.C
index cf1b605c..3479fdf2 100644
--- a/gcc/testsuite/g++.dg/warn/Wunused-var-7.C
+++ b/gcc/testsuite/g++.dg/warn/Wunused-var-7.C
@@ -5,8 +5,8 @@ template <int N>
 void
 f1 (void)
 {
-  _Complex int a;	// { dg-warning "set but not used" }
-  _Complex double b;	// { dg-warning "set but not used" }
+  _Complex int a;	// { dg-warning "unused" }
+  _Complex double b;	// { dg-warning "unused" }
   __real__ a = 1;
   __imag__ a = 2;
   __real__ b = 3.0;
diff --git a/gcc/testsuite/gcc.dg/Wunused-parm-1.c b/gcc/testsuite/gcc.dg/Wunused-parm-1.c
index bddbd83a..0fdf5faf 100644
--- a/gcc/testsuite/gcc.dg/Wunused-parm-1.c
+++ b/gcc/testsuite/gcc.dg/Wunused-parm-1.c
@@ -20,7 +20,7 @@ f2 (int x, int y)
 
 int
 f3 (int a,	/* { dg-warning "unused parameter" } */
-    int b,	/* { dg-warning "set but not used" } */
+    int b,	/* { dg-warning "unused parameter" } */
     int c)
 {
   b = 1;
diff --git a/gcc/testsuite/gcc.dg/Wunused-var-1.c b/gcc/testsuite/gcc.dg/Wunused-var-1.c
index d60dd70e..c326a3c6 100644
--- a/gcc/testsuite/gcc.dg/Wunused-var-1.c
+++ b/gcc/testsuite/gcc.dg/Wunused-var-1.c
@@ -16,7 +16,7 @@ f1 (void)
 void
 f2 (void)
 {
-  int a;	/* { dg-warning "set but not used" } */
+  int a;	/* { dg-warning "unused variable" } */
   void foo (void)
   {
     a = 2;
diff --git a/gcc/testsuite/obj-c++.dg/set-not-used-1.mm b/gcc/testsuite/obj-c++.dg/set-not-used-1.mm
index 21ce962e..5b4c57fe 100644
--- a/gcc/testsuite/obj-c++.dg/set-not-used-1.mm
+++ b/gcc/testsuite/obj-c++.dg/set-not-used-1.mm
@@ -21,9 +21,9 @@
 
 int main (void)
 {
-  obj *a;		/* { dg-bogus "set but not used" } */
-  obj *b;		/* { dg-bogus "set but not used" } */
-  obj *c;		/* { dg-warning "set but not used" } */
+  obj *a;		/* { dg-bogus "unused" } */
+  obj *b;		/* { dg-bogus "unused" } */
+  obj *c;		/* { dg-warning "unused" } */
 
   a = [obj new];
   b = [obj new];
diff --git a/gcc/testsuite/objc.dg/set-not-used-1.m b/gcc/testsuite/objc.dg/set-not-used-1.m
index 21ce962e..5b4c57fe 100644
--- a/gcc/testsuite/objc.dg/set-not-used-1.m
+++ b/gcc/testsuite/objc.dg/set-not-used-1.m
@@ -21,9 +21,9 @@
 
 int main (void)
 {
-  obj *a;		/* { dg-bogus "set but not used" } */
-  obj *b;		/* { dg-bogus "set but not used" } */
-  obj *c;		/* { dg-warning "set but not used" } */
+  obj *a;		/* { dg-bogus "unused" } */
+  obj *b;		/* { dg-bogus "unused" } */
+  obj *c;		/* { dg-warning "unused" } */
 
   a = [obj new];
   b = [obj new];
-- 
1.7.8.2


Reply to: