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> 2018-12-04 Marek Polacek <polacek@redhat.com>
PR c++/88184 - ICE when treating name as template-name. PR c++/88184 - ICE when treating name as template-name.
......
...@@ -12187,7 +12187,8 @@ grokdeclarator (const cp_declarator *declarator, ...@@ -12187,7 +12187,8 @@ grokdeclarator (const cp_declarator *declarator,
} }
if (ctype && TREE_CODE (type) == FUNCTION_TYPE && staticp < 2 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))) && IDENTIFIER_NEWDEL_OP_P (unqualified_id)))
{ {
cp_cv_quals real_quals = memfn_quals; cp_cv_quals real_quals = memfn_quals;
...@@ -12267,8 +12268,7 @@ grokdeclarator (const cp_declarator *declarator, ...@@ -12267,8 +12268,7 @@ grokdeclarator (const cp_declarator *declarator,
error ("invalid use of %<::%>"); error ("invalid use of %<::%>");
return error_mark_node; return error_mark_node;
} }
else if (TREE_CODE (type) == FUNCTION_TYPE else if (FUNC_OR_METHOD_TYPE_P (type) && unqualified_id)
|| TREE_CODE (type) == METHOD_TYPE)
{ {
int publicp = 0; int publicp = 0;
tree function_context; 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> 2018-12-04 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/87320 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