From 2056769e9060c13541a3ee3031f98f4415cc0306 Mon Sep 17 00:00:00 2001 From: jason Date: Sat, 9 Sep 2006 22:26:53 +0000 Subject: [PATCH] PR c++/28996 * cvt.c (convert_to_void): Strip COMPONENT_REF to functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116800 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/cvt.c | 10 +++++++--- gcc/testsuite/g++.dg/warn/noeffect8.C | 3 ++- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6e20eb17fd2..f565f4c8ac0 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2006-09-09 Jason Merrill + + PR c++/28996 + * cvt.c (convert_to_void): Strip COMPONENT_REF to functions. + 2006-09-08 Volker Reichelt PR c++/28858 diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c index fea5768f8ae..6f61218b232 100644 --- a/gcc/cp/cvt.c +++ b/gcc/cp/cvt.c @@ -927,9 +927,13 @@ convert_to_void (tree expr, const char *implicit) expr = void_zero_node; } else if (implicit && probe == expr && is_overloaded_fn (probe)) - /* Only warn when there is no &. */ - warning (0, "%s is a reference, not call, to function %qE", - implicit, expr); + { + /* Only warn when there is no &. */ + warning (0, "%s is a reference, not call, to function %qE", + implicit, expr); + if (TREE_CODE (expr) == COMPONENT_REF) + expr = TREE_OPERAND (expr, 0); + } } if (expr != error_mark_node && !VOID_TYPE_P (TREE_TYPE (expr))) diff --git a/gcc/testsuite/g++.dg/warn/noeffect8.C b/gcc/testsuite/g++.dg/warn/noeffect8.C index 99d3688149b..4eb7f1bd1af 100644 --- a/gcc/testsuite/g++.dg/warn/noeffect8.C +++ b/gcc/testsuite/g++.dg/warn/noeffect8.C @@ -1,4 +1,4 @@ -// PR c++/26696 +// PR c++/26696, 28996 struct A { @@ -9,4 +9,5 @@ int main() { A a; a.f; // { dg-warning "not call" } + A().f; // { dg-warning "not call" } } -- 2.11.4.GIT