http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60716

            Bug ID: 60716
           Summary: gcc cannot detect static recursive function
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: dcb314 at hotmail dot com

I just tried to bootstrap gcc trunk with the clang compiler.

It said

../../src/trunk/gcc/emit-rtl.c:2464:1: warning: function 'verify_rtx_sharing'
is not needed and will not be emitted [-Wunneeded-internal-declaration]

It seems that function verify_rtx_sharing is recursive and static, but no
other function calls it.

gcc doesn't seem able to detect this unusual code.

Example code would be

static int f( int n)
{
    if (n == 1)
        return 1;
    else
        return n * f( n - 1);
}

[dcb@zippy4 Alphasrc]$ gcc -g -O2 -Wall -c mar31a.cc
[dcb@zippy4 Alphasrc]$ clang++ -g -O2 -Wall -c mar31a.cc
mar31a.cc:2:12: warning: function 'f' is not needed and will not be emitted
      [-Wunneeded-internal-declaration]
static int f( int n)
           ^
1 warning generated.

This bug may be related to #36392.

Reply via email to