]> git.ipfire.org Git - thirdparty/gcc.git/blobdiff - gcc/diagnostic.c
* builtins.c (expand_builtin, expand_builtin_object_size,
[thirdparty/gcc.git] / gcc / diagnostic.c
index c712608d73b8597e5a4617c79fe170d252a0e581..6bbfe9a36e7b350030f82aa3aa27249d1c356652 100644 (file)
@@ -261,10 +261,11 @@ diagnostic_action_after_output (diagnostic_context *context,
 /* Prints out, if necessary, the name of the current function
    that caused an error.  Called from all error and warning functions.  */
 void
-diagnostic_report_current_function (diagnostic_context *context)
+diagnostic_report_current_function (diagnostic_context *context,
+                                   diagnostic_info *diagnostic)
 {
   diagnostic_report_current_module (context);
-  lang_hooks.print_error_function (context, input_filename);
+  lang_hooks.print_error_function (context, input_filename, diagnostic);
 }
 
 void
@@ -302,7 +303,7 @@ static void
 default_diagnostic_starter (diagnostic_context *context,
                            diagnostic_info *diagnostic)
 {
-  diagnostic_report_current_function (context);
+  diagnostic_report_current_function (context, diagnostic);
   pp_set_prefix (context->printer, diagnostic_build_prefix (diagnostic));
 }
 
@@ -414,6 +415,8 @@ diagnostic_report_diagnostic (diagnostic_context *context,
                      " [", cl_options[diagnostic->option_index].opt_text, "]", NULL));
 
       diagnostic->message.locus = &diagnostic->location;
+      diagnostic->message.abstract_origin = &diagnostic->abstract_origin;
+      diagnostic->abstract_origin = NULL;
       pp_format (context->printer, &diagnostic->message);
       (*diagnostic_starter (context)) (context, diagnostic);
       pp_output_formatted_text (context->printer);
@@ -421,6 +424,7 @@ diagnostic_report_diagnostic (diagnostic_context *context,
       pp_flush (context->printer);
       diagnostic_action_after_output (context, diagnostic);
       diagnostic->message.format_spec = saved_format_spec;
+      diagnostic->abstract_origin = NULL;
     }
 
   context->lock--;
@@ -472,6 +476,7 @@ verbatim (const char *gmsgid, ...)
   text.args_ptr = ≈
   text.format_spec = _(gmsgid);
   text.locus = NULL;
+  text.abstract_origin = NULL;
   pp_format_verbatim (global_dc->printer, &text);
   pp_flush (global_dc->printer);
   va_end (ap);