Hi Robert,
On 5/23/07, Robert P. J. Day <rpjday@mindspring.com> wrote:
Actually there's another thing :-) The __attribute__((xxx)) must go with the
function _declarations_ (and not the implementations/definitions). I noticed
after my previous mail that most of the double annotations are actually in
the case of the _declarations_ of these non-returning functions, whereas
most of the single-occurrences of NORET_TYPE were in the function
definitions, which means your patch that simply got rid of NORET_TYPE
actually ended up doing exactly the right thing that we wanted :-)
The unfortunate / ugly part, however, is that there are few cases where
the above doesn't hold true ([1] NORET_TYPE without ATTRIB_NORET in
function declaration e.g. in include/asm-mips/ptrace.h -- this must
become ATTRIB_NORET, and [2] ATTRIB_NORET either alone or with
NORET_TYPE in function definitions e.g. arch/mips/kernel/traps.c -- these
can be eliminated entirely, and [3] NORET_AND occurrences where we
don't really want ATTRIB_NORET anymore, so just removing
NORET_TYPE would be right).
So this might not really be a simple patch anymore, and because the
benefit of ATTRIB_NORET is only miniscule, so you can ignore my
previous mail if you want :-)
Thanks,
Satyam
-