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.
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_:
{
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
--- /dev/null
+/* PR middle-end/106133 */
+/* { dg-do compile } */
+/* { dg-options "-fdiagnostics-format=json-file -E" } */