https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115132
--- Comment #2 from akrl at gcc dot gnu.org ---
Hi Richard,
thanks, yes I tried that already, the trouble is that our code looks more like
this:
=
extern void flush_stack_call_func1 (void (*func) (void *arg), void *arg);
extern void mark_threads (void);
extern void
mark_threads_callback (void *ignore);
static inline void
flush_stack_call_func (void (*func) (void *arg), void *arg)
{
__builtin_unwind_init ();
flush_stack_call_func1 (func, arg);
}
void
mark_threads (void)
{
flush_stack_call_func (mark_threads_callback, ((void *)0));
}
[...]
=
Because we have several places where 'flush_stack_call_func' is used.
Unfortunately as 'flush_stack_call_func' gets inlined the trick does not work.
I'm not ecstatic at making 'flush_stack_call_func' not inlinable nor at marking
all the functions where it is called with the attribute, but we'll have to find
a way anyway I guess.
Thanks
Andrea