re PR fortran/51434 (ICE with scalar init of an array parameter, used in DT default init with transfer)
2018-03-03 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/51434 * simplify.c (gfc_simplify_transfer): Resolve mold. 2018-03-03 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/51434 * gfortran.dg/pr51434.f90: New test. From-SVN: r258220
This commit is contained in:
parent
88aa59ff7e
commit
a900a06092
4 changed files with 35 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
|||
2018-03-03 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/51434
|
||||
* simplify.c (gfc_simplify_transfer): Resolve mold.
|
||||
|
||||
2018-03-03 Paul Thomas <pault@gcc.gnu.org>
|
||||
|
||||
PR fortran/80965
|
||||
|
|
|
@ -25,6 +25,7 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "gfortran.h"
|
||||
#include "arith.h"
|
||||
#include "intrinsic.h"
|
||||
#include "match.h"
|
||||
#include "target-memory.h"
|
||||
#include "constructor.h"
|
||||
#include "version.h" /* For version_string. */
|
||||
|
@ -7370,10 +7371,12 @@ gfc_simplify_transfer (gfc_expr *source, gfc_expr *mold, gfc_expr *size)
|
|||
unsigned char *buffer;
|
||||
size_t result_length;
|
||||
|
||||
if (!gfc_is_constant_expr (source) || !gfc_is_constant_expr (size))
|
||||
return NULL;
|
||||
|
||||
if (!gfc_is_constant_expr (source)
|
||||
|| (gfc_init_expr_flag && !gfc_is_constant_expr (mold))
|
||||
|| !gfc_is_constant_expr (size))
|
||||
if (!gfc_resolve_expr (mold))
|
||||
return NULL;
|
||||
if (gfc_init_expr_flag && !gfc_is_constant_expr (mold))
|
||||
return NULL;
|
||||
|
||||
if (!gfc_calculate_transfer_sizes (source, mold, size, &source_size,
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2018-03-03 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
PR fortran/51434
|
||||
* gfortran.dg/pr51434.f90: New test.
|
||||
|
||||
2018-03-03 Paolo Carlini <paolo.carlini@oracle.com>
|
||||
|
||||
PR c++/61358
|
||||
|
|
19
gcc/testsuite/gfortran.dg/pr51434.f90
Normal file
19
gcc/testsuite/gfortran.dg/pr51434.f90
Normal file
|
@ -0,0 +1,19 @@
|
|||
! { dg-do run }
|
||||
! PR fortran/51434
|
||||
module foo
|
||||
implicit none
|
||||
integer, parameter :: n = 5
|
||||
character(len=1), parameter :: s(n) = 'a'
|
||||
type :: a
|
||||
integer :: m = n
|
||||
character(len=1):: t(n) = transfer('abcde ', s)
|
||||
end type a
|
||||
end module foo
|
||||
|
||||
program bar
|
||||
use foo
|
||||
implicit none
|
||||
type(a) c
|
||||
if (c%m /= n) stop 1
|
||||
if (any(c%t /= ['a', 'b', 'c', 'd', 'e'])) stop 2
|
||||
end program bar
|
Loading…
Add table
Reference in a new issue