Commit 71a93e81 by Paul Thomas

re PR fortran/84219 (Failure to generate error for IO of transfer intrinsic,…

re PR fortran/84219 (Failure to generate error for IO of transfer intrinsic, when MOLD has derived type components.)

2018-03-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84219
	* target-memory.c (gfc_interpret_derived): Assert that BT_VOID
	components are caf tokens.
	(gfc_target_interpret_expr): Treat BT_VOID expressions as
	integers.

2018-03-01  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/84219
	* gfortran.dg/coarray_47.f90: New test.

From-SVN: r258098
parent b120c8b2
2018-03-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84219
* target-memory.c (gfc_interpret_derived): Assert that BT_VOID
components are caf tokens.
(gfc_target_interpret_expr): Treat BT_VOID expressions as
integers.
2018-03-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84538
* class.c (class_array_ref_detected): Remove the condition that
there be no reference after the array reference.
......
......@@ -547,6 +547,7 @@ gfc_interpret_derived (unsigned char *buffer, size_t buffer_size, gfc_expr *resu
gcc_assert (ptr % 8 == 0);
ptr = ptr/8 + TREE_INT_CST_LOW (DECL_FIELD_OFFSET (cmp->backend_decl));
gcc_assert (e->ts.type != BT_VOID || cmp->attr.caf_token);
gfc_target_interpret_expr (&buffer[ptr], buffer_size - ptr, e, true);
}
......@@ -602,6 +603,13 @@ gfc_target_interpret_expr (unsigned char *buffer, size_t buffer_size,
gcc_assert (result->representation.length >= 0);
break;
case BT_VOID:
/* This deals with caf_tokens. */
result->representation.length =
gfc_interpret_integer (result->ts.kind, buffer, buffer_size,
result->value.integer);
break;
default:
gfc_internal_error ("Invalid expression in gfc_target_interpret_expr.");
break;
......
2018-03-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84219
* gfortran.dg/coarray_47.f90: New test.
2018-03-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/84538
* gfortran.dg/class_array_23.f03: New test.
......
! { dg-do compile }
! { dg-options "-fcoarray=single" }
!
! Contributed by G Steinmetz <gscfq@t-online.de>
!
program p
type t
integer, allocatable :: t
end type
type(t) :: x
integer :: i = -1
print *, transfer(i, x) ! { dg-error "cannot have ALLOCATABLE components" }
end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment