public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug fortran/55850] New: [OOP] SELECT TYPE issues
@ 2013-01-02 22:43 burnus at gcc dot gnu.org
2013-01-02 22:46 ` [Bug fortran/55850] " burnus at gcc dot gnu.org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-01-02 22:43 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55850
Bug #: 55850
Summary: [OOP] SELECT TYPE issues
Classification: Unclassified
Product: gcc
Version: 4.8.0
Status: UNCONFIRMED
Keywords: accepts-invalid, ice-on-invalid-code
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: burnus@gcc.gnu.org
CC: pault@gcc.gnu.org
a) Accepts invalid with coindexed variables. Fortran 2008:
R804 association is associate-name => selector
R805 selector is expr
or variable
C801 (R804) If selector is not a variable or is a variable that has a vector
subscript, associate-name shall not appear in a variable definition context
(16.6.7).
C802 (R804) An associate-name shall not be the same as another associate-name
in the same associate-stmt.
C803 (R805) variable shall not be a coindexed object.
C804 (R805) expr shall not be a variable.
I think that prohibits:
associate (myname => coarray[i])
For ASSOCIATE, one gets:
associate (x => caf[4])
1
Error: Association target at (1) must not be coindexed
But for SELECT TYPE, it is accepted:
module gn
type :: ncb
end type ncb
type, public :: tn
class(ncb), allocatable :: cb(:)[:]
end type tn
contains
integer function name(self)
implicit none
class (tn), intent(in) :: self
select type (component => self%cb(1)[4]) ! INVALID due to the "[4]"
end select
end function name
end module gn
Note: The problem is not the coarray, just the coindex (gfc_is_coindexed).
b) ICE with the following:
select type (t = self%cb)
Note the "=" opposed to "=>". Backtrace:
0x5e32d0 gfc_undo_symbols()
../../gcc/fortran/symbol.c:2972
0x5af3aa reject_statement
../../gcc/fortran/parse.c:1747
0x5af4dc match_word
../../gcc/fortran/parse.c:72
module gn
type :: ncb
end type ncb
type, public :: tn
class(ncb), allocatable :: cb
end type tn
contains
integer function name(self)
implicit none
class (tn), intent(in) :: self
select type (t = self%cb)
end select
end function name
end module gn
c) The following also ICEs:
0x5cd395 resolve_select_type
../../gcc/fortran/resolve.c:7791
0x5cd395 resolve_code
../../gcc/fortran/resolve.c:9707
module gn
type :: ncb
end type ncb
type, public :: tn
type(ncb), allocatable :: cb
end type tn
contains
integer function name(self)
implicit none
class (tn), intent(in) :: self
select type (t => self%cb)
type is (ncb)
t = 5
end select
end function name
end module gn
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/55850] [OOP] SELECT TYPE issues
2013-01-02 22:43 [Bug fortran/55850] New: [OOP] SELECT TYPE issues burnus at gcc dot gnu.org
@ 2013-01-02 22:46 ` burnus at gcc dot gnu.org
2014-03-22 14:42 ` dominiq at lps dot ens.fr
2014-05-02 11:31 ` burnus at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2013-01-02 22:46 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55850
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |burnus at gcc dot gnu.org
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> 2013-01-02 22:45:38 UTC ---
See also PR 55172, the coarray issue
(http://gcc.gnu.org/ml/fortran/2013-01/msg00004.html) and PR 54990.
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/55850] [OOP] SELECT TYPE issues
2013-01-02 22:43 [Bug fortran/55850] New: [OOP] SELECT TYPE issues burnus at gcc dot gnu.org
2013-01-02 22:46 ` [Bug fortran/55850] " burnus at gcc dot gnu.org
@ 2014-03-22 14:42 ` dominiq at lps dot ens.fr
2014-05-02 11:31 ` burnus at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: dominiq at lps dot ens.fr @ 2014-03-22 14:42 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55850
Dominique d'Humieres <dominiq at lps dot ens.fr> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |WAITING
Last reconfirmed| |2014-03-22
Ever confirmed|0 |1
--- Comment #2 from Dominique d'Humieres <dominiq at lps dot ens.fr> ---
As for r208743, compiling the first test gives the following error
select type (component => self%cb(1)[4]) ! INVALID due to the "[4]"
1
Error: Selector at (1) must not be coindexed
Compiling the second test no longer gives an ICE, but the errors
select type (t = self%cb)
1
Error: parse error in SELECT TYPE statement at (1)
pr55850_1.f90:12.7:
end select
1
Error: Expecting END FUNCTION statement at (1)
Same thing for the third test
select type (t => self%cb)
1
Error: Symbol 't' at (1) has no IMPLICIT type
pr55850_2.f90:11.30:
select type (t => self%cb)
1
Error: Selector shall be polymorphic in SELECT TYPE statement at (1)
although I am not sure about the errors for the later test.
I get the same behavior with 4.8.3. With 4.7.4, I get
pr55850.f90:10.34:
class (tn), intent(in) :: self
1
Error: Component '_def_init' at (1) with coarray component shall be a
nonpointer, nonallocatable scalar
pr55850.f90:10.34:
class (tn), intent(in) :: self
1
Error: Variable 'dst' at (1) is INTENT(OUT) and can thus not be an allocatable
coarray or have coarray components
pr55850.f90:10.34:
class (tn), intent(in) :: self
1
Error: Component '_def_init' at (1) with coarray component shall be a
nonpointer, nonallocatable scalar
pr55850_1.f90:11.4:
select type (t = self%cb)
1
Error: Unclassifiable statement at (1)
pr55850_1.f90:12.7:
end select
1
Error: Expecting END FUNCTION statement at (1)
pr55850_2.f90:11.30:
select type (t => self%cb)
1
Error: Selector shall be polymorphic in SELECT TYPE statement at (1)
The first ICE disappeared between r197802 (ICE) and r197969 (errors), and the
second one, between r201916 (ICE) and r202111 (errors). Is this PR fixed or
not?
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/55850] [OOP] SELECT TYPE issues
2013-01-02 22:43 [Bug fortran/55850] New: [OOP] SELECT TYPE issues burnus at gcc dot gnu.org
2013-01-02 22:46 ` [Bug fortran/55850] " burnus at gcc dot gnu.org
2014-03-22 14:42 ` dominiq at lps dot ens.fr
@ 2014-05-02 11:31 ` burnus at gcc dot gnu.org
2 siblings, 0 replies; 4+ messages in thread
From: burnus at gcc dot gnu.org @ 2014-05-02 11:31 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55850
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|WAITING |RESOLVED
Resolution|--- |FIXED
--- Comment #3 from Tobias Burnus <burnus at gcc dot gnu.org> ---
Seems to be fixed with both a recent GCC 4.8.3 and GCC 4.10.
Thus, close as FIXED.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2014-05-02 11:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-02 22:43 [Bug fortran/55850] New: [OOP] SELECT TYPE issues burnus at gcc dot gnu.org
2013-01-02 22:46 ` [Bug fortran/55850] " burnus at gcc dot gnu.org
2014-03-22 14:42 ` dominiq at lps dot ens.fr
2014-05-02 11:31 ` burnus at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).