diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2013-05-01 09:21:30 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2013-05-01 09:21:30 +0000 |
commit | 57c16a5eb68d20cf87ee79558de7278f650a40b4 (patch) | |
tree | e6a8129771e9091b677fb54d3893262c9cfa9d93 /gcc | |
parent | e1e14947cfd9cb9db63ce681e5deb8cdb5be03e4 (diff) | |
download | gcc-57c16a5eb68d20cf87ee79558de7278f650a40b4.zip gcc-57c16a5eb68d20cf87ee79558de7278f650a40b4.tar.gz gcc-57c16a5eb68d20cf87ee79558de7278f650a40b4.tar.bz2 |
re PR c++/57092 (Using decltype of function pointer type to define a data member causes compiler crash)
/cp
2013-05-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57092
* semantics.c (finish_decltype_type): Handle instantiated template
non-type arguments.
/testsuite
2013-05-01 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/57092
* g++.dg/cpp0x/decltype53.C: New.
From-SVN: r198487
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/decltype53.C | 11 |
4 files changed, 25 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index c614ebe..09f10df 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-05-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/57092 + * semantics.c (finish_decltype_type): Handle instantiated template + non-type arguments. + 2013-04-28 Paolo Carlini <paolo.carlini@oracle.com> PR c++/56450 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 2a0d5bc..a06a23a 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 1016036..e8c71e5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-05-01 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/57092 + * g++.dg/cpp0x/decltype53.C: New. + 2013-04-30 Thomas Koenig <tkoenig@gcc.gnu.org> 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 0000000..4580e97 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/decltype53.C @@ -0,0 +1,11 @@ +// PR c++/57092 +// { dg-do compile { target c++11 } } + +template <void (*F)(int)> +class B { + decltype(F) v; +}; + +void foo(int) {} + +B<foo> o; |