 RealView Compiler Reference Guide |
|
Technical Support On-Line Manuals RealView Compiler Reference Guide Preface Introduction Compiler Command-line Options Language Extensions Compiler-specific Features Keywords and operators __align __alignof__ __ALIGNOF__ __asm __forceinline __global_reg __inline __int64 __INTADDR__ __irq __packed __pure __smc __softfp __svc __svc_indirect __svc_indirect_r7 __value_in_regs __weak __writeonly __declspec attributes __declspec(dllexport) __declspec(dllimport) __declspec(noinline) __declspec(noreturn) __declspec(nothrow) __declspec(notshared) __declspec(thread) Function attributes __attribute__((alias)) __attribute__((always_inline)) __attribute__((const)) __attribute__((deprecated)) __attribute__((malloc)) __attribute__((noinline)) __attribute__((noreturn)) __attribute__((pure)) __attribute__((section)) __attribute__((unused)) __attribute__((used)) __attribute__((weak)) Type attributes __attribute__((aligned)) __attribute((packed)) __attribute__((transparent_union)) Variable attributes __attribute__((alias)) __attribute__((at(address))) __attribute__((aligned)) __attribute__((deprecated)) __attribute__((packed)) __attribute__((section)) __attribute__((transparent_union)) __attribute__((unused)) __attribute__((used)) __attribute__((weak)) __attribute__((zero_init)) Pragmas #pragma [no_]anon_unions #pragma arm #pragma arm section [section_sort_list] #pragma diag_default tag[,tag,...] #pragma diag_error tag[,tag,...] #pragma diag_remark tag[,tag,...] #pragma diag_suppress tag[,tag,...] #pragma diag_warning tag[, tag, ...] #pragma [no_]exceptions_unwind #pragma hdrstop #pragma import symbol_name #pragma [no_]inline #pragma no_pch #pragma Onum #pragma once #pragma Ospace #pragma Otime #pragma pop #pragma push #pragma [no_]softfp_linkage #pragma unroll [(n)] #pragma unroll_completely #pragma thumb Instruction intrinsics __breakpoint __builtin_clz __builtin_constant_p __builtin_expect __builtin_frame_address __builtin_return_address __builtin_popcount __cdp __clrex __clz __current_pc __current_sp __disable_fiq __disable_irq __enable_fiq __enable_irq __fabs __fabsf __force_stores __ldrex __ldrt __memory_changed __nop __pld __pli __qadd __qdbl __qsub __rbit __rev __return_address __ror __schedule_barrier __semihost __sev __sqrt __sqrtf __ssat __strex __strt __swp __usat __wfe __wfi __yield ARMv6 SIMD intrinsics ETSI basic operations C55x intrinsics Named register variables Compiler predefines Predefined macros Function names C and C++ Implementation Details Via File Syntax Standard C Implementation Definition Standard C++ Implementation Definition C and C++ Compiler Implementation Limits | __return_addressThis intrinsic returns the return address of the current function.
unsigned int __return_address(void)
The __return_address intrinsic returns the value of the link register that is used in returning from the current function. 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.
|
|