OSDN Git Service

PR fortran/30933
authorfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Aug 2007 22:29:24 +0000 (22:29 +0000)
committerfxcoudert <fxcoudert@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 6 Aug 2007 22:29:24 +0000 (22:29 +0000)
* iresolve.c (gfc_resolve_exit): Convert argument to default
integer kind.

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

gcc/fortran/ChangeLog
gcc/fortran/iresolve.c

index 9d7db42..ec3b5c6 100644 (file)
@@ -1,3 +1,9 @@
+2007-08-06  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+
+       PR fortran/30933
+       * iresolve.c (gfc_resolve_exit): Convert argument to default
+       integer kind.
+
 2007-08-06  Daniel Franke  <franke.daniel@gmail.com>
 
        * resolve.c (derived_pointer): Removed, replaced callers by access 
index 5c49135..21ec605 100644 (file)
@@ -2739,14 +2739,18 @@ void
 gfc_resolve_exit (gfc_code *c)
 {
   const char *name;
-  int kind;
+  gfc_typespec ts;
+  gfc_expr *n;
 
-  if (c->ext.actual->expr != NULL)
-    kind = c->ext.actual->expr->ts.kind;
-  else
-    kind = gfc_default_integer_kind;
+  /* The STATUS argument has to be of default kind.  If it is not,
+     we convert it.  */
+  ts.type = BT_INTEGER;
+  ts.kind = gfc_default_integer_kind;
+  n = c->ext.actual->expr;
+  if (n != NULL && n->ts.kind != ts.kind)
+    gfc_convert_type (n, &ts, 2);
 
-  name = gfc_get_string (PREFIX ("exit_i%d"), kind);
+  name = gfc_get_string (PREFIX ("exit_i%d"), ts.kind);
   c->resolved_sym = gfc_get_intrinsic_sub_symbol (name);
 }