Commit 586add7f by Paolo Carlini Committed by Paolo Carlini

re PR c++/84636 (internal compiler error: Segmentation fault (identifier_p()/grokdeclarator()))

/cp
2018-12-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84636
	* decl.c (grokdeclarator): Avoid crashing on an anonymous bit-field
	with function type.

/testsuite
2018-12-04  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/84636
	* g++.dg/parse/bitfield6.C: New.

From-SVN: r266807
parent 6c620b07
2018-12-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84636
* decl.c (grokdeclarator): Avoid crashing on an anonymous bit-field
with function type.
2018-12-04 Marek Polacek <polacek@redhat.com>
PR c++/88184 - ICE when treating name as template-name.
......
......@@ -12187,7 +12187,8 @@ grokdeclarator (const cp_declarator *declarator,
}
if (ctype && TREE_CODE (type) == FUNCTION_TYPE && staticp < 2
&& !(identifier_p (unqualified_id)
&& !(unqualified_id
&& identifier_p (unqualified_id)
&& IDENTIFIER_NEWDEL_OP_P (unqualified_id)))
{
cp_cv_quals real_quals = memfn_quals;
......@@ -12267,8 +12268,7 @@ grokdeclarator (const cp_declarator *declarator,
error ("invalid use of %<::%>");
return error_mark_node;
}
else if (TREE_CODE (type) == FUNCTION_TYPE
|| TREE_CODE (type) == METHOD_TYPE)
else if (FUNC_OR_METHOD_TYPE_P (type) && unqualified_id)
{
int publicp = 0;
tree function_context;
......
2018-12-04 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/84636
* g++.dg/parse/bitfield6.C: New.
2018-12-04 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/87320
......
// PR c++/84636
typedef void a();
struct A {
a: 1; // { dg-error "bit-field .\\<anonymous\\>. with non-integral type" }
};
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