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)
