PR fortran/97491 - Wrong restriction for VALUE arguments of pure procedures

A dummy argument with the VALUE attribute may be redefined in a PURE or
ELEMENTAL procedure.  Adjust the associated purity check.

gcc/fortran/ChangeLog:

	* resolve.c (gfc_impure_variable): A dummy argument with the VALUE
	attribute may be redefined without making a procedure impure.

gcc/testsuite/ChangeLog:

	* gfortran.dg/value_8.f90: New test.
This commit is contained in:
Harald Anlauf 2020-10-27 20:25:23 +01:00
parent edea991d2c
commit a764c40079
2 changed files with 17 additions and 0 deletions

View file

@ -16476,6 +16476,7 @@ gfc_impure_variable (gfc_symbol *sym)
proc = sym->ns->proc_name;
if (sym->attr.dummy
&& !sym->attr.value
&& ((proc->attr.subroutine && sym->attr.intent == INTENT_IN)
|| proc->attr.function))
return 1;

View file

@ -0,0 +1,16 @@
! { dg-do compile }
! PR97491 - Wrong restriction for VALUE arguments of pure procedures
pure function foo (x) result (ret)
integer :: ret
integer, value :: x
x = x / 2
ret = x
end function foo
elemental function foo1 (x)
integer :: foo1
integer, value :: x
x = x / 2
foo1 = x
end function foo1