diff options
author | Jason Merrill <jason@redhat.com> | 2014-06-03 10:11:10 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-06-03 10:11:10 -0400 |
commit | 010bc40a6cfa58463775350be648271155683361 (patch) | |
tree | 04712dfa416f34a04bd25dcf684fab69478e012b | |
parent | 616abc647c1fa14fabdbe708c4adcf88135916ef (diff) | |
download | gcc-010bc40a6cfa58463775350be648271155683361.zip gcc-010bc40a6cfa58463775350be648271155683361.tar.gz gcc-010bc40a6cfa58463775350be648271155683361.tar.bz2 |
re PR c++/60848 (Crash while experimenting with c++-0x initializer lists)
PR c++/60848
* call.c (is_std_init_list): Check CLASSTYPE_TEMPLATE_INFO.
From-SVN: r211179
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/call.c | 1 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/initlist85.C | 14 |
3 files changed, 20 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index fae8da1..2ed9f15 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2014-06-03 Jason Merrill <jason@redhat.com> + + PR c++/60848 + * call.c (is_std_init_list): Check CLASSTYPE_TEMPLATE_INFO. + 2014-06-02 Jason Merrill <jason@redhat.com> PR c++/61046 diff --git a/gcc/cp/call.c b/gcc/cp/call.c index 77aa8ca..b60bab7 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -9675,6 +9675,7 @@ is_std_init_list (tree type) type = TYPE_MAIN_VARIANT (type); return (CLASS_TYPE_P (type) && CP_TYPE_CONTEXT (type) == std_node + && CLASSTYPE_TEMPLATE_INFO (type) && strcmp (TYPE_NAME_STRING (type), "initializer_list") == 0); } diff --git a/gcc/testsuite/g++.dg/cpp0x/initlist85.C b/gcc/testsuite/g++.dg/cpp0x/initlist85.C new file mode 100644 index 0000000..0eb8e26 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/initlist85.C @@ -0,0 +1,14 @@ +// PR c++/60848 +// { dg-do compile { target c++11 } } + +namespace std +{ + struct initializer_list {}; +} + +void foo(std::initializer_list &); + +void f() +{ + foo({1, 2}); // { dg-error "" } +} |