http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50083
--- Comment #8 from Uros Bizjak <ubizjak at gmail dot com> 2011-08-25 18:30:54 UTC --- Too many trees to see the forest case ;) We also have to protect conversion of round, rint and nearbyint with TARGET_C99. Obvious patch (also includes non-harmful typo in existing code): --cut here-- Index: convert.c =================================================================== --- convert.c (revision 178071) +++ convert.c (working copy) @@ -469,6 +469,9 @@ convert_to_integer (tree type, tree expr) break; CASE_FLT_FN (BUILT_IN_ROUND): + /* Only convert in ISO C99 mode. */ + if (!TARGET_C99_FUNCTIONS) + break; if (outprec < TYPE_PRECISION (integer_type_node) || (outprec == TYPE_PRECISION (integer_type_node) && !TYPE_UNSIGNED (type))) @@ -487,11 +490,14 @@ convert_to_integer (tree type, tree expr) break; /* ... Fall through ... */ CASE_FLT_FN (BUILT_IN_RINT): + /* Only convert in ISO C99 mode. */ + if (!TARGET_C99_FUNCTIONS) + break; if (outprec < TYPE_PRECISION (integer_type_node) || (outprec == TYPE_PRECISION (integer_type_node) && !TYPE_UNSIGNED (type))) fn = mathfn_built_in (s_intype, BUILT_IN_IRINT); - else if (outprec < TYPE_PRECISION (long_integer_type_node) + else if (outprec == TYPE_PRECISION (long_integer_type_node) && !TYPE_UNSIGNED (type)) fn = mathfn_built_in (s_intype, BUILT_IN_LRINT); else if (outprec == TYPE_PRECISION (long_long_integer_type_node) --cut here--