https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70057
--- Comment #2 from Manuel López-Ibáñez <manu at gcc dot gnu.org> ---
(In reply to Manuel López-Ibáñez from comment #1)
> The C++ FE has the tendency to give diagnostics very deep in the call stack,
> where there is little knowledge of the context. It would be much better to
> signal to the caller that something went wrong and let them decide what to
> say. It would also probably be faster by avoiding checking error conditions
> multiple times and not passing down information that is only used to provide
> context.
And constexpr.c is just full of this. An endless supply of duplicated
diagnostics:
prog.cc:1:17: warning: division by zero [-Wdiv-by-zero]
static_assert(7 / 0, "X");
~~^~~
prog.cc:1:1: error: non-constant condition for static assertion
static_assert(7 / 0, "X");
^~~~~~~~~~~~~
prog.cc:1:1: error: division by zero is not a constant-expression
And pretty-printing arbitrary expressions is... not pretty:
prog.cc:1:25: warning: division by zero [-Wdiv-by-zero]
constexpr int x = 0.3 / 0;
~~~~^~~
prog.cc:1:25: error: '(2.9999999999999999e-1 / 0.0)' is not a constant
expression