Built-in Functions (Using the GNU Compiler Collection (GCC)) (original) (raw)
Next: Extensions to the C++ Language, Previous: Extensions to the C Language Family, Up: Introduction [Contents][Index]
7 Built-in Functions Provided by GCC ¶
GCC provides a very large number of implicitly-declared built-in functions that are typically inlined by the compiler. Some of these builtins directly correspond to standard library routines. Some are for internal use in the processing of exceptions or variable-length argument lists and are not documented here because they may change from time to time; we do not recommend general use of these functions.
The remaining functions are provided either for optimization purposes, or to expose low-level functionality needed to implement features provided by library functions or similar “glue” between GCC and other programming languages or libraries. Others are target-specific, providing direct access to instructions that have no direct C equivalents without the need to write assembly language. There are also builtins to support various kinds of runtime error checking.
Most builtins have names prefixed with ‘__builtin_’, although not all of them use this convention. Except as otherwise documented, all built-in functions are available from any of the C family languages supported by GCC.
With the exception of built-ins that have library equivalents such as the standard C library functions discussed below in Builtins for C Library Functions, or that expand to library calls, GCC built-in functions are always expanded inline and thus do not have corresponding entry points and their address cannot be obtained. Attempting to use them in an expression other than a function call results in a compile-time error.
- Builtins for C Library Functions
- Additional Builtins for Numeric Operations
- Builtins for Stack Allocation
- Nonlocal Gotos
- Constructing Function Calls
- Getting the Return or Frame Address of a Function
- Stack scrubbing internal interfaces
- Using Vector Instructions through Built-in Functions
- Builtins for Atomic Memory Access
- Object Size Checking
- Built-in functions for C++ allocations and deallocations
- Other Built-in Functions Provided by GCC
- Built-in Functions Specific to Particular Target Machines