+2012-03-16 Janne Blomqvist <jb@gcc.gnu.org>
+
+ * trans-intrinsic.c (build_round_expr): Don't use BUILT_IN_IROUND
+ for __float128.
+
2012-03-15 Janne Blomqvist <jb@gcc.gnu.org>
* f95-lang.c (gfc_init_builtin_functions): Initialize
resprec = TYPE_PRECISION (restype);
/* Depending on the type of the result, choose the int intrinsic
- (iround, available only as a builtin), long int intrinsic (lround
- family) or long long intrinsic (llround). We might also need to
- convert the result afterwards. */
- if (resprec <= INT_TYPE_SIZE)
+ (iround, available only as a builtin, therefore cannot use it for
+ __float128), long int intrinsic (lround family) or long long
+ intrinsic (llround). We might also need to convert the result
+ afterwards. */
+ if (resprec <= INT_TYPE_SIZE && argprec <= LONG_DOUBLE_TYPE_SIZE)
fn = builtin_decl_for_precision (BUILT_IN_IROUND, argprec);
else if (resprec <= LONG_TYPE_SIZE)
fn = builtin_decl_for_precision (BUILT_IN_LROUND, argprec);