re PR fortran/88611 (ICE in eliminate_stmt, at tree-ssa-sccvn.c:5011)
2019-01-08 Richard Biener <rguenther@suse.de> PR fortran/88611 * trans-expr.c (gfc_conv_initializer): For ISOCBINDING_NULL_* directly build the expected GENERIC tree. * gfortran.dg/pr88611.f90: New testcase. From-SVN: r267721
This commit is contained in:
parent
efac62a3d1
commit
eb4a91451a
4 changed files with 32 additions and 13 deletions
|
@ -1,3 +1,9 @@
|
|||
2019-01-08 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR fortran/88611
|
||||
* trans-expr.c (gfc_conv_initializer): For ISOCBINDING_NULL_*
|
||||
directly build the expected GENERIC tree.
|
||||
|
||||
2019-01-07 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
Harald Anlauf <anlauf@gmx.de>
|
||||
Tobias Burnus <burnus@gcc.gnu.org>
|
||||
|
|
|
@ -7086,19 +7086,12 @@ gfc_conv_initializer (gfc_expr * expr, gfc_typespec * ts, tree type,
|
|||
if (expr != NULL && expr->ts.type == BT_DERIVED
|
||||
&& expr->ts.is_iso_c && expr->ts.u.derived)
|
||||
{
|
||||
gfc_symbol *derived = expr->ts.u.derived;
|
||||
|
||||
/* The derived symbol has already been converted to a (void *). Use
|
||||
its kind. */
|
||||
if (derived->ts.kind == 0)
|
||||
derived->ts.kind = gfc_default_integer_kind;
|
||||
expr = gfc_get_int_expr (derived->ts.kind, NULL, 0);
|
||||
expr->ts.f90_type = derived->ts.f90_type;
|
||||
|
||||
gfc_init_se (&se, NULL);
|
||||
gfc_conv_constant (&se, expr);
|
||||
gcc_assert (TREE_CODE (se.expr) != CONSTRUCTOR);
|
||||
return se.expr;
|
||||
if (TREE_CODE (type) == ARRAY_TYPE)
|
||||
return build_constructor (type, NULL);
|
||||
else if (POINTER_TYPE_P (type))
|
||||
return build_int_cst (type, 0);
|
||||
else
|
||||
gcc_unreachable ();
|
||||
}
|
||||
|
||||
if (array && !procptr)
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
2019-01-08 Richard Biener <rguenther@suse.de>
|
||||
|
||||
PR fortran/88611
|
||||
* trans-expr.c (gfc_conv_initializer): For ISOCBINDING_NULL_*
|
||||
directly build the expected GENERIC tree.
|
||||
|
||||
2019-01-08 Sam Tebbs <sam.tebbs@arm.com>
|
||||
|
||||
* gcc.target/aarch64/(return_address_sign_1.c,
|
||||
|
|
14
gcc/testsuite/gfortran.dg/pr88611.f90
Normal file
14
gcc/testsuite/gfortran.dg/pr88611.f90
Normal file
|
@ -0,0 +1,14 @@
|
|||
! { dg-do run }
|
||||
! { dg-options "-fdefault-integer-8 -fno-tree-forwprop -O3 -fno-tree-ccp" }
|
||||
! PR 82869
|
||||
! A temp variable of type logical was incorrectly transferred
|
||||
! to the I/O library as a logical type of a different kind.
|
||||
program pr82869_8
|
||||
use, intrinsic :: iso_c_binding
|
||||
type(c_ptr) :: p = c_null_ptr
|
||||
character(len=4) :: s
|
||||
write (s, *) c_associated(p), c_associated(c_null_ptr)
|
||||
if (s /= ' F F') then
|
||||
STOP 1
|
||||
end if
|
||||
end program pr82869_8
|
Loading…
Add table
Reference in a new issue