diff options
author | Jakub Jelinek <jakub@redhat.com> | 2009-02-03 18:23:11 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2009-02-03 18:23:11 +0100 |
commit | a36c33ebfc595336528780a71a2897d2b8dbdb94 (patch) | |
tree | 011eb09844de95f4520d4764bb49797c837dd5ca /gcc | |
parent | e350dbbd73b6e76f8c4e32307c759d978038c6dc (diff) | |
download | gcc-a36c33ebfc595336528780a71a2897d2b8dbdb94.zip gcc-a36c33ebfc595336528780a71a2897d2b8dbdb94.tar.gz gcc-a36c33ebfc595336528780a71a2897d2b8dbdb94.tar.bz2 |
re PR c++/39056 ([c++0x] ICE with invalid initializer list for complex variable)
PR c++/39056
* typeck2.c (digest_init_r): Don't call process_init_constructor
for COMPLEX_TYPE.
* g++.dg/cpp0x/initlist13.C: New test.
From-SVN: r143899
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/typeck2.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist13.C | 5 |
4 files changed, 18 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 39a5eb8..c84de88 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2009-02-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/39056 + * typeck2.c (digest_init_r): Don't call process_init_constructor + for COMPLEX_TYPE. + 2009-02-03 Paolo Bonzini <bonzini@gnu.org> PR c++/36897 diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c index a19a999..526f780 100644 --- a/gcc/cp/typeck2.c +++ b/gcc/cp/typeck2.c @@ -789,7 +789,8 @@ digest_init_r (tree type, tree init, bool nested) } /* Handle scalar types (including conversions) and references. */ - if (TREE_CODE (type) != COMPLEX_TYPE + if ((TREE_CODE (type) != COMPLEX_TYPE + || BRACE_ENCLOSED_INITIALIZER_P (init)) && (SCALAR_TYPE_P (type) || code == REFERENCE_TYPE)) { tree *exp; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ba77486..128a762 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2009-02-03 Jakub Jelinek <jakub@redhat.com> + + PR c++/39056 + * g++.dg/cpp0x/initlist13.C: New test. + 2009-02-03 Paolo Bonzini <bonzini@gnu.org> PR c++/36897 diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist13.C b/gcc/testsuite/g++.dg/cpp0x/initlist13.C new file mode 100644 index 0000000..98af92b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist13.C @@ -0,0 +1,5 @@ +// PR c++/39056 +// { dg-do compile } +// { dg-options "-std=gnu++0x" } + +__complex__ int i ({0}); // { dg-error "cannot convert" } |