middle-end: always find a basename for -fdiagnostics-format=*

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.
This commit is contained in:
Martin Liska 2023-01-10 15:14:05 +01:00
parent bd2d206b7b
commit c5e2c3dd6a
3 changed files with 17 additions and 6 deletions

View 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_:
{

View 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

View File

@ -0,0 +1,3 @@
/* PR middle-end/106133 */
/* { dg-do compile } */
/* { dg-options "-fdiagnostics-format=json-file -E" } */