This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [commit] Fix -Wunused warning in dec-thread.c.


On Tuesday 12 January 2010 07:56:11, Joel Brobecker wrote:
> From: brobecke <brobecke@f8352e7e-cb20-0410-8ce7-b5d9e71c585c>
> 
> Hello,
> 
> The compiler complains that the result of a couple of *PTR++ is never
> used.  This is because the compiler is tricked by the way the pointer
> was defined.  For instance:
> 
>   | dec_thread_count_gdb_threads (struct thread_info *ignored, void *context)
>   | {
>   |   int *count = (int *) context;
> 
> The compiler complains that the result is never used for the following
> line:
> 
>   |   *count++;
> 
> The result is stored for the caller to use, so it is in fact potentially
> used, but elsewhere...
> 
> gdb/ChangeLog:
> 
>         * dec-thread.c (dec_thread_count_gdb_threads)
>         (dec_thread_add_gdb_thread): Prevent -Wunused warning.
> 
> Checked in.
> 
> ---
>  gdb/dec-thread.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/gdb/dec-thread.c b/gdb/dec-thread.c
> index 5083221..be6db4c 100644
> --- a/gdb/dec-thread.c
> +++ b/gdb/dec-thread.c
> @@ -352,7 +352,7 @@ dec_thread_count_gdb_threads (struct thread_info *ignored, void *context)
>  {
>    int *count = (int *) context;
>  
> -  *count++;
> +  (void) *count++; /* The cast to void is to prevent a -Wunused warning.  */
>    return 0;
>  }
>  

Does the resulting gdb actually count threads correctly?
'++' has higher precedence than '*', so '*count++'
is incrementing the count pointer, not what it points to.

The correct fix is either:

 -  *count++;
 +  (*count)++;

or 

 -  *count++;
 +  ++*count;

Grepping for `grep iterate_over * | grep count' shows that the
`(*count)++' form is used at least in two places, giter_count
and count_events_callback:

 aix-thread.c:/* iterate_over_threads() callback for counting GDB threads.
 aix-thread.c:  iterate_over_threads (giter_count, &gcount);
 dec-thread.c:  iterate_over_threads (dec_thread_count_gdb_threads,
 linux-nat.c:      iterate_over_lwps (filter, count_events_callback, &num_events);

-- 
Pedro Alves


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]