From 1c56df2138219932adb3cea6d3bdb3bc297d0222 Mon Sep 17 00:00:00 2001 From: Paolo Carlini Date: Tue, 22 Nov 2011 21:37:24 +0000 Subject: [PATCH] re PR c++/51265 (ICE in finish_decltype_type, at cp/semantics.c:5244) /cp 2011-11-22 Paolo Carlini PR c++/51265 * semantics.c (finish_decltype_type): Handle PTRMEM_CST. /testsuite 2011-11-22 Paolo Carlini PR c++/51265 * g++.dg/cpp0x/decltype36.C: New. From-SVN: r181641 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/semantics.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/cpp0x/decltype36.C | 21 +++++++++++++++++++++ 4 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp0x/decltype36.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index aee5bec83476..ecacea34c892 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-11-22 Paolo Carlini + + PR c++/51265 + * semantics.c (finish_decltype_type): Handle PTRMEM_CST. + 2011-11-18 Paolo Carlini PR c++/51150 diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index e02bd53af1c6..db2b3db052d4 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -4927,8 +4927,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 4e675960df4a..7a5c0d3888f1 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2011-11-22 Paolo Carlini + + PR c++/51265 + * g++.dg/cpp0x/decltype36.C: New. + 2011-11-19 Eric Botcazou * gcc.dg/delay-slot-2.c: New test. diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype36.C b/gcc/testsuite/g++.dg/cpp0x/decltype36.C new file mode 100644 index 000000000000..f3dfed992cfd --- /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 +void c(); + +template +void xx() +{ + c(); +} + +int main() +{ + xx(); +} -- 2.47.2