Keil™, An ARM® Company

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__((no_instrument_function)) __attribute__((nomerge)) __attribute__((nonnull)) __attribute__((noreturn)) __attribute__((notailcall)) __attribute__((pure)) __attribute__((section("name"))) __attribute__((unused)) __attribute__((used)) __attribute__((visibility("visibility_type"))) __attribute__((weak)) Type attributes __attribute__((bitband)) __attribute__((aligned)) __attribute((packed)) __attribute__((transparent_union)) Variable attributes __attribute__((alias)) __attribute__((at(address))) __attribute__((aligned)) __attribute__((deprecated)) __attribute__((packed)) __attribute__((section("name"))) __attribute__((transparent_union)) __attribute__((unused)) __attribute__((used)) __attribute__((visibility("visibility_type"))) __attribute__((weak)) __attribute__((zero_init)) Pragmas #pragma anon_unions, #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 exceptions_unwind, #pragma no_exceptions_u #pragma hdrstop #pragma import symbol_name #pragma import(__use_full_stdio) #pragma inline, #pragma no_inline #pragma no_pch #pragma Onum #pragma once #pragma Ospace #pragma Otime #pragma pack(n) #pragma pop #pragma push #pragma softfp_linkage, #pragma no_softfp_linkage #pragma unroll [(n)] #pragma unroll_completely #pragma thumb Instruction intrinsics __breakpoint __cdp __clrex __clz __current_pc __current_sp __disable_fiq __disable_irq __enable_fiq __enable_irq __fabs __fabsf __force_stores __ldrex __ldrexd __ldrt __memory_changed __nop __pld __pli __qadd __qdbl __qsub __rbit __rev __return_address __ror __schedule_barrier __sev __sqrt __sqrtf __ssat __strex __strexd __strt __swp __usat __wfe __wfi __yield ARMv6 SIMD intrinsics ETSI basic operations C55x intrinsics Named register variables VFP status intrinsic __vfp_status GNU builtin functions Nonstandard functions C99 functions C99 functions in the C90 reserved namespace C94 functions C90 functions C99 floating-point functions Other builtin functions 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

__attribute__((pure))

4.3.12. __attribute__((pure))

Many functions have no effects except to return a value, and that the return value depends only on the parameters and global variables. Functions of this kind can be subject to data flow analysis and might be eliminated.

Note

This function attribute is a GNU compiler extension that is supported by the ARM compiler.

Although related, this function attribute is not equivalent to the __pure keyword. The function attribute equivalent to __pure is __attribute__((const)).

Example

int Function_Attributes_pure_0(int b) __attribute__ ((pure));
int Function_Attributes_pure_0(int b)
{
    static int aStatic;
    aStatic++;
    return b++;
}

int Function_Attributes_pure_2(int b)
{
    int aLocal=0;
    aLocal += Function_Attributes_pure_0(b);
    return 0;
}

The call to Function_Attributes_pure_0 in this example might be eliminated because its result is not used.

Copyright © 2007, 2008 ARM Limited. All rights reserved.ARM DUI 0376B
Non-ConfidentialUnrestricted Access