]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/29941 ([4.1 only] gfortran reports error with len of assumed size chara...
authorPaul Thomas <pault@gcc.gnu.org>
Sat, 9 Dec 2006 20:41:51 +0000 (20:41 +0000)
committerPaul Thomas <pault@gcc.gnu.org>
Sat, 9 Dec 2006 20:41:51 +0000 (20:41 +0000)
2006-12-09  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/29941
* resolve.c (resolve_function): Add LEN to the functions not
checked for assumed size actual args.

2006-12-09  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/29941
* gfortran.dg/assumed_len.f90: New test.

From-SVN: r119695

gcc/fortran/ChangeLog
gcc/fortran/resolve.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/assumed_len.f90 [new file with mode: 0644]

index be404adad1c56a30a602d959b2136adf35102211..1a6b28afcde204d54f3faaca00825e88d2e4ca17 100644 (file)
@@ -1,14 +1,20 @@
+2006-12-09  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/29941
+       * resolve.c (resolve_function): Add LEN to the functions not
+       checked for assumed size actual args.
+
 2006-12-08  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/27546
-       * trans-decl.f90 (gfc_create_module_variable): Allow imported symbols
-         in interface bodys in modules.
+       * trans-decl.c (gfc_create_module_variable): Allow imported
+       symbols in interface bodies in modules.
 
 2006-12-06  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/29711
-       * error.c (error_print): Fix handling of printf-style position specifiers
-         of the form "%3$d"
+       * error.c (error_print): Fix handling of printf-style position
+       specifiers of the form "%3$d".
 
 2006-12-05  Paul Thomas  <pault@gcc.gnu.org>
 
index e31ecbd5909e8f6cb3c2f88037f188bc9fb703d4..863e8319d09100931cdd2f4340c23187d197399f 100644 (file)
@@ -1514,19 +1514,21 @@ resolve_function (gfc_expr * expr)
       t = FAILURE;
     }
 
+#define GENERIC_ID expr->value.function.isym->generic_id
   else if (expr->value.function.actual != NULL
             && expr->value.function.isym != NULL
-            && expr->value.function.isym->generic_id != GFC_ISYM_LBOUND
-            && expr->value.function.isym->generic_id != GFC_ISYM_LOC
-            && expr->value.function.isym->generic_id != GFC_ISYM_PRESENT)
+            && GENERIC_ID != GFC_ISYM_LBOUND
+            && GENERIC_ID != GFC_ISYM_LEN
+            && GENERIC_ID != GFC_ISYM_LOC
+            && GENERIC_ID != GFC_ISYM_PRESENT)
     {
       /* Array intrinsics must also have the last upper bound of an
         assumed size array argument.  UBOUND and SIZE have to be
         excluded from the check if the second argument is anything
         than a constant.  */
       int inquiry;
-      inquiry = expr->value.function.isym->generic_id == GFC_ISYM_UBOUND
-                 || expr->value.function.isym->generic_id == GFC_ISYM_SIZE;
+      inquiry = GENERIC_ID == GFC_ISYM_UBOUND
+                 || GENERIC_ID == GFC_ISYM_SIZE;
 
       for (arg = expr->value.function.actual; arg; arg = arg->next)
        {
@@ -1540,6 +1542,7 @@ resolve_function (gfc_expr * expr)
            return FAILURE;
        }
     }
+#undef GENERIC_ID
 
   need_full_assumed_size = temp;
 
index 74246f22db081c5a8917a953e9060046245d7b86..761d53bb66053fe767606011ac7bc9d2bfbfb392 100644 (file)
@@ -1,3 +1,8 @@
+2006-12-09  Paul Thomas  <pault@gcc.gnu.org>
+
+       PR fortran/29941
+       * gfortran.dg/assumed_len.f90: New test.
+
 2006-12-09  Richard Guenther  <rguenther@suse.de>
 
        * g++.dg/warn/implicit-typename1.C: Qualify types.
diff --git a/gcc/testsuite/gfortran.dg/assumed_len.f90 b/gcc/testsuite/gfortran.dg/assumed_len.f90
new file mode 100644 (file)
index 0000000..5895e21
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! Test of the patch for PR29941, in which LEN threw an error with
+! an assumed size argument.
+! 
+! Contributed by William Mitchell <william.mitchell@nist.gov>
+!
+subroutine whatever(str)
+character(len=*), dimension(*) :: str
+integer :: i
+i = len(str)
+end subroutine whatever