]> git.ipfire.org Git - people/ms/gcc.git/commitdiff
middle-end: always find a basename for -fdiagnostics-format=*
authorMartin Liska <mliska@suse.cz>
Tue, 10 Jan 2023 14:14:05 +0000 (15:14 +0100)
committerMartin Liska <mliska@suse.cz>
Thu, 16 Mar 2023 14:50:00 +0000 (15:50 +0100)
In some situations, x_dump_base_name is NULL and thus we can
and should use x_main_input_basename which should never be NULL.

PR middle-end/106133

gcc/ChangeLog:

* gcc.cc (driver_handle_option): Use x_main_input_basename
if x_dump_base_name is null.
* opts.cc (common_handle_option): Likewise.

gcc/testsuite/ChangeLog:

* c-c++-common/pr106133.c: New test.

gcc/gcc.cc
gcc/opts.cc
gcc/testsuite/c-c++-common/pr106133.c [new file with mode: 0644]

index becc56051a88d37e3e7eaa6ec208402861b0b9c6..16bb07f2cdc5edf0a25ce1bd221d417d6bc41d3c 100644 (file)
@@ -4291,9 +4291,13 @@ driver_handle_option (struct gcc_options *opts,
       break;
 
     case OPT_fdiagnostics_format_:
-      diagnostic_output_format_init (dc, opts->x_dump_base_name,
-                                    (enum diagnostics_output_format)value);
-      break;
+       {
+         const char *basename = (opts->x_dump_base_name ? opts->x_dump_base_name
+                                 : opts->x_main_input_basename);
+         diagnostic_output_format_init (dc, basename,
+                                        (enum diagnostics_output_format)value);
+         break;
+       }
 
     case OPT_Wa_:
       {
index 3bc17a187fe18295875e72c8ce921227ccf72cd1..f102c1328b9b971efa6bd3c121da0a5f5013d2f0 100644 (file)
@@ -2878,9 +2878,13 @@ common_handle_option (struct gcc_options *opts,
       break;
 
     case OPT_fdiagnostics_format_:
-      diagnostic_output_format_init (dc, opts->x_dump_base_name,
-                                    (enum diagnostics_output_format)value);
-      break;
+       {
+         const char *basename = (opts->x_dump_base_name ? opts->x_dump_base_name
+                                 : opts->x_main_input_basename);
+         diagnostic_output_format_init (dc, basename,
+                                        (enum diagnostics_output_format)value);
+         break;
+       }
 
     case OPT_fdiagnostics_parseable_fixits:
       dc->extra_output_kind = (value
diff --git a/gcc/testsuite/c-c++-common/pr106133.c b/gcc/testsuite/c-c++-common/pr106133.c
new file mode 100644 (file)
index 0000000..7d2c5af
--- /dev/null
@@ -0,0 +1,3 @@
+/* PR middle-end/106133 */
+/* { dg-do compile } */
+/* { dg-options "-fdiagnostics-format=json-file -E" } */