diff options
author | Paolo Carlini <paolo.carlini@oracle.com> | 2011-11-22 20:48:33 +0000 |
---|---|---|
committer | Paolo Carlini <paolo@gcc.gnu.org> | 2011-11-22 20:48:33 +0000 |
commit | 8733916b600980c3c3b2603f7127dbf10c8a09f5 (patch) | |
tree | 13dd384e23226e7b359f3c6b05e2677f9292f440 | |
parent | 68cf80fa0be828435c7efd6d3780b41cea406a98 (diff) | |
download | gcc-8733916b600980c3c3b2603f7127dbf10c8a09f5.zip gcc-8733916b600980c3c3b2603f7127dbf10c8a09f5.tar.gz gcc-8733916b600980c3c3b2603f7127dbf10c8a09f5.tar.bz2 |
re PR c++/51265 (ICE in finish_decltype_type, at cp/semantics.c:5244)
/cp
2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51265
* semantics.c (finish_decltype_type): Handle PTRMEM_CST.
/testsuite
2011-11-22 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/51265
* g++.dg/cpp0x/decltype36.C: New.
From-SVN: r181638
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/decltype36.C | 21 |
4 files changed, 33 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 867c45c..9d8f47b 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-11-22 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51265 + * semantics.c (finish_decltype_type): Handle PTRMEM_CST. + 2011-11-22 Dodji Seketeli <dodji@redhat.com> PR c++/51143 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index fe685fa..3c9853a 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5235,8 +5235,9 @@ finish_decltype_type (tree expr, bool id_expression_or_member_access_p, gcc_unreachable (); case INTEGER_CST: + case PTRMEM_CST: /* We can get here when the id-expression refers to an - enumerator. */ + enumerator or non-type template parameter. */ type = TREE_TYPE (expr); break; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c21ee61..d0dd9b9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-11-22 Paolo Carlini <paolo.carlini@oracle.com> + + PR c++/51265 + * g++.dg/cpp0x/decltype36.C: New. + 2011-11-22 Jakub Jelinek <jakub@redhat.com> PR tree-optimization/51074 diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype36.C b/gcc/testsuite/g++.dg/cpp0x/decltype36.C new file mode 100644 index 0000000..f3dfed9 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/decltype36.C @@ -0,0 +1,21 @@ +// PR c++/51265 +// { dg-options -std=c++0x } + +struct Funny +{ + int print(int); +}; + +template<typename X> +void c(); + +template<typename X, X ff> +void xx() +{ + c<decltype(ff)>(); +} + +int main() +{ + xx<int(Funny::*)(int), &Funny::print>(); +} |