From aa0e52dbd5a20acf70b8f5f2ffa407cdfcb9f737 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 17 May 2006 10:42:47 +0200 Subject: [PATCH] re PR c++/27491 (ICE on variable initialization) PR c++/27491 * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR on CONSTRUCTORs. * g++.dg/init/brace5.C: New test. From-SVN: r113847 --- gcc/cp/ChangeLog | 4 ++++ gcc/cp/semantics.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++-- gcc/testsuite/g++.dg/init/brace5.C | 7 +++++++ 4 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 gcc/testsuite/g++.dg/init/brace5.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 8a318578fb3..b54dfb84742 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2006-05-17 Jakub Jelinek + PR c++/27491 + * semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR + on CONSTRUCTORs. + PR middle-end/27415 * parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED on combined parallel workshare constructs. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 1e315e2d123..f7a3b408f42 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2033,7 +2033,8 @@ finish_compound_literal (tree type, VEC(constructor_elt,gc) *initializer_list) } /* Mark it as a compound-literal. */ - TREE_HAS_CONSTRUCTOR (compound_literal) = 1; + if (TREE_CODE (compound_literal) == CONSTRUCTOR) + TREE_HAS_CONSTRUCTOR (compound_literal) = 1; return compound_literal; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b5339b2ec1b..e610ce5552a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,11 +1,12 @@ 2006-05-17 Jakub Jelinek + PR c++/27491 + * g++.dg/init/brace5.C: New test. + PR middle-end/27415 * gcc.dg/gomp/pr27415.c: New test. * g++.dg/gomp/pr27415.C: New test. -2006-05-17 Jakub Jelinek - PR tree-optimization/27549 * g++.dg/tree-ssa/pr27549.C: New test. diff --git a/gcc/testsuite/g++.dg/init/brace5.C b/gcc/testsuite/g++.dg/init/brace5.C new file mode 100644 index 00000000000..696bbd676d0 --- /dev/null +++ b/gcc/testsuite/g++.dg/init/brace5.C @@ -0,0 +1,7 @@ +// PR c++/27491 +// { dg-do compile } +// { dg-options "" } + +int i = (int) { 0 }; +int j = (int) { i }; +int k = (int) { k }; -- 2.30.2