Bug 50420 - [Coarray] lcobound doesn't accept coarray subcomponents
Summary: [Coarray] lcobound doesn't accept coarray subcomponents
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: fortran (show other bugs)
Version: 4.7.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-09-15 17:12 UTC by Mikael Morin
Modified: 2011-10-18 15:37 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mikael Morin 2011-09-15 17:12:41 UTC
This code is modified from coarray/alloc_comp_1.f90:

      type t
        integer :: i
      end type t
      type(t), allocatable :: a[:]
      allocate(a[3:*])
      a%i = 7
      if (a%i /= 7) call abort
      print *, lcobound(a%i)
      end


With (patched) trunk, I get:

f951: internal compiler error: in simplify_cobound, at fortran/simplify.c:3552
Comment 1 Mikael Morin 2011-09-15 21:39:56 UTC
(In reply to comment #0)
> With (patched) trunk, I get:
> 
> f951: internal compiler error: in simplify_cobound, at fortran/simplify.c:3552

With vanilla trunk, I get instead:

      print *, lcobound(a%i)
                        1
Error: Expected coarray variable as 'coarray' argument to the lcobound intrinsic at (1)


Which makes it a reject-valid instead of ice-on-valid.
Comment 2 Mikael Morin 2011-09-15 23:19:10 UTC
(In reply to comment #1)
> (In reply to comment #0)
> > With (patched) trunk, I get:
> > [...]
> With vanilla trunk, I get instead:
> [...]

For information the patch in "(patched) trunk" was:
http://gcc.gnu.org/ml/fortran/2011-09/msg00057.html
Comment 3 Mikael Morin 2011-10-18 14:42:24 UTC
Author: mikael
Date: Tue Oct 18 14:42:21 2011
New Revision: 180142

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180142
Log:
	PR fortran/50420
	* trans-array.c (gfc_conv_expr_descriptor): Count codimensions starting
	from zero, and add then the relevant offset (either ndim or loop.dimen)
	depending on context.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-array.c
Comment 4 Mikael Morin 2011-10-18 14:45:49 UTC
Author: mikael
Date: Tue Oct 18 14:45:46 2011
New Revision: 180143

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180143
Log:
	PR fortran/50420
	* trans-array.c (gfc_conv_expr_descriptor): Use loop.dimen instead of
	ndim for the descriptor's rank.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-array.c
Comment 5 Mikael Morin 2011-10-18 14:55:54 UTC
Author: mikael
Date: Tue Oct 18 14:55:48 2011
New Revision: 180145

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180145
Log:
	PR fortran/50420
	* trans-array.c (gfc_walk_array_ref): Allow zero rank arrays
	if they are coarrays.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-array.c
Comment 6 Mikael Morin 2011-10-18 14:59:11 UTC
Author: mikael
Date: Tue Oct 18 14:59:07 2011
New Revision: 180146

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180146
Log:
	PR fortran/50420
	* trans-intrinsic.c (walk_coarray): Allow subreferences after a
	coarray object reference.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-intrinsic.c
Comment 7 Mikael Morin 2011-10-18 15:02:46 UTC
Author: mikael
Date: Tue Oct 18 15:02:38 2011
New Revision: 180147

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180147
Log:
	PR fortran/50420
	* trans-intrinsic.c (walk_coarray): Change AR_ELEMENT to AR_SECTION.

	PR fortran/50420
	* trans-intrinsic.c (walk_coarray): Use gfc_walk_array_ref for
	the scalarization chain initialization. 


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-intrinsic.c
Comment 8 Mikael Morin 2011-10-18 15:05:34 UTC
Author: mikael
Date: Tue Oct 18 15:05:30 2011
New Revision: 180148

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180148
Log:
	PR fortran/50420
	* check.c (dim_corank_check): Use gfc_get_corank to get corank.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/check.c
Comment 9 Mikael Morin 2011-10-18 15:11:27 UTC
Author: mikael
Date: Tue Oct 18 15:11:21 2011
New Revision: 180150

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180150
Log:
	PR fortran/50420
	* simplify.c (simplify_cobound): Accept non-last-in-ref-chain coarrays.
	Don't set already set array ref.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/simplify.c
Comment 10 Mikael Morin 2011-10-18 15:13:58 UTC
Author: mikael
Date: Tue Oct 18 15:13:45 2011
New Revision: 180151

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180151
Log:
	PR fortran/50420
	* trans-types.c (gfc_build_array_type): Don't force lower bound to one
	in the deferred case.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans-types.c
Comment 11 Mikael Morin 2011-10-18 15:17:34 UTC
Author: mikael
Date: Tue Oct 18 15:17:29 2011
New Revision: 180152

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180152
Log:
	PR fortran/50420
	* trans.c (gfc_build_array_ref): If type is not an array, check that
	there is nothing to do, and do nothing.


Modified:
    trunk/gcc/fortran/ChangeLog
    trunk/gcc/fortran/trans.c
Comment 12 Mikael Morin 2011-10-18 15:23:10 UTC
Author: mikael
Date: Tue Oct 18 15:23:04 2011
New Revision: 180153

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=180153
Log:
	PR fortran/50420
	* gfortran.dg/coarray_subobject_1.f90: New test.
	* gfortran.dg/coarray/subobject_1.f90: New test.


Added:
    trunk/gcc/testsuite/gfortran.dg/coarray/subobject_1.f90
    trunk/gcc/testsuite/gfortran.dg/coarray_subobject_1.f90
Modified:
    trunk/gcc/testsuite/ChangeLog
Comment 13 Mikael Morin 2011-10-18 15:37:20 UTC
Should be fixed now.
Thank you for the rep... Hem, I was the reporter.