From: Francois-Xavier Coudert Date: Tue, 14 Aug 2007 22:40:00 +0000 (+0000) Subject: re PR fortran/33073 (Type mismatch in build_fixbound_expr()) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c833f6d2b4b3ca8e3bcd738c9dd0a8cb7e06b24c;p=gcc.git 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 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0801212a37c..7eef7f9a1c0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +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 diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index c8e16462aa8..2e8b8a010ac 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)); }