[Bug c/59197] An alias from an always_inline function causes inconsistent behavior

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Nov 20 10:50:00 GMT 2013


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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2013-11-20
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
And with

extern void func(void);
extern void func(void) __attribute__((alias("alias_target_func")));

extern __inline __attribute__((__always_inline__))
__attribute__((__gnu_inline__)) void func(void) { }

extern void alias_target_func(void) {}

extern void caller(void)
{
    func();
}

you get

t.c:4:89: error: redefinition of 'func'
 extern __inline __attribute__((__always_inline__))
__attribute__((__gnu_inline__)) void func(void) { }
                                                                               
         ^
t.c:2:13: note: previous definition of 'func' was here
 extern void func(void) __attribute__((alias("alias_target_func")));
             ^

even though I'd say that providing an extern inline definition should
still work?

But yeah, gnu extern inlines have interesting behavior...



More information about the Gcc-bugs mailing list