On Fri, 30 Jan 2026, Torbjörn SVENSSON wrote:

> Cleanup as discussed in 
> https://gcc.gnu.org/pipermail/gcc-patches/2026-January/707217.html
> 
> Ok for trunk?

OK if this passes a build test and nobody objects within 24h.
Btw, I had created PR123892 for tracking this, so please mention it in
the changelog.

Thanks,
Richard.

> --
> 
> Prepare to remove CONST_CAST2 macro from gcc/system.h
> 
> gcc/ChangeLog:
> 
>       * collect2.cc: Migrate from CONST_CAST2() macro to
>       const_cast<>() C++ expression.
>       * config/sparc/driver-sparc.cc: Likewise.
>       * gcc-ar.cc: Likewise.
>       * gcc.cc: Likewise.
>       * toplev.c: Likewise.
>       * tree-nested.cc: Likewise.
> 
> Signed-off-by: Torbjörn SVENSSON <[email protected]>
> ---
>  gcc/collect2.cc                  | 33 +++++++++++++++-----------------
>  gcc/config/sparc/driver-sparc.cc |  5 ++---
>  gcc/gcc-ar.cc                    |  5 ++---
>  gcc/gcc.cc                       |  2 +-
>  gcc/toplev.cc                    |  3 +--
>  gcc/tree-nested.cc               |  2 +-
>  6 files changed, 22 insertions(+), 28 deletions(-)
> 
> diff --git a/gcc/collect2.cc b/gcc/collect2.cc
> index 228f2006d57..09ae31dcfce 100644
> --- a/gcc/collect2.cc
> +++ b/gcc/collect2.cc
> @@ -579,7 +579,7 @@ static void
>  maybe_run_lto_and_relink (char **lto_ld_argv, char **object_lst,
>                         const char **object, bool force)
>  {
> -  const char **object_file = CONST_CAST2 (const char **, char **, 
> object_lst);
> +  const char **object_file = const_cast<const char **> (object_lst);
>  
>    int num_lto_c_args = 1;    /* Allow space for the terminating NULL.  */
>  
> @@ -623,7 +623,7 @@ maybe_run_lto_and_relink (char **lto_ld_argv, char 
> **object_lst,
>        objects removed.  */
>  
>        lto_c_argv = (char **) xcalloc (num_lto_c_args, sizeof (char *));
> -      lto_c_ptr = CONST_CAST2 (const char **, char **, lto_c_argv);
> +      lto_c_ptr = const_cast<const char **> (lto_c_argv);
>  
>        *lto_c_ptr++ = lto_wrapper;
>  
> @@ -921,11 +921,11 @@ main (int argc, char **argv)
>       set first, in case a diagnostic is issued.  */
>  
>    ld1_argv = XCNEWVEC (char *, argc + 4);
> -  ld1 = CONST_CAST2 (const char **, char **, ld1_argv);
> +  ld1 = const_cast<const char **> (ld1_argv);
>    ld2_argv = XCNEWVEC (char *, argc + 11);
> -  ld2 = CONST_CAST2 (const char **, char **, ld2_argv);
> +  ld2 = const_cast<const char **> (ld2_argv);
>    object_lst = XCNEWVEC (char *, argc);
> -  object = CONST_CAST2 (const char **, char **, object_lst);
> +  object = const_cast<const char **> (object_lst);
>  
>  #ifdef DEBUG
>    debug = true;
> @@ -1045,7 +1045,7 @@ main (int argc, char **argv)
>    num_c_args += 8;
>  
>    c_argv = XCNEWVEC (char *, num_c_args);
> -  c_ptr = CONST_CAST2 (const char **, char **, c_argv);
> +  c_ptr = const_cast<const char **> (c_argv);
>  
>    if (argc < 2)
>      fatal_error (input_location, "no arguments");
> @@ -1348,13 +1348,12 @@ main (int argc, char **argv)
>                     if (add_nbr >= add_max)
>                       {
>                         int pos =
> -                         object - CONST_CAST2 (const char **, char **,
> -                                               object_lst);
> +                         object - const_cast<const char **> (object_lst);
>                         add_max = (add_max == 0) ? 16 : add_max * 2;
>                         object_lst = XRESIZEVEC (char *, object_lst,
>                                                     object_nbr + add_max);
> -                       object = CONST_CAST2 (const char **, char **,
> -                                             object_lst) + pos;
> +                       object =
> +                         const_cast<const char **> (object_lst) + pos;
>                         object_nbr += add_max;
>                       }
>                     *object++ = xstrdup (buf);
> @@ -1518,8 +1517,7 @@ main (int argc, char **argv)
>       would otherwise reference them all, hence drag all the corresponding
>       objects even if nothing else is referenced.  */
>    {
> -    const char **export_object_lst
> -      = CONST_CAST2 (const char **, char **, object_lst);
> +    const char **export_object_lst = const_cast<const char **> (object_lst);
>  
>      struct id *list = libs.first;
>  
> @@ -1709,8 +1707,8 @@ main (int argc, char **argv)
>        if (strip_flag)
>       {
>         char **real_strip_argv = XCNEWVEC (char *, 3);
> -       const char ** strip_argv = CONST_CAST2 (const char **, char **,
> -                                               real_strip_argv);
> +       const char ** strip_argv =
> +         const_cast<const char **> (real_strip_argv);
>  
>         strip_argv[0] = strip_file_name;
>         strip_argv[1] = output_file;
> @@ -2343,7 +2341,7 @@ scan_prog_file (const char *prog_name, scanpass 
> which_pass,
>    void (*quit_handler) (int);
>  #endif
>    char *real_nm_argv[4];
> -  const char **nm_argv = CONST_CAST2 (const char **, char**, real_nm_argv);
> +  const char **nm_argv = const_cast<const char **>(real_nm_argv);
>    int argc = 0;
>    struct pex_obj *pex;
>    const char *errmsg;
> @@ -2527,7 +2525,7 @@ scan_libraries (const char *prog_name)
>    void (*quit_handler) (int);
>  #endif
>    char *real_ldd_argv[4];
> -  const char **ldd_argv = CONST_CAST2 (const char **, char **, 
> real_ldd_argv);
> +  const char **ldd_argv = const_cast<const char **>(real_ldd_argv);
>    int argc = 0;
>    struct pex_obj *pex;
>    const char *errmsg;
> @@ -3029,8 +3027,7 @@ do_dsymutil (const char *output_file) {
>    const char *dsymutil = 0;
>    struct pex_obj *pex;
>    char **real_argv = XCNEWVEC (char *, verbose ? 4 : 3);
> -  const char ** argv = CONST_CAST2 (const char **, char **,
> -                                 real_argv);
> +  const char ** argv = const_cast<const char **>(real_argv);
>  /* For cross-builds search the PATH using target-qualified name if we
>     have not already found a suitable dsymutil.  In practice, all modern
>     versions of dsymutil handle all supported archs, however the approach
> diff --git a/gcc/config/sparc/driver-sparc.cc 
> b/gcc/config/sparc/driver-sparc.cc
> index d22d36679c6..993dc020bea 100644
> --- a/gcc/config/sparc/driver-sparc.cc
> +++ b/gcc/config/sparc/driver-sparc.cc
> @@ -127,13 +127,12 @@ host_detect_local_cpu (int argc, const char **argv)
>    kc = kstat_open ();
>    if (kc != NULL)
>      {
> -      ksp = kstat_lookup (kc, CONST_CAST2 (char *, const char *, "cpu_info"),
> -                       -1, NULL);
> +      ksp = kstat_lookup (kc, const_cast<char *> ("cpu_info"), -1, NULL);
>        if (ksp != NULL
>         && kstat_read (kc, ksp, NULL) != -1
>         && ksp->ks_type == KSTAT_TYPE_NAMED)
>       brand = (kstat_named_t *)
> -       kstat_data_lookup (ksp, CONST_CAST2 (char *, const char *, "brand"));
> +       kstat_data_lookup (ksp, const_cast<char *> ("brand"));
>        if (brand != NULL && brand->data_type == KSTAT_DATA_STRING)
>       buf = KSTAT_NAMED_STR_PTR (brand);
>      }
> diff --git a/gcc/gcc-ar.cc b/gcc/gcc-ar.cc
> index c173ee067e1..755dbb88914 100644
> --- a/gcc/gcc-ar.cc
> +++ b/gcc/gcc-ar.cc
> @@ -249,8 +249,7 @@ main (int ac, char **av)
>         fprintf (stderr, "Cannot open temporary file %s\n", rsp_file);
>         exit (1);
>       }
> -      status = writeargv (
> -       CONST_CAST2 (char * const *, const char **, nargv) + 1, f);
> +      status = writeargv (const_cast<char * const *> (nargv) + 1, f);
>        if (status)
>       {
>         fprintf (stderr, "Cannot write to temporary file %s\n", rsp_file);
> @@ -273,7 +272,7 @@ main (int ac, char **av)
>    /* ??? the const is misplaced in pex_one's argv? */
>    err_msg = pex_one (PEX_LAST|PEX_SEARCH,
>                    exe_name,
> -                  CONST_CAST2 (char * const *, const char **, nargv),
> +                  const_cast<char * const *> (nargv),
>                    concat ("gcc-", exe_name, NULL),
>                    NULL,NULL,  &status, &err);
>    if (err_msg)
> diff --git a/gcc/gcc.cc b/gcc/gcc.cc
> index 6b6f6f87c52..f906198359d 100644
> --- a/gcc/gcc.cc
> +++ b/gcc/gcc.cc
> @@ -7891,7 +7891,7 @@ run_attempt (const char **new_argv, const char 
> *out_temp,
>      fatal_error (input_location, "%<pex_init%> failed: %m");
>  
>    errmsg = pex_run (pex, pex_flags, new_argv[0],
> -                 CONST_CAST2 (char *const *, const char **, &new_argv[1]),
> +                 const_cast<char *const *> (&new_argv[1]),
>                   out_temp, err_temp, &err);
>    if (errmsg != NULL)
>      {
> diff --git a/gcc/toplev.cc b/gcc/toplev.cc
> index 9c93eb8ce1d..682459220a2 100644
> --- a/gcc/toplev.cc
> +++ b/gcc/toplev.cc
> @@ -2328,8 +2328,7 @@ toplev::main (int argc, char **argv)
>  
>    /* Convert the options to an array.  */
>    decode_cmdline_options_to_array_default_mask (argc,
> -                                             CONST_CAST2 (const char **,
> -                                                          char **, argv),
> +                                             const_cast<const char **> 
> (argv),
>                                               &save_decoded_options,
>                                               &save_decoded_options_count);
>  
> diff --git a/gcc/tree-nested.cc b/gcc/tree-nested.cc
> index 090d1b5264a..cdccc51d33e 100644
> --- a/gcc/tree-nested.cc
> +++ b/gcc/tree-nested.cc
> @@ -3397,7 +3397,7 @@ fixup_vla_decls (tree block)
>  bool
>  fold_mem_refs (tree *const &e, void *data ATTRIBUTE_UNUSED)
>  {
> -  tree *ref_p = CONST_CAST2 (tree *, const tree *, (const tree *)e);
> +  tree *ref_p = const_cast<tree *> (e);
>    *ref_p = fold (*ref_p);
>    return true;
>  }
> 

-- 
Richard Biener <[email protected]>
SUSE Software Solutions Germany GmbH,
Frankenstrasse 146, 90461 Nuernberg, Germany;
GF: Jochen Jaser, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Reply via email to