On Mon, 20 May 2019, Martin Jambor wrote: > in addition to the things already pointed out by Joseph, I have the > following comments. But as Joseph has already pointed out, you should > also test your patch on __float128 types, so please make sure your code > gets invoked and works for something like: > > if (__builtin_roundevenf128 (0x1p64q+0.5) != (0x1p64q)) > link_error (__LINE__);
... but with the f128 constant suffix not q, so it works on more architectures (all those with _Float128 support, not just those with older __float128 support). > > +DEF_EXT_LIB_BUILTIN (BUILT_IN_ROUNDEVEN, "roundeven", > > BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) > > +DEF_EXT_LIB_BUILTIN (BUILT_IN_ROUNDEVENF, "roundevenf", > > BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST) > > +DEF_EXT_LIB_BUILTIN (BUILT_IN_ROUNDEVENL, "roundevenl", > > BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST) > > ...and for the code to trigger for __builtin_roundevenf128 you have to > define this builtin function too. The easiest way is to do it in the > same way it is done for BUILTIN_ROUND and many other functions, i.e. use > DEF_EXT_LIB_FLOATN_NX_BUILTINS. Also note that TS 18661-1 has been merged into C2X. I haven't yet updated glibc headers to reflect this, but this means a new DEF_C2X_BUILTIN should be added similar to DEF_C11_BUILTIN, and used for those three new functions, instead of DEF_EXT_LIB_BUILTIN. (And for the strdup and strndup built-in functions, also added to C2X, but that's independent of the present project.) -- Joseph S. Myers jos...@codesourcery.com