tech-kern archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: __dead functions



On Fri, Jul 18, 2008 at 12:01:09 -0400, Greg A. Woods; Planix, Inc. wrote:

> >+#if __GNUC_PREREQ__(4, 3)
> >+#define __NOTREACHED for (;;) continue
> >+#else
> >+#define __NOTREACHED
> >+#endif
> 
> I think inventing extra redundant identifiers like this one, even if  
> prefixed by "__" is unnecessary.
> 
> Indeed gcc doesn't understand a NOTREACHED comment, that's a lint  
> directive of course and it seems, unfortunately, that lint has fallen  
> out of favour in NetBSD.

How does use or disuse of lint changes the fact that *a different
tool*, gcc in this case, complains that some code is (not) reached
when gcc thinks it should (not) be.

Actually we can arrange for lint's /* NOTREACHED */ comment to appear
at the end of that macro so that one macro covers "notreached"
semantics for all the tools we use.  Using an example from my previous
mail:

#ifdef __lint__
#define __MARK_NOTREACHED /* NOTREACHED */
#else /* !__lint__ */
#if __GNUC_PREREQ__(4, 0)
#define __MARK_NOTREACHED for (;;) continue
#else
#define __MARK_NOTREACHED do {} while (/* CONSTCOND */ 0)
#endif
#endif /* !__lint__ */

then we can have a single

    __NOTREACHED;

statement in the code that will cover lint, gcc, and anything else we
might need to use in the future.


SY, Uwe
-- 
uwe%stderr.spb.ru@localhost                       |       Zu Grunde kommen
http://snark.ptc.spbu.ru/~uwe/          |       Ist zu Grunde gehen


Home | Main Index | Thread Index | Old Index