From 667787ce6e465c8d52b61e01e0a6398cb48abc51 Mon Sep 17 00:00:00 2001 From: brooks Date: Mon, 28 May 2007 18:20:29 +0000 Subject: * gfortran.h (gfc_expr): Remove from_H, add "representation" struct. * primary.c (match_hollerith_constant): Store the representation of the Hollerith in representation, not in value.character. * arith.c: Add dependency on target-memory.h. (eval_intrinsic): Remove check for from_H. (hollerith2representation): New function. (gfc_hollerith2int): Determine value of the new constant. (gfc_hollerith2real): Likewise. (gfc_hollerith2complex): Likewise. (gfc_hollerith2logical): Likewise. (gfc_hollerith2character): Point both representation.string and value.character.string at the value string. * data.c (create_character_initializer): For BT_HOLLERITH rvalues, get the value from the representation rather than value.character. * expr.c (free_expr0): Update handling of BT_HOLLERITH values and values with representation.string. (gfc_copy_expr): Likewise. * intrinsic.c (do_simplify): Remove special treatement of variables resulting from Hollerith constants. * dump-parse-trees.c (gfc_show_expr): Update handling of Holleriths. * trans-const.c (gfc_conv_constant_to_tree): Replace from_H check with check for representation.string; get Hollerith representation from representation.string, not value.character. * trans-expr.c (is_zero_initializer_p): Replace from_H check with check for representation.string. * trans-stmt.c (gfc_trans_integer_select): Use gfc_conv_mpz_to_tree for case values, so as to avoid picking up the memory representation if the case is given by a transfer expression. * target-memory.c (gfc_target_encode_expr): Use the known memory representation rather than the value, if it exists. (gfc_target_interpret_expr): Store the memory representation of the interpreted expression as well as its value. (interpret_integer): Move to gfc_interpret_integer, make non-static. (interpret_float): Move to gfc_interpret_float, make non-static. (interpret_complex): Move to gfc_interpret_complex, make non-static. (interpret_logical): Move to gfc_interpret_logical, make non-static. (interpret_character): Move to gfc_interpret_character, make non-static. (interpret_derived): Move to gfc_interpret_derived, make non-static. * target-memory.h: Add prototypes for newly-exported gfc_interpret_* functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@125135 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/dump-parse-tree.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) (limited to 'gcc/fortran/dump-parse-tree.c') diff --git a/gcc/fortran/dump-parse-tree.c b/gcc/fortran/dump-parse-tree.c index 6f2a6a74f8f..51af1c401f2 100644 --- a/gcc/fortran/dump-parse-tree.c +++ b/gcc/fortran/dump-parse-tree.c @@ -340,16 +340,6 @@ 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: @@ -405,11 +395,33 @@ gfc_show_expr (gfc_expr *p) gfc_status (")"); break; + case BT_HOLLERITH: + gfc_status ("%dH", p->representation.length); + c = p->representation.string; + for (i = 0; i < p->representation.length; i++, c++) + { + gfc_status_char (*c); + } + break; + default: gfc_status ("???"); break; } + if (p->representation.string) + { + gfc_status (" {"); + c = p->representation.string; + for (i = 0; i < p->representation.length; i++, c++) + { + gfc_status ("%.2x", (unsigned int) *c); + if (i < p->representation.length - 1) + gfc_status_char (','); + } + gfc_status_char ('}'); + } + break; case EXPR_VARIABLE: -- cgit v1.2.3