PR fortran/33073
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Aug 2007 22:40:00 +0000 (22:40 +0000)
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 14 Aug 2007 22:40:00 +0000 (22:40 +0000)
* trans-intrinsic.c (build_fixbound_expr): Convert to result type
in all cases.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127494 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-intrinsic.c

index 0801212..7eef7f9 100644 (file)
@@ -1,5 +1,11 @@
 2007-08-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
 
+       PR fortran/33073
+       * trans-intrinsic.c (build_fixbound_expr): Convert to result type
+       in all cases.
+
+2007-08-14  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
        PR fortran/32594
        * trans-expr.c (gfc_conv_substring_expr): Only call
        gfc_conv_substring if expr->ref is not NULL.
index c8e1646..2e8b8a0 100644 (file)
@@ -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));
 }