[Bug fortran/51948] [4.6/4.7 Regression][OOP] Rejects valid: Function result value in MOVE_ALLOC, nested in SELECT TYPE

2012-01-24 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51948

--- Comment #5 from Tobias Burnus  2012-01-24 
08:35:15 UTC ---
Author: burnus
Date: Tue Jan 24 08:35:10 2012
New Revision: 183469

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183469
Log:
2012-01-24  Tobias Burnus  

PR fortran/51948
* check.c (variable_check): Fix checking for
result variables and deeply nested BLOCKs.

2012-01-24  Tobias Burnus  

PR fortran/51948
* gfortran.dg/move_alloc_12.f90: New.


Added:
branches/gcc-4_6-branch/gcc/testsuite/gfortran.dg/move_alloc_12.f90
Modified:
branches/gcc-4_6-branch/gcc/fortran/ChangeLog
branches/gcc-4_6-branch/gcc/fortran/check.c
branches/gcc-4_6-branch/gcc/testsuite/ChangeLog


[Bug fortran/51948] [4.6/4.7 Regression][OOP] Rejects valid: Function result value in MOVE_ALLOC, nested in SELECT TYPE

2012-01-24 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51948

Tobias Burnus  changed:

   What|Removed |Added

 CC||burnus at gcc dot gnu.org

--- Comment #4 from Tobias Burnus  2012-01-24 
08:13:34 UTC ---
(In reply to comment #3)
> FIXED.

Well, the first part of comment 0 is not. I filled a new bug for for it: PR
51977.


[Bug fortran/51948] [4.6/4.7 Regression][OOP] Rejects valid: Function result value in MOVE_ALLOC, nested in SELECT TYPE

2012-01-23 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51948

Tobias Burnus  changed:

   What|Removed |Added

 Status|UNCONFIRMED |RESOLVED
 Resolution||FIXED

--- Comment #3 from Tobias Burnus  2012-01-23 
21:17:26 UTC ---
FIXED.


[Bug fortran/51948] [4.6/4.7 Regression][OOP] Rejects valid: Function result value in MOVE_ALLOC, nested in SELECT TYPE

2012-01-23 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51948

--- Comment #2 from Tobias Burnus  2012-01-23 
20:38:27 UTC ---
Author: burnus
Date: Mon Jan 23 20:38:23 2012
New Revision: 183453

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=183453
Log:
2012-01-23  Tobias Burnus  

PR fortran/51948
* check.c (variable_check): Fix checking for
result variables and deeply nested BLOCKs.

2012-01-23  Tobias Burnus  

PR fortran/51948
* gfortran.dg/move_alloc_12.f90: New.


Added:
trunk/gcc/testsuite/gfortran.dg/move_alloc_12.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/check.c
trunk/gcc/testsuite/ChangeLog


[Bug fortran/51948] [4.6/4.7 Regression][OOP] Rejects valid: Function result value in MOVE_ALLOC, nested in SELECT TYPE

2012-01-23 Thread burnus at gcc dot gnu.org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51948

Tobias Burnus  changed:

   What|Removed |Added

   Target Milestone|--- |4.6.3
Summary|[OOP] Rejects valid:|[4.6/4.7 Regression][OOP]
   |Polymorphic arguments in|Rejects valid: Function
   |MOVE_ALLOC  |result value in MOVE_ALLOC,
   ||nested in SELECT TYPE

--- Comment #1 from Tobias Burnus  2012-01-23 
11:43:18 UTC ---
The second example is wrong - and it works after fixing it: s/func/func2/.

This program compiles with GCC 4.5 (and fails with 4.6/4.7) - thus, I marked
the PR as regression.


Better example (still based on periodic_6th_order.F90). The SELECT TYPE is
crucial, a simple ASSOCIATE or BLOCK won't do:

call move_alloc (x, func)
1
Error: 'to' argument of 'move_alloc' intrinsic at (1) must be a variable


The program 


  type :: t
  end type t
contains
  function func(x, y)
class(t) :: y ! Dummy variable
type(t), allocatable :: func  ! Can also be CLASS
type(t), allocatable :: x ! Can also be CLASS

   ! call move_alloc (x, func) ! <<< Works

select type (y)
  type is(t)
call move_alloc (x, func) ! << Error (but no select variable involved)
end select
  end function
end