trans-expr.c (gfc_add_interface_mapping): For characters, dereference pointer if...
authorWolfgang Gellerich <gellerich@de.ibm.com>
Wed, 13 Sep 2006 12:36:26 +0000 (12:36 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Wed, 13 Sep 2006 12:36:26 +0000 (12:36 +0000)
2006-09-13  Wolfgang Gellerich  <gellerich@de.ibm.com>

* trans-expr.c (gfc_add_interface_mapping): For characters, dereference
pointer if necessary and then perform the cast.

From-SVN: r116921

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

index 54db2002e94fe2fca0febbc42cac8fa20b3865d2..2e88fbf8b3e565229057917b0a2b120494b4453e 100644 (file)
@@ -1,3 +1,8 @@
+2006-09-13  Wolfgang Gellerich  <gellerich@de.ibm.com>
+
+       * trans-expr.c (gfc_add_interface_mapping): For characters, dereference
+       pointer if necessary and then perform the cast.
+
 2006-09-11  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        * intrinsic.c: Update Copyright date.
index dc5ac27b786440b3d0ca0848bee1b2cc078032a8..e477f9c061233d8a473401b1ac5eb01c947f8618 100644 (file)
@@ -1386,11 +1386,10 @@ gfc_add_interface_mapping (gfc_interface_mapping * mapping,
       tmp = gfc_get_character_type_len (sym->ts.kind, NULL);
       tmp = build_pointer_type (tmp);
       if (sym->attr.pointer)
-       tmp = build_pointer_type (tmp);
-
-      value = fold_convert (tmp, se->expr);
-      if (sym->attr.pointer)
-       value = build_fold_indirect_ref (value);
+        value = build_fold_indirect_ref (se->expr);
+      else
+        value = se->expr;
+      value = fold_convert (tmp, value);
     }
 
   /* If the argument is a scalar, a pointer to an array or an allocatable,