aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2018-01-23 21:19:09 +0000
committerDavid Malcolm <dmalcolm@gcc.gnu.org>2018-01-23 21:19:09 +0000
commit7c719d0849416861fa96317ade2e2035d6ea071b (patch)
tree08b305237a653e09040936992dae5bd3e9b2a023
parent508d0c3da24c91bdabf7fbd453b511bfccbb2958 (diff)
downloadgcc-7c719d0849416861fa96317ade2e2035d6ea071b.zip
gcc-7c719d0849416861fa96317ade2e2035d6ea071b.tar.gz
gcc-7c719d0849416861fa96317ade2e2035d6ea071b.tar.bz2
C++: Fix ICE in fold_for_warn on CAST_EXPR (PR c++/83974)
gcc/cp/ChangeLog: PR c++/83974 * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout for pointer to member function types. gcc/testsuite/ChangeLog: PR c++/83974 * g++.dg/warn/pr83974.C: New test case. From-SVN: r256999
-rw-r--r--gcc/cp/ChangeLog6
-rw-r--r--gcc/cp/pt.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/warn/pr83974.C11
4 files changed, 22 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index a0a3c13..1f26155 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2018-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/83974
+ * pt.c (tsubst_copy_and_build) <CONSTRUCTOR>: Remove early bailout
+ for pointer to member function types.
+
2018-01-23 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/83987
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 695870d..fe64b06 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -18097,10 +18097,6 @@ tsubst_copy_and_build (tree t,
if (type == error_mark_node)
RETURN (error_mark_node);
- /* digest_init will do the wrong thing if we let it. */
- if (type && TYPE_PTRMEMFUNC_P (type))
- RETURN (t);
-
/* We do not want to process the index of aggregate
initializers as they are identifier nodes which will be
looked up by digest_init. */
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ce9c3c8..fb7e457 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2018-01-23 David Malcolm <dmalcolm@redhat.com>
+
+ PR c++/83974
+ * g++.dg/warn/pr83974.C: New test case.
+
2018-01-23 Jakub Jelinek <jakub@redhat.com>
PR sanitizer/83987
diff --git a/gcc/testsuite/g++.dg/warn/pr83974.C b/gcc/testsuite/g++.dg/warn/pr83974.C
new file mode 100644
index 0000000..af12c2d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/pr83974.C
@@ -0,0 +1,11 @@
+// { dg-options "-Wtautological-compare" }
+
+struct A {
+ typedef void (A::*B) ();
+ operator B ();
+};
+template <typename>
+struct C {
+ void foo () { d == 0; }
+ A d;
+};