Neil Jerram <[EMAIL PROTECTED]> writes:
> [EMAIL PROTECTED] (Ludovic Courtès) writes:
>
>> Neil Jerram <[EMAIL PROTECTED]> writes:
>>
>>> + void scm_ia64_longjmp (jmp_buf *, int);
>>
>> Add `SCM_API' at the beginning and `SCM_NORETURN' at the end. The
>> latter should fix this:
>>
>>> +#ifdef __ia64__
>>> + /* On IA64, we #define longjmp as setcontext, and GCC appears not to
>>> + know that that doesn't return. */
>>> + return SCM_UNSPECIFIED;
>>> +#endif
>
> I'm happy with adding SCM_NORETURN [...]
Actually, I tried that, and then got GCC complaining that
"scm_ia64_longjmp: function does return" - which is wrong, but I guess
occurs because the declaration (in a system header file somewhere) of
setcontext() does _not_ have __attribute__(noreturn).
So I've committed for now without this SCM_NORETURN change - but I'm
happy to update it if there is a further solution. Is there a way of
adding __attribute__(noreturn) to a declaration (from a system header
file) that should have this attribute, but doesn't? Also, can it be
done in a way that will work for compilers other than GCC?
Thanks,
Neil