https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114980
Xi Ruoyao <xry111 at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2024-05-08 Assignee|unassigned at gcc dot gnu.org |xry111 at gcc dot gnu.org Status|UNCONFIRMED |ASSIGNED Ever confirmed|0 |1 --- Comment #7 from Xi Ruoyao <xry111 at gcc dot gnu.org> --- Patch only tested barely: diff --git a/gcc/opts-common.cc b/gcc/opts-common.cc index 4a2dff243b0..2d1e86ff94f 100644 --- a/gcc/opts-common.cc +++ b/gcc/opts-common.cc @@ -1152,6 +1152,7 @@ prune_options (struct cl_decoded_option **decoded_options, unsigned int options_to_prepend = 0; unsigned int Wcomplain_wrong_lang_idx = 0; unsigned int fdiagnostics_color_idx = 0; + unsigned int fdiagnostics_urls_idx = 0; /* Remove arguments which are negated by others after them. */ new_decoded_options_count = 0; @@ -1185,6 +1186,12 @@ prune_options (struct cl_decoded_option **decoded_options, ++options_to_prepend; fdiagnostics_color_idx = i; continue; + case OPT_fdiagnostics_urls_: + gcc_checking_assert (i != 0); + if (fdiagnostics_urls_idx == 0) + ++options_to_prepend; + fdiagnostics_urls_idx = i; + continue; default: gcc_assert (opt_idx < cl_options_count); @@ -1248,6 +1255,12 @@ keep: = old_decoded_options[fdiagnostics_color_idx]; new_decoded_options_count++; } + if (fdiagnostics_urls_idx != 0) + { + new_decoded_options[argv_0 + options_prepended++] + = old_decoded_options[fdiagnostics_urls_idx]; + new_decoded_options_count++; + } gcc_checking_assert (options_to_prepend == options_prepended); }