diff options
author | Marek Polacek <polacek@redhat.com> | 2019-03-29 18:40:31 +0000 |
---|---|---|
committer | Marek Polacek <mpolacek@gcc.gnu.org> | 2019-03-29 18:40:31 +0000 |
commit | c072398e0f99551edb513735ef7c648f90a68eb6 (patch) | |
tree | c829c5935bdf12e238c754f9100de0b368689eec | |
parent | a1c56deaa2d0e9d345374e8062671038f43b0b47 (diff) | |
download | gcc-c072398e0f99551edb513735ef7c648f90a68eb6.zip gcc-c072398e0f99551edb513735ef7c648f90a68eb6.tar.gz gcc-c072398e0f99551edb513735ef7c648f90a68eb6.tar.bz2 |
PR c++/89876 - ICE with deprecated conversion.
* call.c (convert_like_real): Only give warnings with tf_warning.
* g++.dg/warn/conv5.C: New test.
From-SVN: r270021
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/call.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/conv5.C | 11 |
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index eb35f9e..75d8169 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2019-03-29 Marek Polacek <polacek@redhat.com> + + PR c++/89876 - ICE with deprecated conversion. + * call.c (convert_like_real): Only give warnings with tf_warning. + 2019-03-28 Marek Polacek <polacek@redhat.com> PR c++/89612 - ICE with member friend template with noexcept. diff --git a/gcc/cp/call.c b/gcc/cp/call.c index bc51794..519dad9 100644 --- a/gcc/cp/call.c +++ b/gcc/cp/call.c @@ -7446,7 +7446,8 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum, case ck_qual: /* Warn about deprecated conversion if appropriate. */ - string_conv_p (totype, expr, 1); + if (complain & tf_warning) + string_conv_p (totype, expr, 1); break; case ck_ptr: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0d954bf..960a865 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ PR c++/89871 * g++.dg/cpp2a/desig14.C: New test. + PR c++/89876 - ICE with deprecated conversion. + * g++.dg/warn/conv5.C: New test. + 2019-03-29 Martin Liska <mliska@suse.cz> * gcc.dg/ipa/ipa-icf-39.c: Prine '***dbgcnt' output. diff --git a/gcc/testsuite/g++.dg/warn/conv5.C b/gcc/testsuite/g++.dg/warn/conv5.C new file mode 100644 index 0000000..e238f9f --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/conv5.C @@ -0,0 +1,11 @@ +// PR c++/89876 +// { dg-do compile { target c++11 } } +// { dg-prune-output "sorry" } + +template <typename T> +T f (T, char*); + +template <typename T> +decltype (f (T (), "")) g (T) { return ""; } // { dg-error "invalid conversion" } + +void h () { g (0); } |