aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-decl.c10
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/pr67885.f9012
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index a58d1f1..5aed4bd 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/67885
+ * trans-decl.c (generate_local_decl): Mark PARAMETER entities in
+ BLOCK construct.
+
2015-10-29 Andrew MacLeod <amacleod@redhat.com>
* array.c: Reorder #include's and remove duplicates.
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index ded5c1f..098a327 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -5215,6 +5215,16 @@ generate_local_decl (gfc_symbol * sym)
"Unused parameter %qs which has been explicitly "
"imported at %L", sym->name, &sym->declared_at);
}
+
+ if (sym->ns
+ && sym->ns->parent
+ && sym->ns->parent->code
+ && sym->ns->parent->code->op == EXEC_BLOCK)
+ {
+ if (sym->attr.referenced)
+ gfc_get_symbol_decl (sym);
+ sym->mark = 1;
+ }
}
else if (sym->attr.flavor == FL_PROCEDURE)
{
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 223554a..ee3ac60 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-29 Steven G. Kargl <kargl@gcc.gnu.org>
+
+ PR fortran/67885
+ * gfortran.dg/pr67885.f90: New test.
+
2015-10-29 Jeff Law <law@redhat.com>
PR tree-optimization/67892
diff --git a/gcc/testsuite/gfortran.dg/pr67885.f90 b/gcc/testsuite/gfortran.dg/pr67885.f90
new file mode 100644
index 0000000..9b9adce
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/pr67885.f90
@@ -0,0 +1,12 @@
+! { dg-do run }
+! PR fortran/67885
+! Original code contributed by Gerhard Steinmetz
+! gerhard dot steinmetz dot fortran at t-online dot de
+program p
+ block
+ integer, parameter :: a(2) = [1, 2]
+ integer :: x(2)
+ x = a
+ if (x(1) /= 1) call abort
+ end block
+end