+intrin::intrin(parser_t *parser)
+ : m_parser(parser)
+ , m_fold(&parser->m_fold)
+{
+ static const intrin_func_t intrinsics[] = {
+ {&intrin::isfinite_, "__builtin_isfinite", "isfinite", 1},
+ {&intrin::isinf_, "__builtin_isinf", "isinf", 1},
+ {&intrin::isnan_, "__builtin_isnan", "isnan", 1},
+ {&intrin::isnormal_, "__builtin_isnormal", "isnormal", 1},
+ {&intrin::signbit_, "__builtin_signbit", "signbit", 1},
+ {&intrin::acosh_, "__builtin_acosh", "acosh", 1},
+ {&intrin::asinh_, "__builtin_asinh", "asinh", 1},
+ {&intrin::atanh_, "__builtin_atanh", "atanh", 1},
+ {&intrin::exp_, "__builtin_exp", "exp", 1},
+ {&intrin::exp2_, "__builtin_exp2", "exp2", 1},
+ {&intrin::expm1_, "__builtin_expm1", "expm1", 1},
+ {&intrin::mod_, "__builtin_mod", "mod", 2},
+ {&intrin::pow_, "__builtin_pow", "pow", 2},
+ {&intrin::fabs_, "__builtin_fabs", "fabs", 1},
+ {&intrin::log_, "__builtin_log", "log", 1},
+ {&intrin::log10_, "__builtin_log10", "log10", 1},
+ {&intrin::log2_, "__builtin_log2", "log2", 1},
+ {&intrin::logb_, "__builtin_logb", "logb", 1},
+ {&intrin::lshift, "__builtin_lshift", "", 2},
+ {&intrin::rshift, "__builtin_rshift", "", 2},
+ {&intrin::epsilon_, "__builtin_epsilon", "", 0},
+ {&intrin::nan_, "__builtin_nan", "", 0},
+ {&intrin::inf_, "__builtin_inf", "", 0},
+ {&intrin::ln_, "__builtin_ln", "", 2},
+ {&intrin::debug_typestring, "__builtin_debug_typestring", "", 0},
+ {&intrin::nullfunc, "#nullfunc", "", 0}
+ };