[Bug rtl-optimization/47525] New: DCE fails to eliminate a dead call to a pure function when compiled with -maltivec

bergner at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jan 28 23:14:00 GMT 2011


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

           Summary: DCE fails to eliminate a dead call to a pure function
                    when compiled with -maltivec
           Product: gcc
           Version: 4.6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: bergner@gcc.gnu.org


The dead code eliminator is failing to eliminate a call to a dead pure function
when compiled with -maltivec.  The test case looks like (it's a slightly
modified pr42461.c, so that older compilers that don't support
__builtin_unreachable() can compile it):

bergner@igoo:~/> cat pr42461-2.c
extern int link_failure (int) __attribute__ ((pure));
extern void no_return (void) __attribute__ ((noreturn,pure));
int
main (void)
{
  if (link_failure (0) < 1)
    no_return ();
  return 0;
}

This compiles fine with GCC 4.3, but fails with GCC 4.4, 4.5 and trunk with the
following error message:

bergner@igoo:~/> gcc -O2 -maltivec pr42461-2.c
/tmp/ccUy2BCz.o:(.text+0x10): undefined reference to `link_failure'
collect2: ld returned 1 exit status



More information about the Gcc-bugs mailing list