OSDN Git Service

2010-08-19 Daniel Kraft <d@domob.eu>
authordomob <domob@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Aug 2010 16:02:30 +0000 (16:02 +0000)
committerdomob <domob@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 19 Aug 2010 16:02:30 +0000 (16:02 +0000)
commit68bf06c396eaf7431a1df03cdffcba5a89021987
tree5ec817ebbdbef30901290c6099ab8de10dea253a
parent2926da89fce436fc9a50ca183ae84c3ffaa11d9e
2010-08-19  Daniel Kraft  <d@domob.eu>

PR fortran/29785
PR fortran/45016
* trans.h (struct gfc_se): New flag `byref_noassign'.
* trans-array.h (gfc_conv_shift_descriptor_lbound): New method.
(gfc_conv_array_extent_dim), (gfc_conv_descriptor_size): New methods.
* expr.c (gfc_check_pointer_assign): Allow bounds and rank remapping
and check for compile-time errors with those.
* trans-decl.c (trans_associate_var): Use new routine
`gfc_conv_shift_descriptor_lbound' instead of doing it manually.
* trans-array.c (gfc_conv_shift_descriptor_lbound): New method.
(gfc_conv_array_extent_dim), (gfc_conv_descriptor_size): New methods.
(gfc_array_init_size): Use new `gfc_conv_array_extent_dim'.
(gfc_conv_expr_descriptor): Handle new flag `byref_noassign'.
* trans-expr.c (gfc_trans_pointer_assignment): Handle bounds and
rank remapping for assignment.

2010-08-19  Daniel Kraft  <d@domob.eu>

PR fortran/29785
PR fortran/45016
* gfortran.dg/pointer_assign_5.f90: Remove 'not implemented' error.
* gfortran.dg/pointer_remapping_1.f90: New test.
* gfortran.dg/pointer_remapping_2.f03: New test.
* gfortran.dg/pointer_remapping_3.f08: New test.
* gfortran.dg/pointer_remapping_4.f03: New test.
* gfortran.dg/pointer_remapping_5.f08: New test.
* gfortran.dg/pointer_remapping_6.f08: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163377 138bc75d-0d04-0410-961f-82ee72b054a4
15 files changed:
gcc/fortran/ChangeLog
gcc/fortran/expr.c
gcc/fortran/trans-array.c
gcc/fortran/trans-array.h
gcc/fortran/trans-decl.c
gcc/fortran/trans-expr.c
gcc/fortran/trans.h
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/pointer_assign_5.f90
gcc/testsuite/gfortran.dg/pointer_remapping_1.f90 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pointer_remapping_2.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pointer_remapping_3.f08 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pointer_remapping_4.f03 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pointer_remapping_5.f08 [new file with mode: 0644]
gcc/testsuite/gfortran.dg/pointer_remapping_6.f08 [new file with mode: 0644]