https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99651
Bug ID: 99651
Summary: Cannot change attributes of USE-associated intrinsic
Product: gcc
Version: 10.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: aserranot at aemet dot es
Target Milestone: ---
Created attachment 50424
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50424&action=edit
Source files to reproduce the problem
When I make a minimal example, the problem does not appear. So, I have taken my
code and begun to simplify it while testing that, after each simplification,
the problem remains.
I use a fortran wrapper for the udunits by Michel Valin (Copyright Université
du Québec à Montréal) and it seems that when I erase the corresponding use
statement and all the variables of a type defined in the udunits2 wrapper, the
problem disapears. So I think that the problem is triggered in some way by that
module.
I attach my code and the module.
To compile, issue the following commands in a directory where you have the
files f_udunits_2.f90, f_udunits_2.inc and gfortran_bug_example.f90:
gfortran -J. -cpp -fno-realloc-lhs -fopenmp -fcheck=bounds -fcheck=all -g -O0
-Wall -c f_udunits_2.f90
gfortran -J. -cpp -fno-realloc-lhs -fopenmp -fcheck=bounds -fcheck=all -g -O0
-Wall -c gfortran_bug_example.f90
In my system, the output from the last command is:
gfortran_bug_example.f90:41:53:
41 | type(typeNode), pointer :: Next => null()
| 1
Error: No se pueden cambiar los atributos del símbolo asociado con USE null en
(1)
gfortran_bug_example.f90:45:45:
45 | type(typeNode), pointer :: Head => null()
| 1
Error: No se pueden cambiar los atributos del símbolo asociado con USE null en
(1)
gfortran_bug_example.f90:46:45:
46 | type(typeNode), pointer :: Last => null()
| 1
Error: No se pueden cambiar los atributos del símbolo asociado con USE null en
(1)
gfortran_bug_example.f90:62:30:
62 | class(typeFieldsList) :: FieldsList
| 1
Error: Derived type ‘typefieldslist’ at (1) is being used before it is defined
gfortran_bug_example.f90:66:30:
66 | class(typeFieldsList) :: Fields
| 1
Error: Derived type ‘typefieldslist’ at (1) is being used before it is defined
gfortran_bug_example.f90:67:25:
67 | class(typeField), intent(in) :: Field
| 1
Error: Derived type ‘typefield’ at (1) is being used before it is defined
gfortran_bug_example.f90:71:30:
71 | class(typeFieldsList), target :: Fields
| 1
Error: Derived type ‘typefieldslist’ at (1) is being used before it is defined
gfortran_bug_example.f90:73:25:
73 | class(typeField), pointer :: Ptr
| 1
Error: Derived type ‘typefield’ at (1) is being used before it is defined