[Bug libgomp/106906] libgomp/env.c: 3 * boolean value assigned to pointer

2022-09-13 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106906

Jakub Jelinek  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|UNCONFIRMED |RESOLVED

--- Comment #3 from Jakub Jelinek  ---
Tweaked (not saying fixed because there is no bug to fix).

[Bug libgomp/106906] libgomp/env.c: 3 * boolean value assigned to pointer

2022-09-13 Thread cvs-commit at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106906

--- Comment #2 from CVS Commits  ---
The master branch has been updated by Jakub Jelinek :

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

commit r13-2652-ge11babbfac21163118b69dd25b468ade80dbe8de
Author: Jakub Jelinek 
Date:   Tue Sep 13 19:00:02 2022 +0200

libgomp: Appease some static analyzers [PR106906]

While icv_addr[1] = false; assignments where icv_addr has void *
element type is correct and matches how it is used (in those cases
the void * pointer is then cast to bool and used that way), there is no
reason not to add explicit (void *) casts there which are there already
for (void *) true.  And, there is in fact even no point in actually
doing those stores at all because we set that pointer to NULL a few
lines earlier.  So, this patch adds the explicit casts and then
comments those out to show intent.

2022-09-13  Jakub Jelinek  

PR libgomp/106906
* env.c (get_icv_member_addr): Cast false to void * before
assigning
it to icv_addr[1], and comment the whole assignment out.

[Bug libgomp/106906] libgomp/env.c: 3 * boolean value assigned to pointer

2022-09-12 Thread jakub at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106906

--- Comment #1 from Jakub Jelinek  ---
Well, it is correct as is, because while icv_addr[3] and params[3] have void *
type, they are actually cast to various types (either other pointers or bool
etc.).
But there is no need not to make the cast explicit and after all, there is
icv_addr[0] = icv_addr[1] = icv_addr[2] = NULL;
before the switch, so zero reinitialization is just a waste of time unless
compiler optimizes that out.
So we could go for:
2022-09-12  Jakub Jelinek  

PR libgomp/106906
* env.c (get_icv_member_addr): Cast false to void * before assigning
it to icv_addr[1], and comment the whole assignment out.

--- libgomp/env.c.jj2022-09-12 10:32:00.935086858 +0200
+++ libgomp/env.c   2022-09-12 13:27:22.893571697 +0200
@@ -1892,14 +1892,14 @@ get_icv_member_addr (struct gomp_initial
 {
 case GOMP_ICV_NTEAMS:
   icv_addr[0] = &icvs->nteams_var;
-  icv_addr[1] = false;
+  /* icv_addr[1] = (void *) false; */
   break;
 case GOMP_ICV_DYNAMIC:
   icv_addr[0] = &(*icvs).dyn_var;
   break;
 case GOMP_ICV_TEAMS_THREAD_LIMIT:
   icv_addr[0] = &icvs->teams_thread_limit_var;
-  icv_addr[1] = false;
+  /* icv_addr[1] = (void *) false; */
   break;
 case GOMP_ICV_SCHEDULE:
   icv_addr[0] = &icvs->run_sched_var;
@@ -1907,7 +1907,7 @@ get_icv_member_addr (struct gomp_initial
   break;
 case GOMP_ICV_THREAD_LIMIT:
   icv_addr[0] = &icvs->thread_limit_var;
-  icv_addr[1] = false;
+  /* icv_addr[1] = (void *) false; */
   icv_addr[2] = (void *) UINT_MAX;
   break;
 case GOMP_ICV_NTHREADS: