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:
parent
edea991d2c
commit
a764c40079
2 changed files with 17 additions and 0 deletions
|
@ -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;
|
||||
|
|
16
gcc/testsuite/gfortran.dg/value_8.f90
Normal file
16
gcc/testsuite/gfortran.dg/value_8.f90
Normal 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
|
Loading…
Add table
Reference in a new issue