diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2018-02-28 17:36:20 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2018-02-28 17:36:20 +0000 |
commit | b14a13facf3903b7f7d67b2501dd1a3c2f200823 (patch) | |
tree | dcd09ad336ba1d82feadc364daa2642e3d5bf37c /gcc/fortran/trans-stmt.c | |
parent | ba64c7b8934fbd59a1d5bd370a4aaab4bf2d0ed2 (diff) | |
download | gcc-b14a13facf3903b7f7d67b2501dd1a3c2f200823.zip gcc-b14a13facf3903b7f7d67b2501dd1a3c2f200823.tar.gz gcc-b14a13facf3903b7f7d67b2501dd1a3c2f200823.tar.bz2 |
re PR fortran/83901 (ICE in fold_convert_loc, at fold-const.c:2402)
2018-02-28 Paul Thomas <pault@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-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/83901
* gfortran.dg/associate_37.f90: New test.
PR fortran/83344
* gfortran.dg/associate_36.f90: Add Steve Kargl as contributer.
From-SVN: r258076
Diffstat (limited to 'gcc/fortran/trans-stmt.c')
-rw-r--r-- | gcc/fortran/trans-stmt.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index cf76fd0..25d5d3c 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -1907,7 +1907,8 @@ trans_associate_var (gfc_symbol *sym, gfc_wrapped_block *block) attr = gfc_expr_attr (e); if (sym->ts.type == BT_CHARACTER && e->ts.type == BT_CHARACTER - && (attr.allocatable || attr.pointer || attr.dummy)) + && (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); |