Re: attribute nonnull/expect_nonnull for return value?

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

On Sun, 25 Mar 2012, Ian Lance Taylor wrote:

Daniel Frey <d.frey@xxxxxx> writes:

GCC now knows that the arguments are nonnull, but how to I tell the
compiler that the returned pointer is nonnull? Or if null is allowed
but only the exception to the rule, I would like to tell the compiler
that is should *expect* the pointer to be nonnull, but not disallow
null. Actually, the second case is more important to me, but I think
both should be possible.

At present, as far as I know, there is no way to do either.

To completely disallow null return values, you could write an inline wrapper that forwards its arguments to the real function and dereferences the return pointer before returning it. IIRC, gcc gets the message that a pointer that is dereferenced earlier can be assumed to be nonnull.

For a simple expectation, I can't think of a good way, although I believe that in the absence of contrary information, the compiler considers nonnull pointers more likely than null, for branch prediction and stuff (but maybe not as strongly as if you had a __builtin_expect).

Marc Glisse

[Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

Add to Google