Commit a4296998 by Nathan Sidwell Committed by Nathan Sidwell

[C++ PATCH] initializer_list diagnostic

https://gcc.gnu.org/ml/gcc-patches/2018-02/msg00434.html
	* class.c (finish_struct): Fix std:initializer_list diagnostic
	formatting.

	* g++.dg/cpp0x/initlist93.C: Adjust diagnostic.

From-SVN: r257496
parent 74e6f14a
2018-02-08 Nathan Sidwell <nathan@acm.org>
* class.c (finish_struct): Fix std:initializer_list diagnostic
formatting.
2018-02-08 Paolo Carlini <paolo.carlini@oracle.com> 2018-02-08 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/83204 PR c++/83204
......
...@@ -7062,7 +7062,7 @@ finish_struct (tree t, tree attributes) ...@@ -7062,7 +7062,7 @@ finish_struct (tree t, tree attributes)
/* People keep complaining that the compiler crashes on an invalid /* People keep complaining that the compiler crashes on an invalid
definition of initializer_list, so I guess we should explicitly definition of initializer_list, so I guess we should explicitly
reject it. What the compiler internals care about is that it's a reject it. What the compiler internals care about is that it's a
template and has a pointer field followed by an integer field. */ template and has a pointer field followed by size_type field. */
bool ok = false; bool ok = false;
if (processing_template_decl) if (processing_template_decl)
{ {
...@@ -7075,9 +7075,8 @@ finish_struct (tree t, tree attributes) ...@@ -7075,9 +7075,8 @@ finish_struct (tree t, tree attributes)
} }
} }
if (!ok) if (!ok)
fatal_error (input_location, fatal_error (input_location, "definition of %qD does not match "
"definition of std::initializer_list does not match " "%<#include <initializer_list>%>", TYPE_NAME (t));
"#include <initializer_list>");
} }
input_location = saved_loc; input_location = saved_loc;
......
2018-02-08 Nathan Sidwell <nathan@acm.org>
* g++.dg/cpp0x/initlist93.C: Adjust diagnostic.
2018-02-08 Richard Sandiford <richard.sandiford@linaro.org> 2018-02-08 Richard Sandiford <richard.sandiford@linaro.org>
PR tree-optimization/84265 PR tree-optimization/84265
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
namespace std namespace std
{ {
template <class> class initializer_list // { dg-error "definition of std::initializer_list does not match" } template <class> class initializer_list // { dg-error "definition of .*std::initializer_list.* does not match" }
{ {
int *_M_array; int *_M_array;
int _M_len; int _M_len;
......
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