4.7.31.  __return_address

This intrinsic returns the return address of the current function.

Syntax

unsigned int __return_address(void)

Return value

The __return_address intrinsic returns the value of the link register that is used in returning from the current function.

Restrictions

The __return_address intrinsic does not affect the ability of the compiler to perform optimizations such as inlining, tail-calling, and code sharing. Where optimizations are made, the value returned by __return_address reflects the optimizations performed:

No optimization

When no optimizations are performed, the value returned by __return_address from within a function foo is the return address of foo.

Inline optimization

If a function foo is inlined into a function bar then the value returned by __return_address from within foo is the return address of bar.

Tail-call optimization

If a function foo is tail-called from a function bar then the value returned by __return_address from within foo is the return address of bar.

See also

Copyright © 2007, 2010 ARM Limited. All rights reserved.ARM DUI 0348A
Non-Confidential