aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDaniel Franke <franke.daniel@gmail.com>2007-07-29 10:17:59 -0400
committerDaniel Franke <dfranke@gcc.gnu.org>2007-07-29 10:17:59 -0400
commitc317bc4076ec88beb910e6cdf0fcd067035361fb (patch)
treeced8852cf592f30ac5230edbb390811f4a44377d /gcc
parentb1e759547fa63a16c51093ded69cd79570946c7b (diff)
downloadgcc-c317bc4076ec88beb910e6cdf0fcd067035361fb.zip
gcc-c317bc4076ec88beb910e6cdf0fcd067035361fb.tar.gz
gcc-c317bc4076ec88beb910e6cdf0fcd067035361fb.tar.bz2
re PR fortran/32906 (Error: Parameter array ... cannot be automatic or assumed shape)
gcc/fortran: 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. From-SVN: r127043
Diffstat (limited to 'gcc')
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/resolve.c6
-rw-r--r--gcc/testsuite/ChangeLog6
-rw-r--r--gcc/testsuite/gfortran.dg/parameter_array_ref_1.f9013
-rw-r--r--gcc/testsuite/gfortran.dg/shape_1.f904
5 files changed, 31 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index b193a61..671f99e 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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>
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index afa1ed8..e2ebc99 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -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;
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 9837d9c..388c721 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..c22f343
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/parameter_array_ref_1.f90
@@ -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
diff --git a/gcc/testsuite/gfortran.dg/shape_1.f90 b/gcc/testsuite/gfortran.dg/shape_1.f90
index aaf943f..9292adb 100644
--- a/gcc/testsuite/gfortran.dg/shape_1.f90
+++ b/gcc/testsuite/gfortran.dg/shape_1.f90
@@ -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