* lib/obstack.in.h (obstack_free): Omit unnecessary cast.
* lib/printf-args.c (PRINTF_FETCHARGS): Omit unnecessary casts.
* lib/vma-iter.c (rof_open): Omit unnecessary casts.
---
 ChangeLog         | 5 +++++
 lib/obstack.in.h  | 2 +-
 lib/printf-args.c | 9 +++------
 lib/vma-iter.c    | 6 +++---
 4 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 079abf281f..3627599299 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
 2026-05-07  Paul Eggert  <[email protected]>
 
+       Pacify GCC 16 -Wuseless-cast by omitting casts
+       * lib/obstack.in.h (obstack_free): Omit unnecessary cast.
+       * lib/printf-args.c (PRINTF_FETCHARGS): Omit unnecessary casts.
+       * lib/vma-iter.c (rof_open): Omit unnecessary casts.
+
        full-write: pacify GCC 16 -Wkeyword-macro
        * lib/full-write.c (const): Do not #define.  Instead, use CONST.
        (CONST): New macro.
diff --git a/lib/obstack.in.h b/lib/obstack.in.h
index b74c0908e1..b68e8fc9b9 100644
--- a/lib/obstack.in.h
+++ b/lib/obstack.in.h
@@ -487,7 +487,7 @@ extern int obstack_exit_failure;
 # define obstack_free(OBSTACK, OBJ)                                          \
   __extension__                                                                
      \
     ({ struct obstack *__o = (OBSTACK);                                        
      \
-       void *__obj = (void *) (OBJ);                                         \
+       void *__obj = OBJ;                                                    \
        if ((_OBSTACK_CPTR) __o->chunk < (_OBSTACK_CPTR) __obj                \
            && (_OBSTACK_CPTR) __obj < (_OBSTACK_CPTR) __o->chunk_limit)        
      \
          __o->next_free = __o->object_base = (char *) __obj;                 \
diff --git a/lib/printf-args.c b/lib/printf-args.c
index 2f7bf3da00..f2d0a58e23 100644
--- a/lib/printf-args.c
+++ b/lib/printf-args.c
@@ -208,13 +208,10 @@ PRINTF_FETCHARGS (va_list args, arguments *a)
            debug output.  Use a fallback in this case.  */
         if (ap->a.a_wide_string == NULL)
           {
+            /* No need for wide character constants, as these are
+               silently converted correctly.  */
             static const wchar_t wide_null_string[] =
-              {
-                (wchar_t)'(',
-                (wchar_t)'N', (wchar_t)'U', (wchar_t)'L', (wchar_t)'L',
-                (wchar_t)')',
-                (wchar_t)0
-              };
+              { '(', 'N', 'U', 'L', 'L', ')', 0 };
             ap->a.a_wide_string = wide_null_string;
           }
         break;
diff --git a/lib/vma-iter.c b/lib/vma-iter.c
index 85838060e1..1575d38be5 100644
--- a/lib/vma-iter.c
+++ b/lib/vma-iter.c
@@ -254,8 +254,8 @@ rof_open (struct rofile *rof, const char *filename)
           if (rof->auxmap != NULL)
             munmap (rof->auxmap, rof->auxmap_length);
         }
-      rof->auxmap = (void *) mmap ((void *) 0, size, PROT_READ | PROT_WRITE,
-                                   MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+      rof->auxmap = mmap ((void *) 0, size, PROT_READ | PROT_WRITE,
+                          MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
       if (rof->auxmap == (void *) -1)
         {
           close (fd);
@@ -264,7 +264,7 @@ rof_open (struct rofile *rof, const char *filename)
       rof->auxmap_length = size;
       rof->auxmap_start = (unsigned long) rof->auxmap;
       rof->auxmap_end = rof->auxmap_start + size;
-      rof->buffer = (char *) rof->auxmap;
+      rof->buffer = rof->auxmap;
      retry:
       /* Restart.  */
       if (lseek (fd, 0, SEEK_SET) < 0)
-- 
2.54.0


Reply via email to