[Bug libgomp/106906] libgomp/env.c: 3 * boolean value assigned to pointer
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
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
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: