[Bug fortran/41599] New: [OOP] SELECT TYPE with associate-name => exp: Use (sometimes) a restricted pointer
burnus at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Tue Oct 6 07:58:00 GMT 2009
Currently, an unrestricted pointer is generated. It should be an restricted
pointer if the expression is not a POINTER or TARGET.
One has to be careful, however:
class(t),allocatable :: bar
allocate(t::a%bar)
select type (foo => bar)
is type(t)
foo%item = 8
bar%item = 9
Here, both items alias - I do not know whether this code is valid or not,
however.
Ditto for
type t2
class(t) :: bar
end type t2
type(t2) :: a
allocate(t::a%bar)
select type (foo => a%bar)
is type(t)
foo%item = 8
a%bar%item = 9
Similarly for:
type t2
class(t),allocatable :: bar
end type t2
type(t2), pointer :: a
allocate(a)
allocate(t::a%bar)
select type (foo => a%bar)
is type(t)
foo%item = 8
a%bar%item = 9
Thus before fixing this, one needs to read the standard carefully.
--
Summary: [OOP] SELECT TYPE with associate-name => exp: Use
(sometimes) a restricted pointer
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41599
More information about the Gcc-bugs
mailing list