re PR c++/65127 (internal compiler error: tree check: expected tree that contains 'decl minimal' structure, have 'addr_expr' in parsing_nsdmi, at cp/parser.c:18311)

PR c++/65127
	* parser.c (parsing_nsdmi): Don't return true if current_class_ptr
	is not a PARM_DECL.

	* g++.dg/cpp0x/pr65127.C: New test.

From-SVN: r221332
This commit is contained in:
Jakub Jelinek 2015-03-10 20:10:43 +01:00 committed by Jakub Jelinek
parent 1574ecc09c
commit 704c79040a
4 changed files with 30 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2015-03-10 Jakub Jelinek <jakub@redhat.com>
PR c++/65127
* parser.c (parsing_nsdmi): Don't return true if current_class_ptr
is not a PARM_DECL.
2015-03-10 Jason Merrill <jason@redhat.com>
PR c++/65333

View File

@ -18314,7 +18314,9 @@ parsing_nsdmi (void)
{
/* We recognize NSDMI context by the context-less 'this' pointer set up
by the function above. */
if (current_class_ptr && DECL_CONTEXT (current_class_ptr) == NULL_TREE)
if (current_class_ptr
&& TREE_CODE (current_class_ptr) == PARM_DECL
&& DECL_CONTEXT (current_class_ptr) == NULL_TREE)
return true;
return false;
}

View File

@ -1,3 +1,8 @@
2015-03-10 Jakub Jelinek <jakub@redhat.com>
PR c++/65127
* g++.dg/cpp0x/pr65127.C: New test.
2015-03-10 Jan Hubicka <hubicka@ucw.cz>
* gcc.dg/ipa/PR64550.c: Update template.

View File

@ -0,0 +1,16 @@
// PR c++/65127
// { dg-do compile { target c++11 } }
template <int N>
void
foo ()
{
static int i {100};
struct { int id {i++}; } j;
}
int
main ()
{
foo<0> ();
}