backport: re PR fortran/82841 (Segfault in gfc_simplify_transfer)
2018-01-10 Steven G. Kargl <kargl@kgcc.gnu.org> Backport r254555 from trunk PR Fortran/82841 * gfortran.dg/transfer_simplify_11.f90: New test. 2018-01-10 Steven G. Kargl <kargl@kgcc.gnu.org> Backport r254555 from trunk PR Fortran/82841 * simplify.c(gfc_simplify_transfer): Do not dereference a NULL pointer. Unwrap a short line. From-SVN: r256445
This commit is contained in:
parent
df18d5afa6
commit
ee30b822e5
|
@ -1,3 +1,10 @@
|
||||||
|
2018-01-10 Steven G. Kargl <kargl@kgcc.gnu.org>
|
||||||
|
|
||||||
|
Backport r254555 from trunk
|
||||||
|
PR Fortran/82841
|
||||||
|
* simplify.c(gfc_simplify_transfer): Do not dereference a NULL pointer.
|
||||||
|
Unwrap a short line.
|
||||||
|
|
||||||
2018-01-04 Steven G. Kargl <kargl@gcc.gnu.org>
|
2018-01-04 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||||
|
|
||||||
PR Fortran/83679
|
PR Fortran/83679
|
||||||
|
|
|
@ -6577,8 +6577,7 @@ gfc_simplify_transfer (gfc_expr *source, gfc_expr *mold, gfc_expr *size)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Calculate the size of the source. */
|
/* Calculate the size of the source. */
|
||||||
if (source->expr_type == EXPR_ARRAY
|
if (source->expr_type == EXPR_ARRAY && !gfc_array_size (source, &tmp))
|
||||||
&& !gfc_array_size (source, &tmp))
|
|
||||||
gfc_internal_error ("Failure getting length of a constant array.");
|
gfc_internal_error ("Failure getting length of a constant array.");
|
||||||
|
|
||||||
/* Create an empty new expression with the appropriate characteristics. */
|
/* Create an empty new expression with the appropriate characteristics. */
|
||||||
|
@ -6586,7 +6585,7 @@ gfc_simplify_transfer (gfc_expr *source, gfc_expr *mold, gfc_expr *size)
|
||||||
&source->where);
|
&source->where);
|
||||||
result->ts = mold->ts;
|
result->ts = mold->ts;
|
||||||
|
|
||||||
mold_element = mold->expr_type == EXPR_ARRAY
|
mold_element = (mold->expr_type == EXPR_ARRAY && mold->value.constructor)
|
||||||
? gfc_constructor_first (mold->value.constructor)->expr
|
? gfc_constructor_first (mold->value.constructor)->expr
|
||||||
: mold;
|
: mold;
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2018-01-10 Steven G. Kargl <kargl@kgcc.gnu.org>
|
||||||
|
|
||||||
|
Backport r254555 from trunk
|
||||||
|
PR Fortran/82841
|
||||||
|
* gfortran.dg/transfer_simplify_11.f90: New test.
|
||||||
|
|
||||||
2018-01-09 Richard Biener <rguenther@suse.de>
|
2018-01-09 Richard Biener <rguenther@suse.de>
|
||||||
|
|
||||||
Backport from mainline
|
Backport from mainline
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
! { dg-do run }
|
||||||
|
! PR Fortran/82841
|
||||||
|
!
|
||||||
|
integer, parameter :: N = 2
|
||||||
|
character(len=1) :: chr(N)
|
||||||
|
chr = transfer(repeat("x",ncopies=N),[character(len=1) ::], N)
|
||||||
|
if (chr(1) /= 'x' .and. chr(2) /= 'x') call abort
|
||||||
|
end
|
Loading…
Reference in New Issue