https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84229

            Bug ID: 84229
           Summary: A valid code rejected with -flto
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: marxin at gcc dot gnu.org
                CC: hubicka at ucw dot cz, jamborm at gcc dot gnu.org,
                    marxin at gcc dot gnu.org
  Target Milestone: ---

I've just reduced following test-case:

$ cat aa.i
void a ();
extern __inline int
open (char b, int c)
{
  if (__builtin_constant_p (c) && __builtin_va_arg_pack_len ())
    a ();
}

$ cat bb.i
void open ();
void
_md_OpenAnonFileMap_genName ()
{
  open (_md_OpenAnonFileMap_genName, 0);
}

With:
$ gcc -O3 -flto=9 -fPIC -shared aa.i bb.i --param ipa-cp-eval-threshold=100
-std=gnu11

aa.i: In function ‘open.constprop’:
aa.i:5:35: error: invalid use of ‘__builtin_va_arg_pack_len ()’
   if (__builtin_constant_p (c) && __builtin_va_arg_pack_len ())
                                   ^
make: *** [/tmp/cc1JFDZe.mk:2: /tmp/ccK61RIy.ltrans0.ltrans.o] Error 1
lto-wrapper: fatal error: make returned 2 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper failed
collect2: error: ld returned 1 exit status

It fails for all releases starting from 4.7.0.

Using -O2 or non-LTO mode works fine.

Reply via email to