From: fxcoudert Date: Sun, 18 Jun 2006 17:36:47 +0000 (+0000) Subject: PR fortran/26801 X-Git-Tag: upstream/4.9.2~54051 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=98ac66519c2a7018925df2a08017034c5cfbd487;p=platform%2Fupstream%2Flinaro-gcc.git PR fortran/26801 * trans-intrinsic.c (gfc_conv_associated): Use pre and post blocks of the scalarization expression. * gfortran.dg/associated_4.f90: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@114757 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index b2b9354..935adf5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2006-06-18 Francois-Xavier Coudert + + PR fortran/26801 + * trans-intrinsic.c (gfc_conv_associated): Use pre and post blocks + of the scalarization expression. + 2006-06-18 Jerry DeLisle PR fortran/19310 diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index 9d6a0b7..b4863a0 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -2840,6 +2840,8 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr) gfc_conv_expr_lhs (&arg1se, arg1->expr); tmp2 = gfc_conv_descriptor_data_get (arg1se.expr); } + gfc_add_block_to_block (&se->pre, &arg1se.pre); + gfc_add_block_to_block (&se->post, &arg1se.post); tmp = build2 (NE_EXPR, boolean_type_node, tmp2, fold_convert (TREE_TYPE (tmp2), null_pointer_node)); se->expr = tmp; @@ -2863,6 +2865,8 @@ gfc_conv_associated (gfc_se *se, gfc_expr *expr) gfc_conv_expr (&arg1se, arg1->expr); arg2se.want_pointer = 1; gfc_conv_expr (&arg2se, arg2->expr); + gfc_add_block_to_block (&se->pre, &arg1se.pre); + gfc_add_block_to_block (&se->post, &arg1se.post); tmp = build2 (EQ_EXPR, boolean_type_node, arg1se.expr, arg2se.expr); se->expr = tmp; } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index c0e3fa2..985d645 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-06-18 Francois-Xavier Coudert + + PR fortran/26801 + * gfortran.dg/associated_4.f90: New test. + 2006-06-18 Jerry DeLisle PR fortran/19310 diff --git a/gcc/testsuite/gfortran.dg/associated_4.f90 b/gcc/testsuite/gfortran.dg/associated_4.f90 new file mode 100644 index 0000000..dd4490b --- /dev/null +++ b/gcc/testsuite/gfortran.dg/associated_4.f90 @@ -0,0 +1,20 @@ +! { dg-do run } +! PR fortran/26801 + implicit none + + integer :: i + integer,target :: u + logical :: l + character(len=8) :: A + type dt + integer, pointer :: a => NULL() + end type dt + type(dt) :: obj(2) + + i = 2 + l = associated(obj(i)%a) + write(A,*) l + l = associated(obj(i)%a,u) + print *, l + write(A,*) l +end