From: Jason Merrill Date: Sat, 9 Sep 2006 22:26:53 +0000 (-0400) Subject: re PR c++/28996 (ICE with statement forming unused static member function reference) X-Git-Tag: releases/gcc-4.2.0~1476 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=05f8c2d5f6832f5f93f0e397657fad131efafacb;p=thirdparty%2Fgcc.git re PR c++/28996 (ICE with statement forming unused static member function reference) PR c++/28996 * cvt.c (convert_to_void): Strip COMPONENT_REF to functions. From-SVN: r116800 --- diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6e20eb17fd2a..f565f4c8ac0b 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 fea5768f8aed..6f61218b2324 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 99d3688149b0..4eb7f1bd1afc 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" } }