diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1f30fd46a949..1b62f79d09c6 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2006-05-18 Francois-Xavier Coudert + Feng Wang + + PR fortran/27552 + * dump-parse-tree.c (gfc_show_expr): Deal with Hollerith constants. + * data.c (create_character_intializer): Set from_H flag if character is + initialized by Hollerith constant. + 2006-05-17 Francois-Xavier Coudert PR fortran/26551 diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c index fdb98569c7ae..8fb8b5d08297 100644 --- a/gcc/fortran/data.c +++ b/gcc/fortran/data.c @@ -192,6 +192,9 @@ create_character_intializer (gfc_expr * init, gfc_typespec * ts, if (len < end - start && ref == NULL) memset (&dest[start + len], ' ', end - (start + len)); + if (rvalue->ts.type == BT_HOLLERITH) + init->from_H = 1; + return init; } diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index adec12f4c36c..cd909800d4f2 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -348,6 +348,16 @@ gfc_show_expr (gfc_expr * p) break; case EXPR_CONSTANT: + if (p->from_H || p->ts.type == BT_HOLLERITH) + { + gfc_status ("%dH", p->value.character.length); + c = p->value.character.string; + for (i = 0; i < p->value.character.length; i++, c++) + { + gfc_status_char (*c); + } + break; + } switch (p->ts.type) { case BT_INTEGER: