Commit 3b45d6c4 by Brooks Moses Committed by Brooks Moses

PR 31972/fortran

PR 31972/fortran
* target-memory.c (gfc_target_expr_size): Add handling
for size of BT_HOLLERITH variables.
* check.c (gfc_check_transfer): Reject BT_HOLLERITH
variables in MOLD argument of TRANSFER.

From-SVN: r125141
parent 3613c7ab
2007-05-28 Brooks Moses <brooks.moses@codesourcery.com> 2007-05-28 Brooks Moses <brooks.moses@codesourcery.com>
PR 31972/fortran
* target-memory.c (gfc_target_expr_size): Add handling
for size of BT_HOLLERITH variables.
* check.c (gfc_check_transfer): Reject BT_HOLLERITH
variables in MOLD argument of TRANSFER.
2007-05-28 Brooks Moses <brooks.moses@codesourcery.com>
* gfortran.h (gfc_expr): Remove from_H, add "representation" * gfortran.h (gfc_expr): Remove from_H, add "representation"
struct. struct.
* primary.c (match_hollerith_constant): Store the representation * primary.c (match_hollerith_constant): Store the representation
......
...@@ -2601,6 +2601,13 @@ try ...@@ -2601,6 +2601,13 @@ try
gfc_check_transfer (gfc_expr *source ATTRIBUTE_UNUSED, gfc_check_transfer (gfc_expr *source ATTRIBUTE_UNUSED,
gfc_expr *mold ATTRIBUTE_UNUSED, gfc_expr *size) gfc_expr *mold ATTRIBUTE_UNUSED, gfc_expr *size)
{ {
if (mold->ts.type == BT_HOLLERITH)
{
gfc_error ("'MOLD' argument of 'TRANSFER' intrinsic at %L must not be %s",
&mold->where, gfc_basic_typename (BT_HOLLERITH));
return FAILURE;
}
if (size != NULL) if (size != NULL)
{ {
if (type_check (size, 2, BT_INTEGER) == FAILURE) if (type_check (size, 2, BT_INTEGER) == FAILURE)
......
...@@ -102,6 +102,8 @@ gfc_target_expr_size (gfc_expr *e) ...@@ -102,6 +102,8 @@ gfc_target_expr_size (gfc_expr *e)
return size_logical (e->ts.kind); return size_logical (e->ts.kind);
case BT_CHARACTER: case BT_CHARACTER:
return size_character (e->value.character.length); return size_character (e->value.character.length);
case BT_HOLLERITH:
return e->representation.length;
case BT_DERIVED: case BT_DERIVED:
type = gfc_typenode_for_spec (&e->ts); type = gfc_typenode_for_spec (&e->ts);
return int_size_in_bytes (type); return int_size_in_bytes (type);
......
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