Hi All, I will commit this patch as obvious tomorrow night unless there are objections in the meantime.
Bootstraps and regtests on FC27/x86_64 - OK? Paul 2018-02-27 Paul Thomas <pa...@gcc.gnu.org> PR fortran/83901 * trans-stmt.c (trans_associate_var): Make sure that the se expression is a pointer type before converting it to the symbol backend_decl type. 2018-02-27 Paul Thomas <pa...@gcc.gnu.org> PR fortran/83901 * gfortran.dg/associate_37.f90: New test.
Index: gcc/fortran/trans-stmt.c =================================================================== *** gcc/fortran/trans-stmt.c (revision 257969) --- gcc/fortran/trans-stmt.c (working copy) *************** trans_associate_var (gfc_symbol *sym, gf *** 1907,1913 **** attr = gfc_expr_attr (e); if (sym->ts.type == BT_CHARACTER && e->ts.type == BT_CHARACTER ! && (attr.allocatable || attr.pointer || attr.dummy)) { /* These are pointer types already. */ tmp = fold_convert (TREE_TYPE (sym->backend_decl), se.expr); --- 1907,1914 ---- attr = gfc_expr_attr (e); if (sym->ts.type == BT_CHARACTER && e->ts.type == BT_CHARACTER ! && (attr.allocatable || attr.pointer || attr.dummy) ! && POINTER_TYPE_P (TREE_TYPE (se.expr))) { /* These are pointer types already. */ tmp = fold_convert (TREE_TYPE (sym->backend_decl), se.expr); Index: gcc/testsuite/gfortran.dg/associate_36.f90 =================================================================== *** gcc/testsuite/gfortran.dg/associate_36.f90 (revision 257969) --- gcc/testsuite/gfortran.dg/associate_36.f90 (working copy) *************** *** 2,8 **** ! ! Test the fix for PR83344. ! ! ! Contributed by <Janne Blomqvist <j...@gcc.gnu.org> ! program foo implicit none --- 2,9 ---- ! ! Test the fix for PR83344. ! ! ! Contributed by Janne Blomqvist <j...@gcc.gnu.org> ! ! and Steve Kargl <ka...@gcc.gnu.org> ! program foo implicit none Index: gcc/testsuite/gfortran.dg/associate_37.f90 =================================================================== *** gcc/testsuite/gfortran.dg/associate_37.f90 (nonexistent) --- gcc/testsuite/gfortran.dg/associate_37.f90 (working copy) *************** *** 0 **** --- 1,15 ---- + ! { dg-do run } + ! { dg-options "-fcoarray=single" } + ! + ! Tests the fix for the regression PR83901. + ! + ! Contributed by G Steinmetz <gs...@t-online.de> + ! + program p + character(8), allocatable :: x[:] + allocate (x[*]) + x = 'abc' + associate (y => x) + if (y .ne. 'abc') stop 1 + end associate + end