GCCビルトイン関数のサポート
このセクションの内容:
IAR C/C++ Compilerは、GCCスタイルのビルトイン関数も種類は限られていますがサポートしています。
以下の関数をサポートします。詳細については、GCCのドキュメントを参照してください。
__atomic_add_fetch |
__atomic_and_fetch |
__atomic_compare_exchange. weakパラメータは常に無視され、強いセマンティクスを持つバリエーションのみが提供されます。 |
__atomic_compare_exchange_n. weakパラメータは常に無視され、強いセマンティクスを持つバリエーションのみが提供されます。 |
__atomic_exchange |
__atomic_exchange_n |
__atomic_fetch_add |
__atomic_fetch_and |
__atomic_fetch_nand |
__atomic_fetch_or |
__atomic_fetch_sub |
__atomic_fetch_xor |
__atomic_load |
__atomic_load_n |
__atomic_nand_fetch |
__atomic_or_fetch |
__atomic_signal_fence |
__atomic_store |
__atomic_store_n |
__atomic_sub_fetch |
__atomic_thread_fence |
__atomic_xor_fetch |
__builtin_add_overflow. IAR 実装では、最後の(出力)パラメータで指定されたタイプと同じタイプのパラメータを参照するパラメータ、または損失なく同じタイプに変換できる定数のみが受け入れられます。この点で、これは GCC の実装とは異なります。 |
__builtin_alloca |
__builtin_bswap16 |
__builtin_bswap32 |
__builtin_bswap64 |
__builtin_clz |
__builtin_clzl |
__builtin_clzll |
__builtin_constant_p. 関数は最適化レベルに関係なく同じ結果を与え、式が後でコンパイラによってコンパイル時定数として処理される場合でも関数は 0 を返す可能性があることに注意してください。この点で、関数は GCC 関数のように動作しません。 |
__builtin_ctz |
__builtin_ctzl |
__builtin_ctzll |
__builtin_expect(認識されるが効果はない) |
__builtin_ffs |
__builtin_ffsl |
__builtin_ffsll |
__builtin_huge_val |
__builtin_huge_valf |
__builtin_huge_vall |
__builtin_inf |
__builtin_inff |
__builtin_infl |
__builtin_mul_overflow. IAR 実装では、最後の(出力)パラメータで指定されたタイプと同じタイプのパラメータを参照するパラメータ、または損失なく同じタイプに変換できる定数のみが受け入れられます。この点で、これは GCC の実装とは異なります。 |
__builtin_nan |
__builtin_nanf |
__builtin_nanl |
__builtin_nans |
__builtin_nansf |
__builtin_nansl |
__builtin_popcount |
__builtin_popcountl |
__builtin_popcountll |
__builtin_return_address. 関数はサポートされていますが、レベルパラメータは破棄され、組込み関数 __get_return_address にリダイレクトされます。 |
__builtin_sadd_overflow |
__builtin_saddl_overflow |
__builtin_saddll_overflow |
__builtin_sub_overflow. IAR 実装では、最後の(出力)パラメータで指定されたタイプと同じタイプのパラメータを参照するパラメータ、または損失なく同じタイプに変換できる定数のみが受け入れられます。この点で、これは GCC の実装とは異なります。 |
__builtin_uadd_overflow |
__builtin_uaddl_overflow |
__builtin_uaddll_overflow |
__builtin_ssub_overflow |
__builtin_ssubl_overflow |
__builtin_ssubll_overflow |
__builtin_usub_overflow |
__builtin_usubl_overflow |
__builtin_usubll_overflow |
__builtin_smul_overflow |
__builtin_smull_overflow |
__builtin_smulll_overflow |
__builtin_types_compatible_p |
__builtin_umul_overflow |
__builtin_umull_overflow |
__builtin_umulll_overflow |
__builtin_unreachable |
__sync_synchronize |
以下の関数はサポートされていますが、対応する標準ライブラリ関数にリダイレクトされます。
__builtin_acos |
__builtin_acosf |
__builtin_acosh |
__builtin_acoshf |
__builtin_acoshl |
__builtin_acosl |
__builtin_asin |
__builtin_asinf |
__builtin_asinh |
__builtin_asinhf |
__builtin_asinhl |
__builtin_asinl |
__builtin_atan |
__builtin_atan2 |
__builtin_atan2f |
__builtin_atan2l |
__builtin_atanf |
__builtin_atanh |
__builtin_atanhf |
__builtin_atanhl |
__builtin_atanl |
__builtin_cbrt |
__builtin_cbrtf |
__builtin_cbrtl |
__builtin_ceil |
__builtin_ceilf |
__builtin_ceill |
__builtin_copysign |
__builtin_copysignf |
__builtin_copysignl |
__builtin_cos |
__builtin_cosf |
__builtin_cosh |
__builtin_coshf |
__builtin_coshl |
__builtin_cosl |
__builtin_erf |
__builtin_erfc |
__builtin_erfcf |
__builtin_erfcl |
__builtin_erff |
__builtin_erfl |
__builtin_exp |
__builtin_exp2 |
__builtin_exp2f |
__builtin_exp2l |
__builtin_expf |
__builtin_expl |
__builtin_expm1 |
__builtin_expm1f |
__builtin_expm1l |
__builtin_fabs |
__builtin_fabsf |
__builtin_fabsl |
__builtin_fdim |
__builtin_fdimf |
__builtin_fdiml |
__builtin_floor |
__builtin_floorf |
__builtin_floorl |
__builtin_fma |
__builtin_fmaf |
__builtin_fmal |
__builtin_fmax |
__builtin_fmaxf |
__builtin_fmaxl |
__builtin_fmin |
__builtin_fminf |
__builtin_fminl |
__builtin_fmod |
__builtin_fmodf |
__builtin_fmodl |
__builtin_frexp |
__builtin_frexpf |
__builtin_frexpl |
__builtin_hypot |
__builtin_hypotf |
__builtin_hypotl |
__builtin_ldexp |
__builtin_ldexpf |
__builtin_ldexpl |
__builtin_lgamma |
__builtin_lgammaf |
__builtin_lgammal |
__builtin_llrint |
__builtin_llrintf |
__builtin_llrintl |
__builtin_llround |
__builtin_llroundf |
__builtin_llroundl |
__builtin_log |
__builtin_log10 |
__builtin_log10f |
__builtin_log10l |
__builtin_log1p |
__builtin_log1pf |
__builtin_log1pl |
__builtin_log2 |
__builtin_log2f |
__builtin_log2l |
__builtin_logb |
__builtin_logbf |
__builtin_logbl |
__builtin_logf |
__builtin_logl |
__builtin_lrint |
__builtin_lrintf |
__builtin_lrintl |
__builtin_lround |
__builtin_lroundf |
__builtin_lroundl |
__builtin_memcmp |
__builtin_memcpy |
__builtin_modf |
__builtin_modff |
__builtin_modfl |
__builtin_nearbyint |
__builtin_nearbyintf |
__builtin_nearbyintl |
__builtin_nextafter |
__builtin_nextafterf |
__builtin_nextafterl |
__builtin_nexttoward |
__builtin_nexttowardf |
__builtin_nexttowardl |
__builtin_pow |
__builtin_powf |
__builtin_powl |
__builtin_remainder |
__builtin_remainderf |
__builtin_remainderl |
__builtin_remquo |
__builtin_remquof |
__builtin_remquol |
__builtin_rint |
__builtin_rintf |
__builtin_rintl |
__builtin_round |
__builtin_roundf |
__builtin_roundl |
__builtin_scalbln |
__builtin_scalblnf |
__builtin_scalblnl |
__builtin_scalbn |
__builtin_scalbnf |
__builtin_scalbnl |
__builtin_sin |
__builtin_sinf |
__builtin_sinh |
__builtin_sinhf |
__builtin_sinhl |
__builtin_sinl |
__builtin_sqrt |
__builtin_sqrtf |
__builtin_sqrtl |
__builtin_tan |
__builtin_tanf |
__builtin_tanh |
__builtin_tanhf |
__builtin_tanhl |
__builtin_tanl |
__builtin_tgamma |
__builtin_tgammaf |
__builtin_tgammal |
__builtin_trunc |
__builtin_truncf |
__builtin_truncl |