:
void log_some_stuff_implementation(Provider *pProvider, int x, int y, char const* str);
__inline void log_some_stuff(Provider *pProvider, int x, int y, char const* str)
{
if (__builtin_expect( pProvider != NULL, 0)) {
log_some_stuff_implementation(pProvider, x, y, str);
}
return;
}
GCC 4.5.2 -O2 ( , ) log_some_stuff():
cmp r2, #0
ldrne r3, [r1, #0]
addne r1, r2, #1
ldrneb r2, [r3, #0] @ zero_extendqisi2
blne log_some_stuff_implementation
, ( * NULL), 4 , - , ARM . , , , , , .
, , , , , . , . , , -, , - . ( , ).
, (, , ) , __builtin_expect() , , , , . , , , , , , Linux:
#define likely(x) __builtin_expect((x),1)
#define unlikely(x) __builtin_expect((x),0)