re PR c++/37260 (infinite loop in init)

/cp
2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/37260
	* decl.c (reshape_init_r): Check init for error_mark_node.

/testsuite
2008-08-28  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/37260
	* g++.dg/parse/crash44.C: New.

From-SVN: r139740
This commit is contained in:
Paolo Carlini 2008-08-28 23:37:41 +00:00 committed by Paolo Carlini
parent 1cd8b853ba
commit ffe7982590
4 changed files with 28 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2008-08-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/37260
* decl.c (reshape_init_r): Check init for error_mark_node.
2008-08-27 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c++/17880

View File

@ -4772,6 +4772,9 @@ reshape_init_r (tree type, reshape_iter *d, bool first_initializer_p)
{
tree init = d->cur->value;
if (error_operand_p (init))
return error_mark_node;
/* A non-aggregate type is always initialized with a single
initializer. */
if (!CP_AGGREGATE_TYPE_P (type))

View File

@ -1,3 +1,8 @@
2008-08-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/37260
* g++.dg/parse/crash44.C: New.
2008-08-28 Adam Nemet <anemet@caviumnetworks.com>
* gcc.target/mips/octeon-dmul-1.c: New test.

View File

@ -0,0 +1,15 @@
// PR c++/37260
// { dg-options "" }
struct pthread_once_t { };
struct test {
pthread_once_t once;
};
int main(void) {
struct test foo = {
once: PTHREAD_ONCE_INITIALIZER // { dg-error "error: 'PTHREAD_ONCE_INITIALIZER' was not declared in this scope" }
};
return 0;
}