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: <a rel="next" accesskey="n" href="Target-Builtins.html#Target-Builtins">Target Builtins</a>, 53Previous: <a rel="previous" accesskey="p" href="Object-Size-Checking.html#Object-Size-Checking">Object Size Checking</a>, 54Up: <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— 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— 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 ‘<samp><span class="samp">? :</span></samp>’ 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— 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 && 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— 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— 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— 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— 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— 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 < n; i++) 469 { 470 a[i] = a[i] + b[i]; 471 __builtin_prefetch (&a[i+j], 1, 1); 472 __builtin_prefetch (&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->next</code> will not fault if <code>p->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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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 ‘<samp><span class="samp">0</span></samp>’ or ‘<samp><span class="samp">0x</span></samp>’ 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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— 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