OSDN Git Service

gcc/fortran:
authordfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 29 Jul 2007 14:17:59 +0000 (14:17 +0000)
committerdfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Sun, 29 Jul 2007 14:17:59 +0000 (14:17 +0000)
2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/32906
* resolve.c (resolve_fl_parameter): Check for constant shape arrays,
adjusted error message.

gcc/testsuite:
2007-07-29  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/32906
* gfortran.dg/shape_1.f90: Adjust error message.
* gfortran.dg/parameter_array_ref_1.f90: New test.

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

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

index b193a61..671f99e 100644 (file)
@@ -1,5 +1,11 @@
 2007-07-29  Daniel Franke  <franke.daniel@gmail.com>
 
+       PR fortran/32906
+       * resolve.c (resolve_fl_parameter): Check for constant shape arrays,
+       adjusted error message.
+
+2007-07-29  Daniel Franke  <franke.daniel@gmail.com>
+
        * invoke.texi: Removed -w from option summary.
 
 2007-07-29  Daniel Franke  <franke.daniel@gmail.com>
index afa1ed8..e2ebc99 100644 (file)
@@ -7137,10 +7137,12 @@ static try
 resolve_fl_parameter (gfc_symbol *sym)
 {
   /* A parameter array's shape needs to be constant.  */
-  if (sym->as != NULL && !gfc_is_compile_time_shape (sym->as))
+  if (sym->as != NULL 
+      && (sym->as->type == AS_DEFERRED
+          || is_non_constant_shape_array (sym)))
     {
       gfc_error ("Parameter array '%s' at %L cannot be automatic "
-                "or assumed shape", sym->name, &sym->declared_at);
+                "or of deferred shape", sym->name, &sym->declared_at);
       return FAILURE;
     }
 
index 9837d9c..388c721 100644 (file)
@@ -1,3 +1,9 @@
+2007-07-29  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/32906
+       * gfortran.dg/shape_1.f90: Adjust error message.
+       * gfortran.dg/parameter_array_ref_1.f90: New test.
+
 2007-07-29  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
 
        PR fortran/31609
diff --git a/gcc/testsuite/gfortran.dg/parameter_array_ref_1.f90 b/gcc/testsuite/gfortran.dg/parameter_array_ref_1.f90
new file mode 100644 (file)
index 0000000..c22f343
--- /dev/null
@@ -0,0 +1,13 @@
+! { dg-do compile }
+!
+! PR fortran/32906 - Parameter array ... cannot be automatic or assumed shape
+!
+! Testcase contributed by Florian Ladstaedter <flad AT gmx DOT at>
+!
+program test_program
+  integer, parameter :: len = 1
+  integer, parameter :: arr(max(len,1)) = (/1/)
+
+  character(len=*), dimension (1), parameter             :: specStr = (/'string'/)
+  double precision, dimension (size(specStr)), parameter :: specNum = (/99.0d0/)
+end
index aaf943f..9292adb 100644 (file)
@@ -1,6 +1,6 @@
 ! { dg-do compile }
 ! PR 13201 we used to not give an error in those cases
 subroutine foo(n) 
-  integer, parameter :: a(n) = 1 ! { dg-error "cannot be automatic" "automatic shape" }
-  integer, parameter :: z(:) = (/ 1,2,3 /) ! { dg-error "cannot be automatic" "assumed shape" }
+  integer, parameter :: a(n) = 1           ! { dg-error "cannot be automatic" "automatic shape" }
+  integer, parameter :: z(:) = (/ 1,2,3 /) ! { dg-error "cannot be automatic" "deferred shape" }
 end subroutine