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);
     }

Reply via email to