re PR fortran/50004 (ICE in c_ptr_tests_16.f90)
2011-08-06 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/50004 * target-memory.c (gfc_target_expr-size): Don't clobber typespec for derived types. * simplify.c (gfc_simplify_transfer): Don't calculate source_size twice. From-SVN: r177527
This commit is contained in:
parent
cc3801b0e6
commit
48b155b991
3 changed files with 16 additions and 4 deletions
|
@ -1,3 +1,11 @@
|
|||
2011-08-06 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/50004
|
||||
* target-memory.c (gfc_target_expr-size): Don't clobber typespec
|
||||
for derived types.
|
||||
* simplify.c (gfc_simplify_transfer): Don't calculate source_size
|
||||
twice.
|
||||
|
||||
2011-08-05 Thomas Koenig <tkoenig@gcc.gnu.org>
|
||||
|
||||
PR fortran/37211
|
||||
|
|
|
@ -6048,8 +6048,6 @@ gfc_simplify_transfer (gfc_expr *source, gfc_expr *mold, gfc_expr *size)
|
|||
&& gfc_array_size (source, &tmp) == FAILURE)
|
||||
gfc_internal_error ("Failure getting length of a constant array.");
|
||||
|
||||
source_size = gfc_target_expr_size (source);
|
||||
|
||||
/* Create an empty new expression with the appropriate characteristics. */
|
||||
result = gfc_get_constant_expr (mold->ts.type, mold->ts.kind,
|
||||
&source->where);
|
||||
|
|
|
@ -120,8 +120,14 @@ gfc_target_expr_size (gfc_expr *e)
|
|||
case BT_HOLLERITH:
|
||||
return e->representation.length;
|
||||
case BT_DERIVED:
|
||||
type = gfc_typenode_for_spec (&e->ts);
|
||||
return int_size_in_bytes (type);
|
||||
{
|
||||
/* Determine type size without clobbering the typespec for ISO C
|
||||
binding types. */
|
||||
gfc_typespec ts;
|
||||
ts = e->ts;
|
||||
type = gfc_typenode_for_spec (&ts);
|
||||
return int_size_in_bytes (type);
|
||||
}
|
||||
default:
|
||||
gfc_internal_error ("Invalid expression in gfc_target_expr_size.");
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue