diff options
author | Brooks Moses <brooks.moses@codesourcery.com> | 2007-05-28 20:53:09 +0000 |
---|---|---|
committer | Brooks Moses <brooks@gcc.gnu.org> | 2007-05-28 13:53:09 -0700 |
commit | 3b45d6c4896ce08bf70adde2a392f1293ee3766b (patch) | |
tree | 363cf8a953f0ea97bb498a2f0ce39e2e5647b378 | |
parent | 3613c7abfa4392fd47d5078eb2261ad763772d2e (diff) | |
download | gcc-3b45d6c4896ce08bf70adde2a392f1293ee3766b.zip gcc-3b45d6c4896ce08bf70adde2a392f1293ee3766b.tar.gz gcc-3b45d6c4896ce08bf70adde2a392f1293ee3766b.tar.bz2 |
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
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/check.c | 7 | ||||
-rw-r--r-- | gcc/fortran/target-memory.c | 2 |
3 files changed, 17 insertions, 0 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 3062509..001e66e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,13 @@ 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" struct. * primary.c (match_hollerith_constant): Store the representation diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 682dc8b..e229002 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -2601,6 +2601,13 @@ try gfc_check_transfer (gfc_expr *source ATTRIBUTE_UNUSED, 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 (type_check (size, 2, BT_INTEGER) == FAILURE) diff --git a/gcc/fortran/target-memory.c b/gcc/fortran/target-memory.c index 194bc0b..e235744 100644 --- a/gcc/fortran/target-memory.c +++ b/gcc/fortran/target-memory.c @@ -102,6 +102,8 @@ gfc_target_expr_size (gfc_expr *e) return size_logical (e->ts.kind); case BT_CHARACTER: return size_character (e->value.character.length); + case BT_HOLLERITH: + return e->representation.length; case BT_DERIVED: type = gfc_typenode_for_spec (&e->ts); return int_size_in_bytes (type); |