From c833f6d2b4b3ca8e3bcd738c9dd0a8cb7e06b24c Mon Sep 17 00:00:00 2001 From: Francois-Xavier Coudert Date: Tue, 14 Aug 2007 22:40:00 +0000 Subject: re PR fortran/33073 (Type mismatch in build_fixbound_expr()) PR fortran/33073 * trans-intrinsic.c (build_fixbound_expr): Convert to result type in all cases. From-SVN: r127494 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-intrinsic.c | 24 ++++-------------------- 2 files changed, 10 insertions(+), 20 deletions(-) diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0801212..7eef7f9 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2007-08-14 Francois-Xavier Coudert + PR fortran/33073 + * trans-intrinsic.c (build_fixbound_expr): Convert to result type + in all cases. + +2007-08-14 Francois-Xavier Coudert + PR fortran/32594 * trans-expr.c (gfc_conv_substring_expr): Only call gfc_conv_substring if expr->ref is not NULL. diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index c8e1646..2e8b8a0 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -314,10 +314,9 @@ build_fixbound_expr (stmtblock_t * pblock, tree arg, tree type, int up) static tree build_round_expr (tree arg, tree restype) { - tree tmp; tree argtype; tree fn; - bool longlong, convert; + bool longlong; int argprec, resprec; argtype = TREE_TYPE (arg); @@ -328,21 +327,9 @@ build_round_expr (tree arg, tree restype) (lround family) or long long intrinsic (llround). We might also need to convert the result afterwards. */ if (resprec <= LONG_TYPE_SIZE) - { - longlong = false; - if (resprec != LONG_TYPE_SIZE) - convert = true; - else - convert = false; - } + longlong = false; else if (resprec <= LONG_LONG_TYPE_SIZE) - { - longlong = true; - if (resprec != LONG_LONG_TYPE_SIZE) - convert = true; - else - convert = false; - } + longlong = true; else gcc_unreachable (); @@ -356,10 +343,7 @@ build_round_expr (tree arg, tree restype) else gcc_unreachable (); - tmp = build_call_expr (fn, 1, arg); - if (convert) - tmp = fold_convert (restype, tmp); - return tmp; + return fold_convert (restype, build_call_expr (fn, 1, arg)); } -- cgit v1.1