[Bug fortran/29606] Internal Error: Derived type I/O should have been handled via the frontend

2007-09-16 Thread pault at gcc dot gnu dot org


--- Comment #3 from pault at gcc dot gnu dot org  2007-09-16 09:18 ---
Subject: Bug 29606

Author: pault
Date: Sun Sep 16 09:17:49 2007
New Revision: 128523

URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=128523
Log:
2007-09-16  Paul Thomas  [EMAIL PROTECTED]

PR fortran/29396
PR fortran/29606
PR fortran/30625
PR fortran/30871
* trans.h : Add extra argument to gfc_build_array_ref. Rename
gfc_conv_aliased_arg to gfc_conv_subref_array_arg.  Move
prototype of is_aliased_array to gfortran.h and rename it
gfc_is_subref_array.  Add field span to lang_decl, add a new
decl lang specific flag accessed by GFC_DECL_SUBREF_ARRAY_P
and a new type flag GFC_DECL_SUBREF_ARRAY_P.
* trans.c (gfc_build_array_ref): Add the new argument, decl.
If this is a subreference array pointer, use the lang_decl
field 'span' to calculate the offset in bytes and use pointer
arithmetic to address the element.
* trans-array.c (gfc_conv_scalarized_array_ref,
gfc_conv_array_ref): Add the backend declaration as the third
field, if it is likely to be a subreference array pointer.
(gfc_conv_descriptor_dimension, gfc_trans_array_ctor_element,
gfc_trans_array_constructor_element, structure_alloc_comps,
gfc_conv_array_index_offset): For all other references to
gfc_build_array_ref, set the third argument to NULL.
(gfc_get_dataptr_offset): New function.
(gfc_conv_expr_descriptor): If the rhs of a pointer assignment
is a subreference array, then calculate the offset to the
subreference of the first element and set the descriptor data
pointer to this, using gfc_get_dataptr_offset.
trans-expr.c (gfc_get_expr_charlen): Use the expression for the
character length for a character subreference.
(gfc_conv_substring, gfc_conv_subref_array_arg): Add NULL for
third argument in call to gfc_build_array_ref.
(gfc_conv_aliased_arg): Rename to gfc_conv_subref_array_arg.
(is_aliased_array): Remove.
(gfc_conv_function_call): Change reference to is_aliased_array
to gfc_is_subref_array and reference to gfc_conv_aliased_arg to
gfc_conv_subref_array_arg.
(gfc_trans_pointer_assignment): Add the array element length to
the lang_decl 'span' field.
* gfortran.h : Add subref_array_pointer to symbol_attribute and
add the prototype for gfc_is_subref_array.
* trans-stmt.c : Add NULL for third argument in all references
to gfc_build_array_ref.
* expr.c (gfc_is_subref_array): Renamed is_aliased_array.
If this is a subreference array pointer, return true.
(gfc_check_pointer_assign): If the rhs is a subreference array,
set the lhs subreference_array_pointer attribute.
* trans-decl.c (gfc_get_symbol_decl): Allocate the lang_decl
field if the symbol is a subreference array pointer and set an
initial value of zero for the 'span' field.
* trans-io.c (set_internal_unit): Refer to is_subref_array and
gfc_conv_subref_array_arg.
(nml_get_addr_expr): Add NULL third argument to
gfc_build_array_ref. 
(gfc_trans_transfer): Use the scalarizer for a subreference
array.

2007-09-16  Paul Thomas  [EMAIL PROTECTED]

PR fortran/29396
PR fortran/29606
PR fortran/30625
PR fortran/30871
* gfortran.dg/subref_array_pointer_1.f90: New test.
* gfortran.dg/subref_array_pointer_2.f90: New test.


Added:
trunk/gcc/testsuite/gfortran.dg/subref_array_pointer_1.f90
trunk/gcc/testsuite/gfortran.dg/subref_array_pointer_2.f90
Modified:
trunk/gcc/fortran/ChangeLog
trunk/gcc/fortran/expr.c
trunk/gcc/fortran/gfortran.h
trunk/gcc/fortran/trans-array.c
trunk/gcc/fortran/trans-decl.c
trunk/gcc/fortran/trans-expr.c
trunk/gcc/fortran/trans-io.c
trunk/gcc/fortran/trans-stmt.c
trunk/gcc/fortran/trans.c
trunk/gcc/fortran/trans.h
trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29606



[Bug fortran/29606] Internal Error: Derived type I/O should have been handled via the frontend

2007-09-16 Thread pault at gcc dot gnu dot org


--- Comment #4 from pault at gcc dot gnu dot org  2007-09-16 09:40 ---
Fixed on trunk

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution||FIXED


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29606



[Bug fortran/29606] Internal Error: Derived type I/O should have been handled via the frontend

2007-09-03 Thread pault at gcc dot gnu dot org


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 AssignedTo|unassigned at gcc dot gnu   |pault at gcc dot gnu dot org
   |dot org |
 Status|NEW |ASSIGNED
   Last reconfirmed|2007-02-10 21:16:09 |2007-09-03 11:47:31
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29606



[Bug fortran/29606] Internal Error: Derived type I/O should have been handled via the frontend

2007-07-04 Thread jv244 at cam dot ac dot uk


--- Comment #2 from jv244 at cam dot ac dot uk  2007-07-04 06:25 ---
(In reply to comment #1)
 This is a general problem for gfortran.  A pointer to a component of an array
 of derived types cannot, at the moment be represented. Some brave soul need to
 come up with a proposal as to how to do it and then to change every single
 client for array descriptors in gfortran.  I periodically contemplate how to 
 do
 it and recoil in horror at the size of the job.

If this would require an ABI change, 4.3.0 would be the right time to fix this.
This looks like rather important functionality.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29606



[Bug fortran/29606] Internal Error: Derived type I/O should have been handled via the frontend

2006-10-27 Thread pault at gcc dot gnu dot org


--- Comment #1 from pault at gcc dot gnu dot org  2006-10-27 23:05 ---
Daniel,

This is a general problem for gfortran.  A pointer to a component of an array
of derived types cannot, at the moment be represented. Some brave soul need to
come up with a proposal as to how to do it and then to change every single
client for array descriptors in gfortran.  I periodically contemplate how to do
it and recoil in horror at the size of the job.

Confirmed

Paul


-- 

pault at gcc dot gnu dot org changed:

   What|Removed |Added

 Status|UNCONFIRMED |NEW
 Ever Confirmed|0   |1
   Last reconfirmed|-00-00 00:00:00 |2006-10-27 23:05:02
   date||


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29606