Returns the address of the stack frame, or return address, of the current function, or of one of its callers.
void* __builtin_frame_address (unsigned int level);
void* __builtin_return_address (unsigned int level);
Returns 0 when the top of the stack is reached. Optimizations such as inlining may affect the expected return value by introducing extra stack frames or fewer stack frames than expected. If a function is inlined, the frame or return address corresponds to that of the function that is returned to.