On Thu, 31 Oct 2024, Jakub Jelinek wrote:

> On Wed, Oct 23, 2024 at 05:52:13PM +0000, Joseph Myers wrote:
> > One test failing with a -std=gnu23 default that I wanted to
> > investigate further is gcc.dg/pr114115.c.  Building with -std=gnu23
> > produces a warning:
> > 
> > pr114115.c:18:8: warning: 'ifunc' resolver for 'foo_ifunc2' should return 
> > 'void * (*)(void)' [-Wattribute-alias=]
> > 
> > It turns out that this warning (from cgraphunit.cc) is disabled for
> > unprototyped functions.  It's not immediately obvious that being
> > unprototyped has much to do with such incompatibilities of return type
> > (void versus void *), but it still seems reasonable to address this
> > warning by adding -std=gnu17 to the options for this testcase, so
> > minimizing the perturbation to what it tests.
> 
> My preference would be just fix the bug in the testcase, i.e.
> -void *foo_ifunc2() __attribute__((ifunc("foo_resolver")));
> +void foo_ifunc2() __attribute__((ifunc("foo_resolver")));

Here is a patch version to do that.  OK to commit?


testsuite: Fix prototype in gcc.dg/pr114115.c

One test failing with a -std=gnu23 default that I wanted to
investigate further is gcc.dg/pr114115.c.  Building with -std=gnu23
produces a warning:

pr114115.c:18:8: warning: 'ifunc' resolver for 'foo_ifunc2' should return 'void 
* (*)(void)' [-Wattribute-alias=]

It turns out that this warning (from cgraphunit.cc) is disabled for
unprototyped functions.  Fix the return type for foo_ifunc2 so the
test builds without warnings both with and without -std=gnu23.

Tested for x86_64.

        * gcc.dg/pr114115.c (foo_ifunc2): Return void.

diff --git a/gcc/testsuite/gcc.dg/pr114115.c b/gcc/testsuite/gcc.dg/pr114115.c
index 2629f591877..5e3ef5793cd 100644
--- a/gcc/testsuite/gcc.dg/pr114115.c
+++ b/gcc/testsuite/gcc.dg/pr114115.c
@@ -3,7 +3,7 @@
 /* { dg-require-profiling "-fprofile-generate" } */
 /* { dg-require-ifunc "" } */
 
-void *foo_ifunc2() __attribute__((ifunc("foo_resolver")));
+void foo_ifunc2() __attribute__((ifunc("foo_resolver")));
 
 void bar(void)
 {

-- 
Joseph S. Myers
josmy...@redhat.com

Reply via email to