• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/toolchains/hndtools-armeabi-2011.09/share/doc/arm-arm-none-eabi/html/gcc/
1<html lang="en">
2<head>
3<title>Other Builtins - Using the GNU Compiler Collection (GCC)</title>
4<meta http-equiv="Content-Type" content="text/html">
5<meta name="description" content="Using the GNU Compiler Collection (GCC)">
6<meta name="generator" content="makeinfo 4.13">
7<link title="Top" rel="start" href="index.html#Top">
8<link rel="up" href="C-Extensions.html#C-Extensions" title="C Extensions">
9<link rel="prev" href="Object-Size-Checking.html#Object-Size-Checking" title="Object Size Checking">
10<link rel="next" href="Target-Builtins.html#Target-Builtins" title="Target Builtins">
11<link href="http://www.gnu.org/software/texinfo/" rel="generator-home" title="Texinfo Homepage">
12<!--
13Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
141998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
152010 Free Software Foundation, Inc.
16
17Permission is granted to copy, distribute and/or modify this document
18under the terms of the GNU Free Documentation License, Version 1.3 or
19any later version published by the Free Software Foundation; with the
20Invariant Sections being ``Funding Free Software'', the Front-Cover
21Texts being (a) (see below), and with the Back-Cover Texts being (b)
22(see below).  A copy of the license is included in the section entitled
23``GNU Free Documentation License''.
24
25(a) The FSF's Front-Cover Text is:
26
27     A GNU Manual
28
29(b) The FSF's Back-Cover Text is:
30
31     You have freedom to copy and modify this GNU Manual, like GNU
32     software.  Copies published by the Free Software Foundation raise
33     funds for GNU development.-->
34<meta http-equiv="Content-Style-Type" content="text/css">
35<style type="text/css"><!--
36  pre.display { font-family:inherit }
37  pre.format  { font-family:inherit }
38  pre.smalldisplay { font-family:inherit; font-size:smaller }
39  pre.smallformat  { font-family:inherit; font-size:smaller }
40  pre.smallexample { font-size:smaller }
41  pre.smalllisp    { font-size:smaller }
42  span.sc    { font-variant:small-caps }
43  span.roman { font-family:serif; font-weight:normal; } 
44  span.sansserif { font-family:sans-serif; font-weight:normal; } 
45--></style>
46<link rel="stylesheet" type="text/css" href="../cs.css">
47</head>
48<body>
49<div class="node">
50<a name="Other-Builtins"></a>
51<p>
52Next:&nbsp;<a rel="next" accesskey="n" href="Target-Builtins.html#Target-Builtins">Target Builtins</a>,
53Previous:&nbsp;<a rel="previous" accesskey="p" href="Object-Size-Checking.html#Object-Size-Checking">Object Size Checking</a>,
54Up:&nbsp;<a rel="up" accesskey="u" href="C-Extensions.html#C-Extensions">C Extensions</a>
55<hr>
56</div>
57
58<h3 class="section">6.53 Other built-in functions provided by GCC</h3>
59
60<p><a name="index-built_002din-functions-2743"></a><a name="index-g_t_005f_005fbuiltin_005ffpclassify-2744"></a><a name="index-g_t_005f_005fbuiltin_005fisfinite-2745"></a><a name="index-g_t_005f_005fbuiltin_005fisnormal-2746"></a><a name="index-g_t_005f_005fbuiltin_005fisgreater-2747"></a><a name="index-g_t_005f_005fbuiltin_005fisgreaterequal-2748"></a><a name="index-g_t_005f_005fbuiltin_005fisinf_005fsign-2749"></a><a name="index-g_t_005f_005fbuiltin_005fisless-2750"></a><a name="index-g_t_005f_005fbuiltin_005fislessequal-2751"></a><a name="index-g_t_005f_005fbuiltin_005fislessgreater-2752"></a><a name="index-g_t_005f_005fbuiltin_005fisunordered-2753"></a><a name="index-g_t_005f_005fbuiltin_005fpowi-2754"></a><a name="index-g_t_005f_005fbuiltin_005fpowif-2755"></a><a name="index-g_t_005f_005fbuiltin_005fpowil-2756"></a><a name="index-g_t_005fExit-2757"></a><a name="index-g_t_005fexit-2758"></a><a name="index-abort-2759"></a><a name="index-abs-2760"></a><a name="index-acos-2761"></a><a name="index-acosf-2762"></a><a name="index-acosh-2763"></a><a name="index-acoshf-2764"></a><a name="index-acoshl-2765"></a><a name="index-acosl-2766"></a><a name="index-alloca-2767"></a><a name="index-asin-2768"></a><a name="index-asinf-2769"></a><a name="index-asinh-2770"></a><a name="index-asinhf-2771"></a><a name="index-asinhl-2772"></a><a name="index-asinl-2773"></a><a name="index-atan-2774"></a><a name="index-atan2-2775"></a><a name="index-atan2f-2776"></a><a name="index-atan2l-2777"></a><a name="index-atanf-2778"></a><a name="index-atanh-2779"></a><a name="index-atanhf-2780"></a><a name="index-atanhl-2781"></a><a name="index-atanl-2782"></a><a name="index-bcmp-2783"></a><a name="index-bzero-2784"></a><a name="index-cabs-2785"></a><a name="index-cabsf-2786"></a><a name="index-cabsl-2787"></a><a name="index-cacos-2788"></a><a name="index-cacosf-2789"></a><a name="index-cacosh-2790"></a><a name="index-cacoshf-2791"></a><a name="index-cacoshl-2792"></a><a name="index-cacosl-2793"></a><a name="index-calloc-2794"></a><a name="index-carg-2795"></a><a name="index-cargf-2796"></a><a name="index-cargl-2797"></a><a name="index-casin-2798"></a><a name="index-casinf-2799"></a><a name="index-casinh-2800"></a><a name="index-casinhf-2801"></a><a name="index-casinhl-2802"></a><a name="index-casinl-2803"></a><a name="index-catan-2804"></a><a name="index-catanf-2805"></a><a name="index-catanh-2806"></a><a name="index-catanhf-2807"></a><a name="index-catanhl-2808"></a><a name="index-catanl-2809"></a><a name="index-cbrt-2810"></a><a name="index-cbrtf-2811"></a><a name="index-cbrtl-2812"></a><a name="index-ccos-2813"></a><a name="index-ccosf-2814"></a><a name="index-ccosh-2815"></a><a name="index-ccoshf-2816"></a><a name="index-ccoshl-2817"></a><a name="index-ccosl-2818"></a><a name="index-ceil-2819"></a><a name="index-ceilf-2820"></a><a name="index-ceill-2821"></a><a name="index-cexp-2822"></a><a name="index-cexpf-2823"></a><a name="index-cexpl-2824"></a><a name="index-cimag-2825"></a><a name="index-cimagf-2826"></a><a name="index-cimagl-2827"></a><a name="index-clog-2828"></a><a name="index-clogf-2829"></a><a name="index-clogl-2830"></a><a name="index-conj-2831"></a><a name="index-conjf-2832"></a><a name="index-conjl-2833"></a><a name="index-copysign-2834"></a><a name="index-copysignf-2835"></a><a name="index-copysignl-2836"></a><a name="index-cos-2837"></a><a name="index-cosf-2838"></a><a name="index-cosh-2839"></a><a name="index-coshf-2840"></a><a name="index-coshl-2841"></a><a name="index-cosl-2842"></a><a name="index-cpow-2843"></a><a name="index-cpowf-2844"></a><a name="index-cpowl-2845"></a><a name="index-cproj-2846"></a><a name="index-cprojf-2847"></a><a name="index-cprojl-2848"></a><a name="index-creal-2849"></a><a name="index-crealf-2850"></a><a name="index-creall-2851"></a><a name="index-csin-2852"></a><a name="index-csinf-2853"></a><a name="index-csinh-2854"></a><a name="index-csinhf-2855"></a><a name="index-csinhl-2856"></a><a name="index-csinl-2857"></a><a name="index-csqrt-2858"></a><a name="index-csqrtf-2859"></a><a name="index-csqrtl-2860"></a><a name="index-ctan-2861"></a><a name="index-ctanf-2862"></a><a name="index-ctanh-2863"></a><a name="index-ctanhf-2864"></a><a name="index-ctanhl-2865"></a><a name="index-ctanl-2866"></a><a name="index-dcgettext-2867"></a><a name="index-dgettext-2868"></a><a name="index-drem-2869"></a><a name="index-dremf-2870"></a><a name="index-dreml-2871"></a><a name="index-erf-2872"></a><a name="index-erfc-2873"></a><a name="index-erfcf-2874"></a><a name="index-erfcl-2875"></a><a name="index-erff-2876"></a><a name="index-erfl-2877"></a><a name="index-exit-2878"></a><a name="index-exp-2879"></a><a name="index-exp10-2880"></a><a name="index-exp10f-2881"></a><a name="index-exp10l-2882"></a><a name="index-exp2-2883"></a><a name="index-exp2f-2884"></a><a name="index-exp2l-2885"></a><a name="index-expf-2886"></a><a name="index-expl-2887"></a><a name="index-expm1-2888"></a><a name="index-expm1f-2889"></a><a name="index-expm1l-2890"></a><a name="index-fabs-2891"></a><a name="index-fabsf-2892"></a><a name="index-fabsl-2893"></a><a name="index-fdim-2894"></a><a name="index-fdimf-2895"></a><a name="index-fdiml-2896"></a><a name="index-ffs-2897"></a><a name="index-floor-2898"></a><a name="index-floorf-2899"></a><a name="index-floorl-2900"></a><a name="index-fma-2901"></a><a name="index-fmaf-2902"></a><a name="index-fmal-2903"></a><a name="index-fmax-2904"></a><a name="index-fmaxf-2905"></a><a name="index-fmaxl-2906"></a><a name="index-fmin-2907"></a><a name="index-fminf-2908"></a><a name="index-fminl-2909"></a><a name="index-fmod-2910"></a><a name="index-fmodf-2911"></a><a name="index-fmodl-2912"></a><a name="index-fprintf-2913"></a><a name="index-fprintf_005funlocked-2914"></a><a name="index-fputs-2915"></a><a name="index-fputs_005funlocked-2916"></a><a name="index-frexp-2917"></a><a name="index-frexpf-2918"></a><a name="index-frexpl-2919"></a><a name="index-fscanf-2920"></a><a name="index-gamma-2921"></a><a name="index-gammaf-2922"></a><a name="index-gammal-2923"></a><a name="index-gamma_005fr-2924"></a><a name="index-gammaf_005fr-2925"></a><a name="index-gammal_005fr-2926"></a><a name="index-gettext-2927"></a><a name="index-hypot-2928"></a><a name="index-hypotf-2929"></a><a name="index-hypotl-2930"></a><a name="index-ilogb-2931"></a><a name="index-ilogbf-2932"></a><a name="index-ilogbl-2933"></a><a name="index-imaxabs-2934"></a><a name="index-index-2935"></a><a name="index-isalnum-2936"></a><a name="index-isalpha-2937"></a><a name="index-isascii-2938"></a><a name="index-isblank-2939"></a><a name="index-iscntrl-2940"></a><a name="index-isdigit-2941"></a><a name="index-isgraph-2942"></a><a name="index-islower-2943"></a><a name="index-isprint-2944"></a><a name="index-ispunct-2945"></a><a name="index-isspace-2946"></a><a name="index-isupper-2947"></a><a name="index-iswalnum-2948"></a><a name="index-iswalpha-2949"></a><a name="index-iswblank-2950"></a><a name="index-iswcntrl-2951"></a><a name="index-iswdigit-2952"></a><a name="index-iswgraph-2953"></a><a name="index-iswlower-2954"></a><a name="index-iswprint-2955"></a><a name="index-iswpunct-2956"></a><a name="index-iswspace-2957"></a><a name="index-iswupper-2958"></a><a name="index-iswxdigit-2959"></a><a name="index-isxdigit-2960"></a><a name="index-j0-2961"></a><a name="index-j0f-2962"></a><a name="index-j0l-2963"></a><a name="index-j1-2964"></a><a name="index-j1f-2965"></a><a name="index-j1l-2966"></a><a name="index-jn-2967"></a><a name="index-jnf-2968"></a><a name="index-jnl-2969"></a><a name="index-labs-2970"></a><a name="index-ldexp-2971"></a><a name="index-ldexpf-2972"></a><a name="index-ldexpl-2973"></a><a name="index-lgamma-2974"></a><a name="index-lgammaf-2975"></a><a name="index-lgammal-2976"></a><a name="index-lgamma_005fr-2977"></a><a name="index-lgammaf_005fr-2978"></a><a name="index-lgammal_005fr-2979"></a><a name="index-llabs-2980"></a><a name="index-llrint-2981"></a><a name="index-llrintf-2982"></a><a name="index-llrintl-2983"></a><a name="index-llround-2984"></a><a name="index-llroundf-2985"></a><a name="index-llroundl-2986"></a><a name="index-log-2987"></a><a name="index-log10-2988"></a><a name="index-log10f-2989"></a><a name="index-log10l-2990"></a><a name="index-log1p-2991"></a><a name="index-log1pf-2992"></a><a name="index-log1pl-2993"></a><a name="index-log2-2994"></a><a name="index-log2f-2995"></a><a name="index-log2l-2996"></a><a name="index-logb-2997"></a><a name="index-logbf-2998"></a><a name="index-logbl-2999"></a><a name="index-logf-3000"></a><a name="index-logl-3001"></a><a name="index-lrint-3002"></a><a name="index-lrintf-3003"></a><a name="index-lrintl-3004"></a><a name="index-lround-3005"></a><a name="index-lroundf-3006"></a><a name="index-lroundl-3007"></a><a name="index-malloc-3008"></a><a name="index-memchr-3009"></a><a name="index-memcmp-3010"></a><a name="index-memcpy-3011"></a><a name="index-mempcpy-3012"></a><a name="index-memset-3013"></a><a name="index-modf-3014"></a><a name="index-modff-3015"></a><a name="index-modfl-3016"></a><a name="index-nearbyint-3017"></a><a name="index-nearbyintf-3018"></a><a name="index-nearbyintl-3019"></a><a name="index-nextafter-3020"></a><a name="index-nextafterf-3021"></a><a name="index-nextafterl-3022"></a><a name="index-nexttoward-3023"></a><a name="index-nexttowardf-3024"></a><a name="index-nexttowardl-3025"></a><a name="index-pow-3026"></a><a name="index-pow10-3027"></a><a name="index-pow10f-3028"></a><a name="index-pow10l-3029"></a><a name="index-powf-3030"></a><a name="index-powl-3031"></a><a name="index-printf-3032"></a><a name="index-printf_005funlocked-3033"></a><a name="index-putchar-3034"></a><a name="index-puts-3035"></a><a name="index-remainder-3036"></a><a name="index-remainderf-3037"></a><a name="index-remainderl-3038"></a><a name="index-remquo-3039"></a><a name="index-remquof-3040"></a><a name="index-remquol-3041"></a><a name="index-rindex-3042"></a><a name="index-rint-3043"></a><a name="index-rintf-3044"></a><a name="index-rintl-3045"></a><a name="index-round-3046"></a><a name="index-roundf-3047"></a><a name="index-roundl-3048"></a><a name="index-scalb-3049"></a><a name="index-scalbf-3050"></a><a name="index-scalbl-3051"></a><a name="index-scalbln-3052"></a><a name="index-scalblnf-3053"></a><a name="index-scalblnf-3054"></a><a name="index-scalbn-3055"></a><a name="index-scalbnf-3056"></a><a name="index-scanfnl-3057"></a><a name="index-signbit-3058"></a><a name="index-signbitf-3059"></a><a name="index-signbitl-3060"></a><a name="index-signbitd32-3061"></a><a name="index-signbitd64-3062"></a><a name="index-signbitd128-3063"></a><a name="index-significand-3064"></a><a name="index-significandf-3065"></a><a name="index-significandl-3066"></a><a name="index-sin-3067"></a><a name="index-sincos-3068"></a><a name="index-sincosf-3069"></a><a name="index-sincosl-3070"></a><a name="index-sinf-3071"></a><a name="index-sinh-3072"></a><a name="index-sinhf-3073"></a><a name="index-sinhl-3074"></a><a name="index-sinl-3075"></a><a name="index-snprintf-3076"></a><a name="index-sprintf-3077"></a><a name="index-sqrt-3078"></a><a name="index-sqrtf-3079"></a><a name="index-sqrtl-3080"></a><a name="index-sscanf-3081"></a><a name="index-stpcpy-3082"></a><a name="index-stpncpy-3083"></a><a name="index-strcasecmp-3084"></a><a name="index-strcat-3085"></a><a name="index-strchr-3086"></a><a name="index-strcmp-3087"></a><a name="index-strcpy-3088"></a><a name="index-strcspn-3089"></a><a name="index-strdup-3090"></a><a name="index-strfmon-3091"></a><a name="index-strftime-3092"></a><a name="index-strlen-3093"></a><a name="index-strncasecmp-3094"></a><a name="index-strncat-3095"></a><a name="index-strncmp-3096"></a><a name="index-strncpy-3097"></a><a name="index-strndup-3098"></a><a name="index-strpbrk-3099"></a><a name="index-strrchr-3100"></a><a name="index-strspn-3101"></a><a name="index-strstr-3102"></a><a name="index-tan-3103"></a><a name="index-tanf-3104"></a><a name="index-tanh-3105"></a><a name="index-tanhf-3106"></a><a name="index-tanhl-3107"></a><a name="index-tanl-3108"></a><a name="index-tgamma-3109"></a><a name="index-tgammaf-3110"></a><a name="index-tgammal-3111"></a><a name="index-toascii-3112"></a><a name="index-tolower-3113"></a><a name="index-toupper-3114"></a><a name="index-towlower-3115"></a><a name="index-towupper-3116"></a><a name="index-trunc-3117"></a><a name="index-truncf-3118"></a><a name="index-truncl-3119"></a><a name="index-vfprintf-3120"></a><a name="index-vfscanf-3121"></a><a name="index-vprintf-3122"></a><a name="index-vscanf-3123"></a><a name="index-vsnprintf-3124"></a><a name="index-vsprintf-3125"></a><a name="index-vsscanf-3126"></a><a name="index-y0-3127"></a><a name="index-y0f-3128"></a><a name="index-y0l-3129"></a><a name="index-y1-3130"></a><a name="index-y1f-3131"></a><a name="index-y1l-3132"></a><a name="index-yn-3133"></a><a name="index-ynf-3134"></a><a name="index-ynl-3135"></a>
61GCC provides a large number of built-in functions other than the ones
62mentioned above.  Some of these are for internal use in the processing
63of exceptions or variable-length argument lists and will not be
64documented here because they may change from time to time; we do not
65recommend general use of these functions.
66
67 <p>The remaining functions are provided for optimization purposes.
68
69 <p><a name="index-fno_002dbuiltin-3136"></a>GCC includes built-in versions of many of the functions in the standard
70C library.  The versions prefixed with <code>__builtin_</code> will always be
71treated as having the same meaning as the C library function even if you
72specify the <samp><span class="option">-fno-builtin</span></samp> option.  (see <a href="C-Dialect-Options.html#C-Dialect-Options">C Dialect Options</a>)
73Many of these functions are only optimized in certain cases; if they are
74not optimized in a particular case, a call to the library function will
75be emitted.
76
77 <p><a name="index-ansi-3137"></a><a name="index-std-3138"></a>Outside strict ISO C mode (<samp><span class="option">-ansi</span></samp>, <samp><span class="option">-std=c90</span></samp>,
78<samp><span class="option">-std=c99</span></samp> or <samp><span class="option">-std=c1x</span></samp>), the functions
79<code>_exit</code>, <code>alloca</code>, <code>bcmp</code>, <code>bzero</code>,
80<code>dcgettext</code>, <code>dgettext</code>, <code>dremf</code>, <code>dreml</code>,
81<code>drem</code>, <code>exp10f</code>, <code>exp10l</code>, <code>exp10</code>, <code>ffsll</code>,
82<code>ffsl</code>, <code>ffs</code>, <code>fprintf_unlocked</code>,
83<code>fputs_unlocked</code>, <code>gammaf</code>, <code>gammal</code>, <code>gamma</code>,
84<code>gammaf_r</code>, <code>gammal_r</code>, <code>gamma_r</code>, <code>gettext</code>,
85<code>index</code>, <code>isascii</code>, <code>j0f</code>, <code>j0l</code>, <code>j0</code>,
86<code>j1f</code>, <code>j1l</code>, <code>j1</code>, <code>jnf</code>, <code>jnl</code>, <code>jn</code>,
87<code>lgammaf_r</code>, <code>lgammal_r</code>, <code>lgamma_r</code>, <code>mempcpy</code>,
88<code>pow10f</code>, <code>pow10l</code>, <code>pow10</code>, <code>printf_unlocked</code>,
89<code>rindex</code>, <code>scalbf</code>, <code>scalbl</code>, <code>scalb</code>,
90<code>signbit</code>, <code>signbitf</code>, <code>signbitl</code>, <code>signbitd32</code>,
91<code>signbitd64</code>, <code>signbitd128</code>, <code>significandf</code>,
92<code>significandl</code>, <code>significand</code>, <code>sincosf</code>,
93<code>sincosl</code>, <code>sincos</code>, <code>stpcpy</code>, <code>stpncpy</code>,
94<code>strcasecmp</code>, <code>strdup</code>, <code>strfmon</code>, <code>strncasecmp</code>,
95<code>strndup</code>, <code>toascii</code>, <code>y0f</code>, <code>y0l</code>, <code>y0</code>,
96<code>y1f</code>, <code>y1l</code>, <code>y1</code>, <code>ynf</code>, <code>ynl</code> and
97<code>yn</code>
98may be handled as built-in functions. 
99All these functions have corresponding versions
100prefixed with <code>__builtin_</code>, which may be used even in strict C90
101mode.
102
103 <p>The ISO C99 functions
104<code>_Exit</code>, <code>acoshf</code>, <code>acoshl</code>, <code>acosh</code>, <code>asinhf</code>,
105<code>asinhl</code>, <code>asinh</code>, <code>atanhf</code>, <code>atanhl</code>, <code>atanh</code>,
106<code>cabsf</code>, <code>cabsl</code>, <code>cabs</code>, <code>cacosf</code>, <code>cacoshf</code>,
107<code>cacoshl</code>, <code>cacosh</code>, <code>cacosl</code>, <code>cacos</code>,
108<code>cargf</code>, <code>cargl</code>, <code>carg</code>, <code>casinf</code>, <code>casinhf</code>,
109<code>casinhl</code>, <code>casinh</code>, <code>casinl</code>, <code>casin</code>,
110<code>catanf</code>, <code>catanhf</code>, <code>catanhl</code>, <code>catanh</code>,
111<code>catanl</code>, <code>catan</code>, <code>cbrtf</code>, <code>cbrtl</code>, <code>cbrt</code>,
112<code>ccosf</code>, <code>ccoshf</code>, <code>ccoshl</code>, <code>ccosh</code>, <code>ccosl</code>,
113<code>ccos</code>, <code>cexpf</code>, <code>cexpl</code>, <code>cexp</code>, <code>cimagf</code>,
114<code>cimagl</code>, <code>cimag</code>, <code>clogf</code>, <code>clogl</code>, <code>clog</code>,
115<code>conjf</code>, <code>conjl</code>, <code>conj</code>, <code>copysignf</code>, <code>copysignl</code>,
116<code>copysign</code>, <code>cpowf</code>, <code>cpowl</code>, <code>cpow</code>, <code>cprojf</code>,
117<code>cprojl</code>, <code>cproj</code>, <code>crealf</code>, <code>creall</code>, <code>creal</code>,
118<code>csinf</code>, <code>csinhf</code>, <code>csinhl</code>, <code>csinh</code>, <code>csinl</code>,
119<code>csin</code>, <code>csqrtf</code>, <code>csqrtl</code>, <code>csqrt</code>, <code>ctanf</code>,
120<code>ctanhf</code>, <code>ctanhl</code>, <code>ctanh</code>, <code>ctanl</code>, <code>ctan</code>,
121<code>erfcf</code>, <code>erfcl</code>, <code>erfc</code>, <code>erff</code>, <code>erfl</code>,
122<code>erf</code>, <code>exp2f</code>, <code>exp2l</code>, <code>exp2</code>, <code>expm1f</code>,
123<code>expm1l</code>, <code>expm1</code>, <code>fdimf</code>, <code>fdiml</code>, <code>fdim</code>,
124<code>fmaf</code>, <code>fmal</code>, <code>fmaxf</code>, <code>fmaxl</code>, <code>fmax</code>,
125<code>fma</code>, <code>fminf</code>, <code>fminl</code>, <code>fmin</code>, <code>hypotf</code>,
126<code>hypotl</code>, <code>hypot</code>, <code>ilogbf</code>, <code>ilogbl</code>, <code>ilogb</code>,
127<code>imaxabs</code>, <code>isblank</code>, <code>iswblank</code>, <code>lgammaf</code>,
128<code>lgammal</code>, <code>lgamma</code>, <code>llabs</code>, <code>llrintf</code>, <code>llrintl</code>,
129<code>llrint</code>, <code>llroundf</code>, <code>llroundl</code>, <code>llround</code>,
130<code>log1pf</code>, <code>log1pl</code>, <code>log1p</code>, <code>log2f</code>, <code>log2l</code>,
131<code>log2</code>, <code>logbf</code>, <code>logbl</code>, <code>logb</code>, <code>lrintf</code>,
132<code>lrintl</code>, <code>lrint</code>, <code>lroundf</code>, <code>lroundl</code>,
133<code>lround</code>, <code>nearbyintf</code>, <code>nearbyintl</code>, <code>nearbyint</code>,
134<code>nextafterf</code>, <code>nextafterl</code>, <code>nextafter</code>,
135<code>nexttowardf</code>, <code>nexttowardl</code>, <code>nexttoward</code>,
136<code>remainderf</code>, <code>remainderl</code>, <code>remainder</code>, <code>remquof</code>,
137<code>remquol</code>, <code>remquo</code>, <code>rintf</code>, <code>rintl</code>, <code>rint</code>,
138<code>roundf</code>, <code>roundl</code>, <code>round</code>, <code>scalblnf</code>,
139<code>scalblnl</code>, <code>scalbln</code>, <code>scalbnf</code>, <code>scalbnl</code>,
140<code>scalbn</code>, <code>snprintf</code>, <code>tgammaf</code>, <code>tgammal</code>,
141<code>tgamma</code>, <code>truncf</code>, <code>truncl</code>, <code>trunc</code>,
142<code>vfscanf</code>, <code>vscanf</code>, <code>vsnprintf</code> and <code>vsscanf</code>
143are handled as built-in functions
144except in strict ISO C90 mode (<samp><span class="option">-ansi</span></samp> or <samp><span class="option">-std=c90</span></samp>).
145
146 <p>There are also built-in versions of the ISO C99 functions
147<code>acosf</code>, <code>acosl</code>, <code>asinf</code>, <code>asinl</code>, <code>atan2f</code>,
148<code>atan2l</code>, <code>atanf</code>, <code>atanl</code>, <code>ceilf</code>, <code>ceill</code>,
149<code>cosf</code>, <code>coshf</code>, <code>coshl</code>, <code>cosl</code>, <code>expf</code>,
150<code>expl</code>, <code>fabsf</code>, <code>fabsl</code>, <code>floorf</code>, <code>floorl</code>,
151<code>fmodf</code>, <code>fmodl</code>, <code>frexpf</code>, <code>frexpl</code>, <code>ldexpf</code>,
152<code>ldexpl</code>, <code>log10f</code>, <code>log10l</code>, <code>logf</code>, <code>logl</code>,
153<code>modfl</code>, <code>modf</code>, <code>powf</code>, <code>powl</code>, <code>sinf</code>,
154<code>sinhf</code>, <code>sinhl</code>, <code>sinl</code>, <code>sqrtf</code>, <code>sqrtl</code>,
155<code>tanf</code>, <code>tanhf</code>, <code>tanhl</code> and <code>tanl</code>
156that are recognized in any mode since ISO C90 reserves these names for
157the purpose to which ISO C99 puts them.  All these functions have
158corresponding versions prefixed with <code>__builtin_</code>.
159
160 <p>The ISO C94 functions
161<code>iswalnum</code>, <code>iswalpha</code>, <code>iswcntrl</code>, <code>iswdigit</code>,
162<code>iswgraph</code>, <code>iswlower</code>, <code>iswprint</code>, <code>iswpunct</code>,
163<code>iswspace</code>, <code>iswupper</code>, <code>iswxdigit</code>, <code>towlower</code> and
164<code>towupper</code>
165are handled as built-in functions
166except in strict ISO C90 mode (<samp><span class="option">-ansi</span></samp> or <samp><span class="option">-std=c90</span></samp>).
167
168 <p>The ISO C90 functions
169<code>abort</code>, <code>abs</code>, <code>acos</code>, <code>asin</code>, <code>atan2</code>,
170<code>atan</code>, <code>calloc</code>, <code>ceil</code>, <code>cosh</code>, <code>cos</code>,
171<code>exit</code>, <code>exp</code>, <code>fabs</code>, <code>floor</code>, <code>fmod</code>,
172<code>fprintf</code>, <code>fputs</code>, <code>frexp</code>, <code>fscanf</code>,
173<code>isalnum</code>, <code>isalpha</code>, <code>iscntrl</code>, <code>isdigit</code>,
174<code>isgraph</code>, <code>islower</code>, <code>isprint</code>, <code>ispunct</code>,
175<code>isspace</code>, <code>isupper</code>, <code>isxdigit</code>, <code>tolower</code>,
176<code>toupper</code>, <code>labs</code>, <code>ldexp</code>, <code>log10</code>, <code>log</code>,
177<code>malloc</code>, <code>memchr</code>, <code>memcmp</code>, <code>memcpy</code>,
178<code>memset</code>, <code>modf</code>, <code>pow</code>, <code>printf</code>, <code>putchar</code>,
179<code>puts</code>, <code>scanf</code>, <code>sinh</code>, <code>sin</code>, <code>snprintf</code>,
180<code>sprintf</code>, <code>sqrt</code>, <code>sscanf</code>, <code>strcat</code>,
181<code>strchr</code>, <code>strcmp</code>, <code>strcpy</code>, <code>strcspn</code>,
182<code>strlen</code>, <code>strncat</code>, <code>strncmp</code>, <code>strncpy</code>,
183<code>strpbrk</code>, <code>strrchr</code>, <code>strspn</code>, <code>strstr</code>,
184<code>tanh</code>, <code>tan</code>, <code>vfprintf</code>, <code>vprintf</code> and <code>vsprintf</code>
185are all recognized as built-in functions unless
186<samp><span class="option">-fno-builtin</span></samp> is specified (or <samp><span class="option">-fno-builtin-</span><var>function</var></samp>
187is specified for an individual function).  All of these functions have
188corresponding versions prefixed with <code>__builtin_</code>.
189
190 <p>GCC provides built-in versions of the ISO C99 floating point comparison
191macros that avoid raising exceptions for unordered operands.  They have
192the same names as the standard macros ( <code>isgreater</code>,
193<code>isgreaterequal</code>, <code>isless</code>, <code>islessequal</code>,
194<code>islessgreater</code>, and <code>isunordered</code>) , with <code>__builtin_</code>
195prefixed.  We intend for a library implementor to be able to simply
196<code>#define</code> each standard macro to its built-in equivalent. 
197In the same fashion, GCC provides <code>fpclassify</code>, <code>isfinite</code>,
198<code>isinf_sign</code> and <code>isnormal</code> built-ins used with
199<code>__builtin_</code> prefixed.  The <code>isinf</code> and <code>isnan</code>
200builtins appear both with and without the <code>__builtin_</code> prefix.
201
202<div class="defun">
203&mdash; Built-in Function: int <b>__builtin_types_compatible_p</b> (<var>type1, type2</var>)<var><a name="index-g_t_005f_005fbuiltin_005ftypes_005fcompatible_005fp-3139"></a></var><br>
204<blockquote>
205      <p>You can use the built-in function <code>__builtin_types_compatible_p</code> to
206determine whether two types are the same.
207
208      <p>This built-in function returns 1 if the unqualified versions of the
209types <var>type1</var> and <var>type2</var> (which are types, not expressions) are
210compatible, 0 otherwise.  The result of this built-in function can be
211used in integer constant expressions.
212
213      <p>This built-in function ignores top level qualifiers (e.g., <code>const</code>,
214<code>volatile</code>).  For example, <code>int</code> is equivalent to <code>const
215int</code>.
216
217      <p>The type <code>int[]</code> and <code>int[5]</code> are compatible.  On the other
218hand, <code>int</code> and <code>char *</code> are not compatible, even if the size
219of their types, on the particular architecture are the same.  Also, the
220amount of pointer indirection is taken into account when determining
221similarity.  Consequently, <code>short *</code> is not similar to
222<code>short **</code>.  Furthermore, two types that are typedefed are
223considered compatible if their underlying types are compatible.
224
225      <p>An <code>enum</code> type is not considered to be compatible with another
226<code>enum</code> type even if both are compatible with the same integer
227type; this is what the C standard specifies. 
228For example, <code>enum {foo, bar}</code> is not similar to
229<code>enum {hot, dog}</code>.
230
231      <p>You would typically use this function in code whose execution varies
232depending on the arguments' types.  For example:
233
234     <pre class="smallexample">          #define foo(x)                                                  \
235            ({                                                           \
236              typeof (x) tmp = (x);                                       \
237              if (__builtin_types_compatible_p (typeof (x), long double)) \
238                tmp = foo_long_double (tmp);                              \
239              else if (__builtin_types_compatible_p (typeof (x), double)) \
240                tmp = foo_double (tmp);                                   \
241              else if (__builtin_types_compatible_p (typeof (x), float))  \
242                tmp = foo_float (tmp);                                    \
243              else                                                        \
244                abort ();                                                 \
245              tmp;                                                        \
246            })
247</pre>
248      <p><em>Note:</em> This construct is only available for C.
249
250      </blockquote></div>
251
252<div class="defun">
253&mdash; Built-in Function: <var>type</var> <b>__builtin_choose_expr</b> (<var>const_exp, exp1, exp2</var>)<var><a name="index-g_t_005f_005fbuiltin_005fchoose_005fexpr-3140"></a></var><br>
254<blockquote>
255      <p>You can use the built-in function <code>__builtin_choose_expr</code> to
256evaluate code depending on the value of a constant expression.  This
257built-in function returns <var>exp1</var> if <var>const_exp</var>, which is an
258integer constant expression, is nonzero.  Otherwise it returns <var>exp2</var>.
259
260      <p>This built-in function is analogous to the &lsquo;<samp><span class="samp">? :</span></samp>&rsquo; operator in C,
261except that the expression returned has its type unaltered by promotion
262rules.  Also, the built-in function does not evaluate the expression
263that was not chosen.  For example, if <var>const_exp</var> evaluates to true,
264<var>exp2</var> is not evaluated even if it has side-effects.
265
266      <p>This built-in function can return an lvalue if the chosen argument is an
267lvalue.
268
269      <p>If <var>exp1</var> is returned, the return type is the same as <var>exp1</var>'s
270type.  Similarly, if <var>exp2</var> is returned, its return type is the same
271as <var>exp2</var>.
272
273      <p>Example:
274
275     <pre class="smallexample">          #define foo(x)                                                    \
276            __builtin_choose_expr (                                         \
277              __builtin_types_compatible_p (typeof (x), double),            \
278              foo_double (x),                                               \
279              __builtin_choose_expr (                                       \
280                __builtin_types_compatible_p (typeof (x), float),           \
281                foo_float (x),                                              \
282                /* <span class="roman">The void expression results in a compile-time error</span>  \
283                   <span class="roman">when assigning the result to something.</span>  */          \
284                (void)0))
285</pre>
286      <p><em>Note:</em> This construct is only available for C.  Furthermore, the
287unused expression (<var>exp1</var> or <var>exp2</var> depending on the value of
288<var>const_exp</var>) may still generate syntax errors.  This may change in
289future revisions.
290
291      </blockquote></div>
292
293<div class="defun">
294&mdash; Built-in Function: int <b>__builtin_constant_p</b> (<var>exp</var>)<var><a name="index-g_t_005f_005fbuiltin_005fconstant_005fp-3141"></a></var><br>
295<blockquote><p>You can use the built-in function <code>__builtin_constant_p</code> to
296determine if a value is known to be constant at compile-time and hence
297that GCC can perform constant-folding on expressions involving that
298value.  The argument of the function is the value to test.  The function
299returns the integer 1 if the argument is known to be a compile-time
300constant and 0 if it is not known to be a compile-time constant.  A
301return of 0 does not indicate that the value is <em>not</em> a constant,
302but merely that GCC cannot prove it is a constant with the specified
303value of the <samp><span class="option">-O</span></samp> option.
304
305      <p>You would typically use this function in an embedded application where
306memory was a critical resource.  If you have some complex calculation,
307you may want it to be folded if it involves constants, but need to call
308a function if it does not.  For example:
309
310     <pre class="smallexample">          #define Scale_Value(X)      \
311            (__builtin_constant_p (X) \
312            ? ((X) * SCALE + OFFSET) : Scale (X))
313</pre>
314      <p>You may use this built-in function in either a macro or an inline
315function.  However, if you use it in an inlined function and pass an
316argument of the function as the argument to the built-in, GCC will
317never return 1 when you call the inline function with a string constant
318or compound literal (see <a href="Compound-Literals.html#Compound-Literals">Compound Literals</a>) and will not return 1
319when you pass a constant numeric value to the inline function unless you
320specify the <samp><span class="option">-O</span></samp> option.
321
322      <p>You may also use <code>__builtin_constant_p</code> in initializers for static
323data.  For instance, you can write
324
325     <pre class="smallexample">          static const int table[] = {
326             __builtin_constant_p (EXPRESSION) ? (EXPRESSION) : -1,
327             /* <span class="roman">...</span> */
328          };
329</pre>
330      <p class="noindent">This is an acceptable initializer even if <var>EXPRESSION</var> is not a
331constant expression, including the case where
332<code>__builtin_constant_p</code> returns 1 because <var>EXPRESSION</var> can be
333folded to a constant but <var>EXPRESSION</var> contains operands that would
334not otherwise be permitted in a static initializer (for example,
335<code>0 &amp;&amp; foo ()</code>).  GCC must be more conservative about evaluating the
336built-in in this case, because it has no opportunity to perform
337optimization.
338
339      <p>Previous versions of GCC did not accept this built-in in data
340initializers.  The earliest version where it is completely safe is
3413.0.1. 
342</p></blockquote></div>
343
344<div class="defun">
345&mdash; Built-in Function: long <b>__builtin_expect</b> (<var>long exp, long c</var>)<var><a name="index-g_t_005f_005fbuiltin_005fexpect-3142"></a></var><br>
346<blockquote><p><a name="index-fprofile_002darcs-3143"></a>You may use <code>__builtin_expect</code> to provide the compiler with
347branch prediction information.  In general, you should prefer to
348use actual profile feedback for this (<samp><span class="option">-fprofile-arcs</span></samp>), as
349programmers are notoriously bad at predicting how their programs
350actually perform.  However, there are applications in which this
351data is hard to collect.
352
353      <p>The return value is the value of <var>exp</var>, which should be an integral
354expression.  The semantics of the built-in are that it is expected that
355<var>exp</var> == <var>c</var>.  For example:
356
357     <pre class="smallexample">          if (__builtin_expect (x, 0))
358            foo ();
359</pre>
360      <p class="noindent">would indicate that we do not expect to call <code>foo</code>, since
361we expect <code>x</code> to be zero.  Since you are limited to integral
362expressions for <var>exp</var>, you should use constructions such as
363
364     <pre class="smallexample">          if (__builtin_expect (ptr != NULL, 1))
365            error ();
366</pre>
367      <p class="noindent">when testing pointer or floating-point values. 
368</p></blockquote></div>
369
370<div class="defun">
371&mdash; Built-in Function: void <b>__builtin_trap</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005ftrap-3144"></a></var><br>
372<blockquote><p>This function causes the program to exit abnormally.  GCC implements
373this function by using a target-dependent mechanism (such as
374intentionally executing an illegal instruction) or by calling
375<code>abort</code>.  The mechanism used may vary from release to release so
376you should not rely on any particular implementation. 
377</p></blockquote></div>
378
379<div class="defun">
380&mdash; Built-in Function: void <b>__builtin_unreachable</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005funreachable-3145"></a></var><br>
381<blockquote><p>If control flow reaches the point of the <code>__builtin_unreachable</code>,
382the program is undefined.  It is useful in situations where the
383compiler cannot deduce the unreachability of the code.
384
385      <p>One such case is immediately following an <code>asm</code> statement that
386will either never terminate, or one that transfers control elsewhere
387and never returns.  In this example, without the
388<code>__builtin_unreachable</code>, GCC would issue a warning that control
389reaches the end of a non-void function.  It would also generate code
390to return after the <code>asm</code>.
391
392     <pre class="smallexample">          int f (int c, int v)
393          {
394            if (c)
395              {
396                return v;
397              }
398            else
399              {
400                asm("jmp error_handler");
401                __builtin_unreachable ();
402              }
403          }
404</pre>
405      <p>Because the <code>asm</code> statement unconditionally transfers control out
406of the function, control will never reach the end of the function
407body.  The <code>__builtin_unreachable</code> is in fact unreachable and
408communicates this fact to the compiler.
409
410      <p>Another use for <code>__builtin_unreachable</code> is following a call a
411function that never returns but that is not declared
412<code>__attribute__((noreturn))</code>, as in this example:
413
414     <pre class="smallexample">          void function_that_never_returns (void);
415          
416          int g (int c)
417          {
418            if (c)
419              {
420                return 1;
421              }
422            else
423              {
424                function_that_never_returns ();
425                __builtin_unreachable ();
426              }
427          }
428</pre>
429      </blockquote></div>
430
431<div class="defun">
432&mdash; Built-in Function: void <b>__builtin___clear_cache</b> (<var>char *begin, char *end</var>)<var><a name="index-g_t_005f_005fbuiltin_005f_005f_005fclear_005fcache-3146"></a></var><br>
433<blockquote><p>This function is used to flush the processor's instruction cache for
434the region of memory between <var>begin</var> inclusive and <var>end</var>
435exclusive.  Some targets require that the instruction cache be
436flushed, after modifying memory containing code, in order to obtain
437deterministic behavior.
438
439      <p>If the target does not require instruction cache flushes,
440<code>__builtin___clear_cache</code> has no effect.  Otherwise either
441instructions are emitted in-line to clear the instruction cache or a
442call to the <code>__clear_cache</code> function in libgcc is made. 
443</p></blockquote></div>
444
445<div class="defun">
446&mdash; Built-in Function: void <b>__builtin_prefetch</b> (<var>const void *addr, ...</var>)<var><a name="index-g_t_005f_005fbuiltin_005fprefetch-3147"></a></var><br>
447<blockquote><p>This function is used to minimize cache-miss latency by moving data into
448a cache before it is accessed. 
449You can insert calls to <code>__builtin_prefetch</code> into code for which
450you know addresses of data in memory that is likely to be accessed soon. 
451If the target supports them, data prefetch instructions will be generated. 
452If the prefetch is done early enough before the access then the data will
453be in the cache by the time it is accessed.
454
455      <p>The value of <var>addr</var> is the address of the memory to prefetch. 
456There are two optional arguments, <var>rw</var> and <var>locality</var>. 
457The value of <var>rw</var> is a compile-time constant one or zero; one
458means that the prefetch is preparing for a write to the memory address
459and zero, the default, means that the prefetch is preparing for a read. 
460The value <var>locality</var> must be a compile-time constant integer between
461zero and three.  A value of zero means that the data has no temporal
462locality, so it need not be left in the cache after the access.  A value
463of three means that the data has a high degree of temporal locality and
464should be left in all levels of cache possible.  Values of one and two
465mean, respectively, a low or moderate degree of temporal locality.  The
466default is three.
467
468     <pre class="smallexample">          for (i = 0; i &lt; n; i++)
469            {
470              a[i] = a[i] + b[i];
471              __builtin_prefetch (&amp;a[i+j], 1, 1);
472              __builtin_prefetch (&amp;b[i+j], 0, 1);
473              /* <span class="roman">...</span> */
474            }
475</pre>
476      <p>Data prefetch does not generate faults if <var>addr</var> is invalid, but
477the address expression itself must be valid.  For example, a prefetch
478of <code>p-&gt;next</code> will not fault if <code>p-&gt;next</code> is not a valid
479address, but evaluation will fault if <code>p</code> is not a valid address.
480
481      <p>If the target does not support data prefetch, the address expression
482is evaluated if it includes side effects but no other code is generated
483and GCC does not issue a warning. 
484</p></blockquote></div>
485
486<div class="defun">
487&mdash; Built-in Function: double <b>__builtin_huge_val</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005fhuge_005fval-3148"></a></var><br>
488<blockquote><p>Returns a positive infinity, if supported by the floating-point format,
489else <code>DBL_MAX</code>.  This function is suitable for implementing the
490ISO C macro <code>HUGE_VAL</code>. 
491</p></blockquote></div>
492
493<div class="defun">
494&mdash; Built-in Function: float <b>__builtin_huge_valf</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005fhuge_005fvalf-3149"></a></var><br>
495<blockquote><p>Similar to <code>__builtin_huge_val</code>, except the return type is <code>float</code>. 
496</p></blockquote></div>
497
498<div class="defun">
499&mdash; Built-in Function: long double <b>__builtin_huge_vall</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005fhuge_005fvall-3150"></a></var><br>
500<blockquote><p>Similar to <code>__builtin_huge_val</code>, except the return
501type is <code>long double</code>. 
502</p></blockquote></div>
503
504<div class="defun">
505&mdash; Built-in Function: int <b>__builtin_fpclassify</b> (<var>int, int, int, int, int, ...</var>)<var><a name="index-g_t_005f_005fbuiltin_005ffpclassify-3151"></a></var><br>
506<blockquote><p>This built-in implements the C99 fpclassify functionality.  The first
507five int arguments should be the target library's notion of the
508possible FP classes and are used for return values.  They must be
509constant values and they must appear in this order: <code>FP_NAN</code>,
510<code>FP_INFINITE</code>, <code>FP_NORMAL</code>, <code>FP_SUBNORMAL</code> and
511<code>FP_ZERO</code>.  The ellipsis is for exactly one floating point value
512to classify.  GCC treats the last argument as type-generic, which
513means it does not do default promotion from float to double. 
514</p></blockquote></div>
515
516<div class="defun">
517&mdash; Built-in Function: double <b>__builtin_inf</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005finf-3152"></a></var><br>
518<blockquote><p>Similar to <code>__builtin_huge_val</code>, except a warning is generated
519if the target floating-point format does not support infinities. 
520</p></blockquote></div>
521
522<div class="defun">
523&mdash; Built-in Function: _Decimal32 <b>__builtin_infd32</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005finfd32-3153"></a></var><br>
524<blockquote><p>Similar to <code>__builtin_inf</code>, except the return type is <code>_Decimal32</code>. 
525</p></blockquote></div>
526
527<div class="defun">
528&mdash; Built-in Function: _Decimal64 <b>__builtin_infd64</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005finfd64-3154"></a></var><br>
529<blockquote><p>Similar to <code>__builtin_inf</code>, except the return type is <code>_Decimal64</code>. 
530</p></blockquote></div>
531
532<div class="defun">
533&mdash; Built-in Function: _Decimal128 <b>__builtin_infd128</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005finfd128-3155"></a></var><br>
534<blockquote><p>Similar to <code>__builtin_inf</code>, except the return type is <code>_Decimal128</code>. 
535</p></blockquote></div>
536
537<div class="defun">
538&mdash; Built-in Function: float <b>__builtin_inff</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005finff-3156"></a></var><br>
539<blockquote><p>Similar to <code>__builtin_inf</code>, except the return type is <code>float</code>. 
540This function is suitable for implementing the ISO C99 macro <code>INFINITY</code>. 
541</p></blockquote></div>
542
543<div class="defun">
544&mdash; Built-in Function: long double <b>__builtin_infl</b> (<var>void</var>)<var><a name="index-g_t_005f_005fbuiltin_005finfl-3157"></a></var><br>
545<blockquote><p>Similar to <code>__builtin_inf</code>, except the return
546type is <code>long double</code>. 
547</p></blockquote></div>
548
549<div class="defun">
550&mdash; Built-in Function: int <b>__builtin_isinf_sign</b> (<var>...</var>)<var><a name="index-g_t_005f_005fbuiltin_005fisinf_005fsign-3158"></a></var><br>
551<blockquote><p>Similar to <code>isinf</code>, except the return value will be negative for
552an argument of <code>-Inf</code>.  Note while the parameter list is an
553ellipsis, this function only accepts exactly one floating point
554argument.  GCC treats this parameter as type-generic, which means it
555does not do default promotion from float to double. 
556</p></blockquote></div>
557
558<div class="defun">
559&mdash; Built-in Function: double <b>__builtin_nan</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnan-3159"></a></var><br>
560<blockquote><p>This is an implementation of the ISO C99 function <code>nan</code>.
561
562      <p>Since ISO C99 defines this function in terms of <code>strtod</code>, which we
563do not implement, a description of the parsing is in order.  The string
564is parsed as by <code>strtol</code>; that is, the base is recognized by
565leading &lsquo;<samp><span class="samp">0</span></samp>&rsquo; or &lsquo;<samp><span class="samp">0x</span></samp>&rsquo; prefixes.  The number parsed is placed
566in the significand such that the least significant bit of the number
567is at the least significant bit of the significand.  The number is
568truncated to fit the significand field provided.  The significand is
569forced to be a quiet NaN.
570
571      <p>This function, if given a string literal all of which would have been
572consumed by strtol, is evaluated early enough that it is considered a
573compile-time constant. 
574</p></blockquote></div>
575
576<div class="defun">
577&mdash; Built-in Function: _Decimal32 <b>__builtin_nand32</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnand32-3160"></a></var><br>
578<blockquote><p>Similar to <code>__builtin_nan</code>, except the return type is <code>_Decimal32</code>. 
579</p></blockquote></div>
580
581<div class="defun">
582&mdash; Built-in Function: _Decimal64 <b>__builtin_nand64</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnand64-3161"></a></var><br>
583<blockquote><p>Similar to <code>__builtin_nan</code>, except the return type is <code>_Decimal64</code>. 
584</p></blockquote></div>
585
586<div class="defun">
587&mdash; Built-in Function: _Decimal128 <b>__builtin_nand128</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnand128-3162"></a></var><br>
588<blockquote><p>Similar to <code>__builtin_nan</code>, except the return type is <code>_Decimal128</code>. 
589</p></blockquote></div>
590
591<div class="defun">
592&mdash; Built-in Function: float <b>__builtin_nanf</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnanf-3163"></a></var><br>
593<blockquote><p>Similar to <code>__builtin_nan</code>, except the return type is <code>float</code>. 
594</p></blockquote></div>
595
596<div class="defun">
597&mdash; Built-in Function: long double <b>__builtin_nanl</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnanl-3164"></a></var><br>
598<blockquote><p>Similar to <code>__builtin_nan</code>, except the return type is <code>long double</code>. 
599</p></blockquote></div>
600
601<div class="defun">
602&mdash; Built-in Function: double <b>__builtin_nans</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnans-3165"></a></var><br>
603<blockquote><p>Similar to <code>__builtin_nan</code>, except the significand is forced
604to be a signaling NaN.  The <code>nans</code> function is proposed by
605<a href="http://www.open-std.org/jtc1/sc22/wg14/www/docs/n965.htm">WG14 N965</a>. 
606</p></blockquote></div>
607
608<div class="defun">
609&mdash; Built-in Function: float <b>__builtin_nansf</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnansf-3166"></a></var><br>
610<blockquote><p>Similar to <code>__builtin_nans</code>, except the return type is <code>float</code>. 
611</p></blockquote></div>
612
613<div class="defun">
614&mdash; Built-in Function: long double <b>__builtin_nansl</b> (<var>const char *str</var>)<var><a name="index-g_t_005f_005fbuiltin_005fnansl-3167"></a></var><br>
615<blockquote><p>Similar to <code>__builtin_nans</code>, except the return type is <code>long double</code>. 
616</p></blockquote></div>
617
618<div class="defun">
619&mdash; Built-in Function: int <b>__builtin_ffs</b> (<var>unsigned int x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fffs-3168"></a></var><br>
620<blockquote><p>Returns one plus the index of the least significant 1-bit of <var>x</var>, or
621if <var>x</var> is zero, returns zero. 
622</p></blockquote></div>
623
624<div class="defun">
625&mdash; Built-in Function: int <b>__builtin_clz</b> (<var>unsigned int x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fclz-3169"></a></var><br>
626<blockquote><p>Returns the number of leading 0-bits in <var>x</var>, starting at the most
627significant bit position.  If <var>x</var> is 0, the result is undefined. 
628</p></blockquote></div>
629
630<div class="defun">
631&mdash; Built-in Function: int <b>__builtin_ctz</b> (<var>unsigned int x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fctz-3170"></a></var><br>
632<blockquote><p>Returns the number of trailing 0-bits in <var>x</var>, starting at the least
633significant bit position.  If <var>x</var> is 0, the result is undefined. 
634</p></blockquote></div>
635
636<div class="defun">
637&mdash; Built-in Function: int <b>__builtin_popcount</b> (<var>unsigned int x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fpopcount-3171"></a></var><br>
638<blockquote><p>Returns the number of 1-bits in <var>x</var>. 
639</p></blockquote></div>
640
641<div class="defun">
642&mdash; Built-in Function: int <b>__builtin_parity</b> (<var>unsigned int x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fparity-3172"></a></var><br>
643<blockquote><p>Returns the parity of <var>x</var>, i.e. the number of 1-bits in <var>x</var>
644modulo 2. 
645</p></blockquote></div>
646
647<div class="defun">
648&mdash; Built-in Function: int <b>__builtin_ffsl</b> (<var>unsigned long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fffsl-3173"></a></var><br>
649<blockquote><p>Similar to <code>__builtin_ffs</code>, except the argument type is
650<code>unsigned long</code>. 
651</p></blockquote></div>
652
653<div class="defun">
654&mdash; Built-in Function: int <b>__builtin_clzl</b> (<var>unsigned long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fclzl-3174"></a></var><br>
655<blockquote><p>Similar to <code>__builtin_clz</code>, except the argument type is
656<code>unsigned long</code>. 
657</p></blockquote></div>
658
659<div class="defun">
660&mdash; Built-in Function: int <b>__builtin_ctzl</b> (<var>unsigned long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fctzl-3175"></a></var><br>
661<blockquote><p>Similar to <code>__builtin_ctz</code>, except the argument type is
662<code>unsigned long</code>. 
663</p></blockquote></div>
664
665<div class="defun">
666&mdash; Built-in Function: int <b>__builtin_popcountl</b> (<var>unsigned long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fpopcountl-3176"></a></var><br>
667<blockquote><p>Similar to <code>__builtin_popcount</code>, except the argument type is
668<code>unsigned long</code>. 
669</p></blockquote></div>
670
671<div class="defun">
672&mdash; Built-in Function: int <b>__builtin_parityl</b> (<var>unsigned long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fparityl-3177"></a></var><br>
673<blockquote><p>Similar to <code>__builtin_parity</code>, except the argument type is
674<code>unsigned long</code>. 
675</p></blockquote></div>
676
677<div class="defun">
678&mdash; Built-in Function: int <b>__builtin_ffsll</b> (<var>unsigned long long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fffsll-3178"></a></var><br>
679<blockquote><p>Similar to <code>__builtin_ffs</code>, except the argument type is
680<code>unsigned long long</code>. 
681</p></blockquote></div>
682
683<div class="defun">
684&mdash; Built-in Function: int <b>__builtin_clzll</b> (<var>unsigned long long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fclzll-3179"></a></var><br>
685<blockquote><p>Similar to <code>__builtin_clz</code>, except the argument type is
686<code>unsigned long long</code>. 
687</p></blockquote></div>
688
689<div class="defun">
690&mdash; Built-in Function: int <b>__builtin_ctzll</b> (<var>unsigned long long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fctzll-3180"></a></var><br>
691<blockquote><p>Similar to <code>__builtin_ctz</code>, except the argument type is
692<code>unsigned long long</code>. 
693</p></blockquote></div>
694
695<div class="defun">
696&mdash; Built-in Function: int <b>__builtin_popcountll</b> (<var>unsigned long long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fpopcountll-3181"></a></var><br>
697<blockquote><p>Similar to <code>__builtin_popcount</code>, except the argument type is
698<code>unsigned long long</code>. 
699</p></blockquote></div>
700
701<div class="defun">
702&mdash; Built-in Function: int <b>__builtin_parityll</b> (<var>unsigned long long</var>)<var><a name="index-g_t_005f_005fbuiltin_005fparityll-3182"></a></var><br>
703<blockquote><p>Similar to <code>__builtin_parity</code>, except the argument type is
704<code>unsigned long long</code>. 
705</p></blockquote></div>
706
707<div class="defun">
708&mdash; Built-in Function: double <b>__builtin_powi</b> (<var>double, int</var>)<var><a name="index-g_t_005f_005fbuiltin_005fpowi-3183"></a></var><br>
709<blockquote><p>Returns the first argument raised to the power of the second.  Unlike the
710<code>pow</code> function no guarantees about precision and rounding are made. 
711</p></blockquote></div>
712
713<div class="defun">
714&mdash; Built-in Function: float <b>__builtin_powif</b> (<var>float, int</var>)<var><a name="index-g_t_005f_005fbuiltin_005fpowif-3184"></a></var><br>
715<blockquote><p>Similar to <code>__builtin_powi</code>, except the argument and return types
716are <code>float</code>. 
717</p></blockquote></div>
718
719<div class="defun">
720&mdash; Built-in Function: long double <b>__builtin_powil</b> (<var>long double, int</var>)<var><a name="index-g_t_005f_005fbuiltin_005fpowil-3185"></a></var><br>
721<blockquote><p>Similar to <code>__builtin_powi</code>, except the argument and return types
722are <code>long double</code>. 
723</p></blockquote></div>
724
725<div class="defun">
726&mdash; Built-in Function: int32_t <b>__builtin_bswap32</b> (<var>int32_t x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fbswap32-3186"></a></var><br>
727<blockquote><p>Returns <var>x</var> with the order of the bytes reversed; for example,
728<code>0xaabbccdd</code> becomes <code>0xddccbbaa</code>.  Byte here always means
729exactly 8 bits. 
730</p></blockquote></div>
731
732<div class="defun">
733&mdash; Built-in Function: int64_t <b>__builtin_bswap64</b> (<var>int64_t x</var>)<var><a name="index-g_t_005f_005fbuiltin_005fbswap64-3187"></a></var><br>
734<blockquote><p>Similar to <code>__builtin_bswap32</code>, except the argument and return types
735are 64-bit. 
736</p></blockquote></div>
737
738 </body></html>
739
740