aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Carlini <paolo.carlini@oracle.com>2011-11-22 20:48:33 +0000
committerPaolo Carlini <paolo@gcc.gnu.org>2011-11-22 20:48:33 +0000
commit8733916b600980c3c3b2603f7127dbf10c8a09f5 (patch)
tree13dd384e23226e7b359f3c6b05e2677f9292f440
parent68cf80fa0be828435c7efd6d3780b41cea406a98 (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/cp/semantics.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/cpp0x/decltype36.C21
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>();
+}