aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2018-10-05 07:01:57 +0000
committerPaul Thomas <pault@gcc.gnu.org>2018-10-05 07:01:57 +0000
commit3665f77c7f63737252fea0e153a6426aa1241a7a (patch)
treed961d5ff3ae1cf63c8a0d6aa6e0551c7eb592cc4
parent1afa270f17b04c6eca9deb44d374c28164e34ba1 (diff)
downloadgcc-3665f77c7f63737252fea0e153a6426aa1241a7a.zip
gcc-3665f77c7f63737252fea0e153a6426aa1241a7a.tar.gz
gcc-3665f77c7f63737252fea0e153a6426aa1241a7a.tar.bz2
re PR testsuite/87487 (New test case gfortran.dg/deferred_character_24.f90 in r264721 fails on big endian)
2018-10-05 Paul Thomas <pault@gcc.gnu.org> PR fortran/87487 * trans-decl.c (gfc_get_symbol_decl): Make sure that deferred character length pointer initializer has the right type to fix problem with deferred_character_24.f90 on big endian. From-SVN: r264862
-rw-r--r--gcc/fortran/ChangeLog9
-rw-r--r--gcc/fortran/trans-decl.c3
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 521247c..7eece23 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,6 +1,13 @@
+2018-10-05 Paul Thomas <pault@gcc.gnu.org>
+
+ PR fortran/87487
+ * trans-decl.c (gfc_get_symbol_decl): Make sure that deferred
+ character length pointer initializer has the right type to fix
+ problem with deferred_character_24.f90 on big endian.
+
2018-10-03 Jeff Law <law@redhat.comg>
- * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.
+ * trans-types.c (get_typenode_from_name): Moved into gcc/tree.c.
2018-10-01 Paul Thomas <pault@gcc.gnu.org>
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index f7568d5..b0c12e5 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -1758,6 +1758,7 @@ gfc_get_symbol_decl (gfc_symbol * sym)
&& TREE_CODE (length) != INTEGER_CST
&& TREE_CODE (sym->ts.u.cl->backend_decl) != INDIRECT_REF)
{
+ length = fold_convert (gfc_charlen_type_node, length);
gfc_finish_var_decl (length, sym);
if (!sym->attr.associate_var
&& TREE_CODE (length) == VAR_DECL
@@ -1767,6 +1768,8 @@ gfc_get_symbol_decl (gfc_symbol * sym)
DECL_INITIAL (length) = gfc_conv_initializer (len, &len->ts,
TREE_TYPE (length),
false, false, false);
+ DECL_INITIAL (length) = fold_convert (gfc_charlen_type_node,
+ DECL_INITIAL (length));
}
else
gcc_assert (!sym->value);