https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111437
zxuiji <gb2985 at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|INVALID |FIXED --- Comment #5 from zxuiji <gb2985 at gmail dot com> --- (In reply to Andrew Pinski from comment #4) > One definition has: > __attribute__((hot)) __attribute__((always_inline)) pawd pawmsg_SIGKILL( > pawexe pid ) > { return pawtrigger( > # 127 "/mnt/CODE/gitlab/dragonbuilder/include/paw/pawint/../pawmsg.h" 3 4 > ((void *)0) > # 127 "/mnt/CODE/gitlab/dragonbuilder/include/paw/pawint/../pawmsg.h" > , PAWMSGID_KILL_NOW, PAWMSG_CLSID_APP, 0, pid ); } > > Yes without inline the always_inline might be not be inlinable ... > > The preprocessed source is full of issues; redefinitions: > /mnt/CODE/gitlab/dragonbuilder/src/libpaw/pawaio.c:50:28: error: > redefinition of ‘pawabspath_putroot’ > In file included from /mnt/CODE/gitlab/dragonbuilder/src/libpaw/libpaw.h:19, > from /mnt/CODE/gitlab/dragonbuilder/src/libpaw/pawaio.c:1: > /mnt/CODE/gitlab/dragonbuilder/include/paw/pawaio.h:554:28: note: previous > definition of ‘pawabspath_putroot’ with type ‘pawjd(pawmbcd *, pawmbctxt, > pawmbctxt)’ {aka ‘long int(pawmbcd *, pawmbc_txt, pawmbc_txt)’} > > > etc. > > But the pattern for the "might not be inlinable" is all the same as what I > mentioned first. There is only always_inline without an inline ... You mean I should add __inline to the definition of PAWANT_QCK so it follows the always_inline attribute? Well that's easy enough however that does beg the question, why is inline not implicit with the always_inline attribute? That aside, yeah I'm aware there are issues with the code itself, in the middle of a redesign and using the compiler to identify where the surface level issues are, I'll get on the runtime ones after I finish putting together the library and the unit tests thereafter.