Messages in this thread | | | From | Kyle Moffett <> | Subject | Re: [PATCH] likely cleanup: remove unlikely for kfree(NULL) | Date | Wed, 26 Apr 2006 15:07:28 -0400 |
| |
Here's code that I've found works as well as can be expected under both GCC 3 and GCC 4. If xp is a known-NULL constant the whole function will be optimized out completely. If xp is known-not-NULL, then it will optimize to a kfree function without the null check. Otherwise it optimizes to call the out-of-line version.
Cheers, Kyle Moffett
static inline void kfree(void *ptr) { if (__builtin_constant_p((ptr == NULL))) { if (ptr) kfree_nonnull(ptr); } else { kfree_unknown(ptr); } }
void kfree_nonnull(void *ptr) { /* kfree code here, no null check */ }
void kfree_unknown(void *ptr) { if (ptr) kfree_nonnull(ptr); }
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |