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



Reply via email to