re PR fortran/78757 (ICE with function returning a pointer to a character)

PR fortran/78757
	* trans-expr.c (gfc_conv_procedure_call): Emit DECL_EXPR for the
	type pstr var points to.

	* gfortran.dg/char_result_16.f90: New test.

From-SVN: r243761
This commit is contained in:
Jakub Jelinek 2016-12-16 20:41:13 +01:00 committed by Jakub Jelinek
parent d380fed1e0
commit c2d42d1619
4 changed files with 40 additions and 0 deletions

View File

@ -1,3 +1,9 @@
2016-12-16 Jakub Jelinek <jakub@redhat.com>
PR fortran/78757
* trans-expr.c (gfc_conv_procedure_call): Emit DECL_EXPR for the
type pstr var points to.
2016-12-15 Janus Weil <janus@gcc.gnu.org>
PR fortran/78798

View File

@ -6009,6 +6009,19 @@ gfc_conv_procedure_call (gfc_se * se, gfc_symbol * sym,
{
var = gfc_create_var (type, "pstr");
/* Emit a DECL_EXPR for the VLA type. */
tmp = TREE_TYPE (type);
if (TYPE_SIZE (tmp)
&& TREE_CODE (TYPE_SIZE (tmp)) != INTEGER_CST)
{
tmp = build_decl (input_location, TYPE_DECL, NULL_TREE, tmp);
DECL_ARTIFICIAL (tmp) = 1;
DECL_IGNORED_P (tmp) = 1;
tmp = fold_build1_loc (input_location, DECL_EXPR,
TREE_TYPE (tmp), tmp);
gfc_add_expr_to_block (&se->pre, tmp);
}
if ((!comp && sym->attr.allocatable)
|| (comp && comp->attr.allocatable))
{

View File

@ -1,3 +1,8 @@
2016-12-16 Jakub Jelinek <jakub@redhat.com>
PR fortran/78757
* gfortran.dg/char_result_16.f90: New test.
2016-12-16 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* gcc.target/aarch64/ubfiz_lsl_1.c: New test.

View File

@ -0,0 +1,16 @@
! PR fortran/78757
! { dg-do compile }
! { dg-options "-O1" }
program pr78757
implicit none
character (len = 30), target :: x
character (len = 30), pointer :: s
s => foo (30_8)
contains
function foo (i)
integer (8) :: i
character (len = i), pointer :: foo
foo => x
end function foo
end program pr78757