trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert to avoid type mismatch.
2006-01-09 Andrew Pinski <pinskia@physics.uc.edu> fortran/24936 * trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert to avoid type mismatch. 2006-01-09 Andrew Pinski <pinskia@physics.uc.edu> fortran/24936 * gfortran.dg/forall_3.f90: New test. From-SVN: r109508
This commit is contained in:
parent
76150104aa
commit
cc2804f14f
4 changed files with 31 additions and 1 deletions
|
@ -1,3 +1,9 @@
|
|||
2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
fortran/24936
|
||||
* trans-stmt.c (gfc_trans_pointer_assign_need_temp): Use fold_convert
|
||||
to avoid type mismatch.
|
||||
|
||||
2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR fortran/21977
|
||||
|
|
|
@ -2122,7 +2122,8 @@ gfc_trans_pointer_assign_need_temp (gfc_expr * expr1, gfc_expr * expr2,
|
|||
rse.want_pointer = 1;
|
||||
gfc_conv_expr (&rse, expr2);
|
||||
gfc_add_block_to_block (&body, &rse.pre);
|
||||
gfc_add_modify_expr (&body, lse.expr, rse.expr);
|
||||
gfc_add_modify_expr (&body, lse.expr,
|
||||
fold_convert (TREE_TYPE (lse.expr), rse.expr));
|
||||
gfc_add_block_to_block (&body, &rse.post);
|
||||
|
||||
/* Increment count. */
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
fortran/24936
|
||||
* gfortran.dg/forall_3.f90: New test.
|
||||
|
||||
2006-01-09 Andrew Pinski <pinskia@physics.uc.edu>
|
||||
|
||||
PR fortran/21977
|
||||
|
|
18
gcc/testsuite/gfortran.dg/forall_3.f90
Normal file
18
gcc/testsuite/gfortran.dg/forall_3.f90
Normal file
|
@ -0,0 +1,18 @@
|
|||
! the problem here was that we had forgot to call
|
||||
! fold_convert in gfc_trans_pointer_assign_need_temp
|
||||
! so that we got a pointer to char instead of a
|
||||
! pointer to an array
|
||||
! we really don't need a temp here.
|
||||
! { dg-do compile }
|
||||
|
||||
program test_forall
|
||||
type element
|
||||
character(32), pointer :: name
|
||||
end type element
|
||||
type(element) :: charts(50)
|
||||
character(32), target :: names(50)
|
||||
forall(i=1:50)
|
||||
charts(i)%name => names(i)
|
||||
end forall
|
||||
end
|
||||
|
Loading…
Add table
Reference in a new issue