OSDN Git Service

PR fortran/32938
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2007 21:15:45 +0000 (21:15 +0000)
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 31 Jul 2007 21:15:45 +0000 (21:15 +0000)
* trans-stmt.c (gfc_trans_return): Convert to correct type.
* gfortran.dg/altreturn_6.f90: New test.

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

gcc/fortran/ChangeLog
gcc/fortran/trans-stmt.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/altreturn_6.f90 [new file with mode: 0644]

index ce3e62c..d7de098 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR fortran/32938
+       * trans-stmt.c (gfc_trans_return): Convert to correct type.
+
 2007-07-31  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/32942
index 0ec1435..e731967 100644 (file)
@@ -447,7 +447,8 @@ gfc_trans_return (gfc_code * code ATTRIBUTE_UNUSED)
 
       gfc_conv_expr (&se, code->expr);
 
-      tmp = build2 (MODIFY_EXPR, TREE_TYPE (result), result, se.expr);
+      tmp = build2 (MODIFY_EXPR, TREE_TYPE (result), result,
+                   fold_convert (TREE_TYPE (result), se.expr));
       gfc_add_expr_to_block (&se.pre, tmp);
 
       tmp = build1_v (GOTO_EXPR, gfc_get_return_label ());
index 4990638..1c05bf0 100644 (file)
@@ -1,3 +1,8 @@
+2007-07-31  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR fortran/32938
+       * gfortran.dg/altreturn_6.f90: New test.
+
 2007-07-31  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/32942
diff --git a/gcc/testsuite/gfortran.dg/altreturn_6.f90 b/gcc/testsuite/gfortran.dg/altreturn_6.f90
new file mode 100644 (file)
index 0000000..61f5f60
--- /dev/null
@@ -0,0 +1,5 @@
+! PR 32938
+subroutine r (*)
+  integer(kind=8) :: i
+  return i
+end