Commit ad172f72 by Andrew Stubbs Committed by Andrew Stubbs

Add sorry_at diagnostic function.

The plain "sorry" diagnostic only gives the "current" location, which is
typically the last line of the function or translation unit by time we get to
the back end.

GCN uses "sorry" to report unsupported language features, such as static
constructors, so it's useful to have a "sorry_at" variant.

This patch implements "sorry_at" according to the pattern of the other "at"
variants.

2018-09-11  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* diagnostic-core.h (sorry_at): New prototype.
	* diagnostic.c (sorry_at): New function.

From-SVN: r264204
parent 075cdac3
2018-09-11 Andrew Stubbs <ams@codesourcery.com>
* diagnostic-core.h (sorry_at): New prototype.
* diagnostic.c (sorry_at): New function.
2018-09-11 Aldy Hernandez <aldyh@redhat.com> 2018-09-11 Aldy Hernandez <aldyh@redhat.com>
* tree-vrp (extract_range_from_binary_expr_1): Treat all divisions * tree-vrp (extract_range_from_binary_expr_1): Treat all divisions
......
...@@ -96,6 +96,7 @@ extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); ...@@ -96,6 +96,7 @@ extern bool permerror (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern bool permerror (rich_location *, const char *, extern bool permerror (rich_location *, const char *,
...) ATTRIBUTE_GCC_DIAG(2,3); ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2); extern void sorry (const char *, ...) ATTRIBUTE_GCC_DIAG(1,2);
extern void sorry_at (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); extern void inform (location_t, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void inform (rich_location *, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3); extern void inform (rich_location *, const char *, ...) ATTRIBUTE_GCC_DIAG(2,3);
extern void inform_n (location_t, unsigned HOST_WIDE_INT, const char *, extern void inform_n (location_t, unsigned HOST_WIDE_INT, const char *,
......
...@@ -1443,6 +1443,18 @@ sorry (const char *gmsgid, ...) ...@@ -1443,6 +1443,18 @@ sorry (const char *gmsgid, ...)
va_end (ap); va_end (ap);
} }
/* Same as above, but use location LOC instead of input_location. */
void
sorry_at (location_t loc, const char *gmsgid, ...)
{
auto_diagnostic_group d;
va_list ap;
va_start (ap, gmsgid);
rich_location richloc (line_table, loc);
diagnostic_impl (&richloc, -1, gmsgid, &ap, DK_SORRY);
va_end (ap);
}
/* Return true if an error or a "sorry" has been seen. Various /* Return true if an error or a "sorry" has been seen. Various
processing is disabled after errors. */ processing is disabled after errors. */
bool bool
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment