diff options
author | David Malcolm <dmalcolm@redhat.com> | 2018-01-23 21:19:09 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2018-01-23 21:19:09 +0000 |
commit | 7c719d0849416861fa96317ade2e2035d6ea071b (patch) | |
tree | 08b305237a653e09040936992dae5bd3e9b2a023 /gcc | |
parent | 508d0c3da24c91bdabf7fbd453b511bfccbb2958 (diff) | |
download | gcc-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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/pt.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/pr83974.C | 11 |
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; +}; |