From: Paolo Carlini Date: Wed, 1 May 2013 09:21:30 +0000 (+0000) Subject: re PR c++/57092 (Using decltype of function pointer type to define a data member... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=57c16a5eb68d20cf87ee79558de7278f650a40b4;p=gcc.git re PR c++/57092 (Using decltype of function pointer type to define a data member causes compiler crash) /cp 2013-05-01 Paolo Carlini PR c++/57092 * semantics.c (finish_decltype_type): Handle instantiated template non-type arguments. /testsuite 2013-05-01 Paolo Carlini PR c++/57092 * g++.dg/cpp0x/decltype53.C: New. From-SVN: r198487 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c614ebed8d7..09f10df3182 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-05-01 Paolo Carlini + + PR c++/57092 + * semantics.c (finish_decltype_type): Handle instantiated template + non-type arguments. + 2013-04-28 Paolo Carlini PR c++/56450 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 2a0d5bcaded..a06a23a13ac 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5416,8 +5416,9 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p, break; default: - gcc_unreachable (); - return error_mark_node; + /* Handle instantiated template non-type arguments. */ + type = TREE_TYPE (expr); + break; } } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 1016036dca3..e8c71e5dcf7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-01 Paolo Carlini + + PR c++/57092 + * g++.dg/cpp0x/decltype53.C: New. + 2013-04-30 Thomas Koenig PR fortran/57071 diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype53.C b/gcc/testsuite/g++.dg/cpp0x/decltype53.C new file mode 100644 index 00000000000..4580e97b752 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/decltype53.C @@ -0,0 +1,11 @@ +// PR c++/57092 +// { dg-do compile { target c++11 } } + +template +class B { + decltype(F) v; +}; + +void foo(int) {} + +B o;