+2018-03-21 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/84615
+ * trans-expr.c (gfc_conv_procedure_call): Convert charlen to
+ gfc_charlen_type_node when calling procedure.
+
2018-03-20 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/85001
* interface.c (symbol_rank): Remove bogus null pointer check that
- crept in when translating a ternary operator into an if-else
+ crept in when translating a ternary operator into an if-else
constructor.
2018-03-19 Thomas Koenig <tkoenig@gcc.gnu.org>
gfc_add_block_to_block (&se->pre, &parmse.pre);
gfc_add_block_to_block (&se->post, &parmse.post);
tmp = parmse.expr;
+ /* TODO: It would be better to have the charlens as
+ gfc_charlen_type_node already when the interface is
+ created instead of converting it here (see PR 84615). */
tmp = fold_build2_loc (input_location, MAX_EXPR,
- TREE_TYPE (tmp), tmp,
- build_zero_cst (TREE_TYPE (tmp)));
+ gfc_charlen_type_node,
+ fold_convert (gfc_charlen_type_node, tmp),
+ build_zero_cst (gfc_charlen_type_node));
cl.backend_decl = tmp;
}
+2018-03-21 Janne Blomqvist <jb@gcc.gnu.org>
+
+ PR fortran/84615
+ * gfortran.dg/char_result_17.f90: New test.
+
2018-03-21 David Malcolm <dmalcolm@redhat.com>
PR c++/84994
--- /dev/null
+! { dg-do run }
+! PR fortran/84615
+! Charlen should always be the ABI defined character length type
+! regardless of which kind it is declared as in the source.
+program TestStringTools
+ character(len=52) :: txt
+ character(len=1), dimension(52) :: chararr = &
+ (/(char(i+64),char(i+96), i = 1,26)/)
+ txt = chararray2string(chararr)
+ if (txt .ne. "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz") &
+ STOP 1
+contains
+ function chararray2string(chararray) result(text)
+ character(len=1), dimension(:) :: chararray ! input
+ character(len=int(size(chararray, 1), kind=8)) :: text ! output
+ do i = 1,size(chararray,1)
+ text(i:i) = chararray (i)
+ end do
+ end function chararray2string
+end program TestStringTools