OSDN Git Service

PR fortran/24790
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Aug 2008 18:47:19 +0000 (18:47 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 29 Aug 2008 18:47:19 +0000 (18:47 +0000)
* trans-decl.c (create_function_arglist): Set DECL_BY_REFERENCE on
PARM_DECLs with pointer or reference type.

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

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

index 55d452f..671ef07 100644 (file)
@@ -1,5 +1,9 @@
 2008-08-29  Jakub Jelinek  <jakub@redhat.com>
 
+       PR fortran/24790
+       * trans-decl.c (create_function_arglist): Set DECL_BY_REFERENCE on
+       PARM_DECLs with pointer or reference type.
+
        * trans-decl.c (gfc_build_qualified_array): Build non-flat
        array type for debug info purposes.
 
index 54a1aa0..bf038f7 100644 (file)
@@ -1644,6 +1644,10 @@ create_function_arglist (gfc_symbol * sym)
       DECL_ARG_TYPE (parm) = TREE_VALUE (typelist);
       /* All implementation args are read-only.  */
       TREE_READONLY (parm) = 1;
+      if (POINTER_TYPE_P (type)
+         && (!f->sym->attr.proc_pointer
+             && f->sym->attr.flavor != FL_PROCEDURE))
+       DECL_BY_REFERENCE (parm) = 1;
 
       gfc_finish_decl (parm);