re PR fortran/84141 (Internal error: type_name(): Bad type)
2018-02-03 Paul Thomas <pault@gcc.gnu.org> PR fortran/84141 PR fortran/84155 * trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype use gfc_get_dtype_rank_type. 2018-02-03 Paul Thomas <pault@gcc.gnu.org> PR fortran/84141 PR fortran/84155 * gfortran.dg/pr84155.f90 : New test. From-SVN: r257356
This commit is contained in:
parent
d97aee7416
commit
2c536ce7b6
4 changed files with 71 additions and 2 deletions
|
@ -1,3 +1,10 @@
|
||||||
|
2018-02-03 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/84141
|
||||||
|
PR fortran/84155
|
||||||
|
* trans-array.c (gfc_array_init_size): Instead of gfc_get_dtype
|
||||||
|
use gfc_get_dtype_rank_type.
|
||||||
|
|
||||||
2018-02-01 Janne Blomqvist <jb@gcc.gnu.org>
|
2018-02-01 Janne Blomqvist <jb@gcc.gnu.org>
|
||||||
|
|
||||||
PR 83975
|
PR 83975
|
||||||
|
|
|
@ -5354,8 +5354,8 @@ gfc_array_init_size (tree descriptor, int rank, int corank, tree * poffset,
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
tmp = gfc_conv_descriptor_dtype (descriptor);
|
tmp = gfc_get_dtype_rank_type (rank, gfc_get_element_type (type));
|
||||||
gfc_add_modify (pblock, tmp, gfc_get_dtype (type));
|
gfc_add_modify (pblock, gfc_conv_descriptor_dtype (descriptor), tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
or_expr = logical_false_node;
|
or_expr = logical_false_node;
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-02-03 Paul Thomas <pault@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/84141
|
||||||
|
PR fortran/84155
|
||||||
|
* gfortran.dg/pr84155.f90 : New test.
|
||||||
|
|
||||||
2017-02-02 Uros Bizjak <ubizjak@gmail.com>
|
2017-02-02 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* gfortran.dg/dec_parameter_1.f (sub1): Remove statement with no effect.
|
* gfortran.dg/dec_parameter_1.f (sub1): Remove statement with no effect.
|
||||||
|
|
56
gcc/testsuite/gfortran.dg/pr84155.f90
Normal file
56
gcc/testsuite/gfortran.dg/pr84155.f90
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
! { dg-do run }
|
||||||
|
!
|
||||||
|
! Test the fix for PR84155 and PR84141.
|
||||||
|
!
|
||||||
|
! Contributed by Juergen Reuter <juergen.reuter@desy.de>
|
||||||
|
!
|
||||||
|
module test_case
|
||||||
|
|
||||||
|
implicit none
|
||||||
|
|
||||||
|
type :: array_t
|
||||||
|
integer, dimension(:), allocatable :: child
|
||||||
|
contains
|
||||||
|
procedure :: write_raw => particle_write_raw
|
||||||
|
end type array_t
|
||||||
|
|
||||||
|
type :: container_t
|
||||||
|
type(array_t), dimension(:), allocatable :: array
|
||||||
|
end type container_t
|
||||||
|
|
||||||
|
contains
|
||||||
|
|
||||||
|
subroutine proc ()
|
||||||
|
type(container_t) :: container
|
||||||
|
integer :: unit, check
|
||||||
|
integer, parameter :: ival = 42
|
||||||
|
|
||||||
|
allocate (container%array(1))
|
||||||
|
allocate (container%array(1)%child (1), source = [ival])
|
||||||
|
|
||||||
|
unit = 33
|
||||||
|
open (unit, action="readwrite", form="unformatted", status="scratch")
|
||||||
|
call container%array(1)%write_raw (unit)
|
||||||
|
rewind (unit)
|
||||||
|
read (unit) check
|
||||||
|
close (unit)
|
||||||
|
if (ival .ne. check) call abort
|
||||||
|
end subroutine proc
|
||||||
|
|
||||||
|
subroutine particle_write_raw (array, u)
|
||||||
|
class(array_t), intent(in) :: array
|
||||||
|
integer, intent(in) :: u
|
||||||
|
write (u) array%child
|
||||||
|
end subroutine particle_write_raw
|
||||||
|
|
||||||
|
subroutine particle_read_raw (array)
|
||||||
|
class(array_t), intent(out) :: array
|
||||||
|
allocate (array%child (1)) ! comment this out
|
||||||
|
end subroutine particle_read_raw
|
||||||
|
|
||||||
|
end module test_case
|
||||||
|
|
||||||
|
program main
|
||||||
|
use test_case
|
||||||
|
call proc ()
|
||||||
|
end program main
|
Loading…
Add table
Reference in a new issue