diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-02-13 22:40:35 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-02-13 22:40:35 +0100 |
commit | dbf717037ba28223bb7910f999bded71d11538e1 (patch) | |
tree | 1798758e6151b39d365d8c0f57bdd1901c12446a /gcc | |
parent | 8edd275b3f3d1dbd52d75fe86e1ebe814c545f1e (diff) | |
download | gcc-dbf717037ba28223bb7910f999bded71d11538e1.zip gcc-dbf717037ba28223bb7910f999bded71d11538e1.tar.gz gcc-dbf717037ba28223bb7910f999bded71d11538e1.tar.bz2 |
re PR c++/84364 (-Weffc++ warns on "return *this" in template after r253599)
PR c++/84364
* typeck.c (check_return_expr): Don't emit -Weffc++ warning
about return other than *this in assignment operators if
retval is type dependent expression.
* g++.dg/warn/effc4.C: New test.
From-SVN: r257640
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cp/typeck.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/warn/effc4.C | 10 |
4 files changed, 24 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 84fb909..ed44d9e 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,10 @@ +2018-02-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/84364 + * typeck.c (check_return_expr): Don't emit -Weffc++ warning + about return other than *this in assignment operators if + retval is type dependent expression. + 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84333 diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c index dfcf716..0e7c63d 100644 --- a/gcc/cp/typeck.c +++ b/gcc/cp/typeck.c @@ -9232,7 +9232,8 @@ check_return_expr (tree retval, bool *no_warning) /* Effective C++ rule 15. See also start_function. */ if (warn_ecpp - && DECL_NAME (current_function_decl) == assign_op_identifier) + && DECL_NAME (current_function_decl) == assign_op_identifier + && !type_dependent_expression_p (retval)) { bool warn = true; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f22c21a..04d5fd4 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Jakub Jelinek <jakub@redhat.com> + + PR c++/84364 + * g++.dg/warn/effc4.C: New test. + 2018-02-13 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84333 diff --git a/gcc/testsuite/g++.dg/warn/effc4.C b/gcc/testsuite/g++.dg/warn/effc4.C new file mode 100644 index 0000000..2ce7928 --- /dev/null +++ b/gcc/testsuite/g++.dg/warn/effc4.C @@ -0,0 +1,10 @@ +// PR c++/84364 +// { dg-do compile } +// { dg-options "-Weffc++" } + +template <typename T> +struct A { + A &operator=(A<T>& f) { + return *this; // { dg-bogus "should return a reference to" } + } +}; |