From b078dfbf39bdea09e613beb800c8261d57ba4c3b Mon Sep 17 00:00:00 2001 From: Feng Wang Date: Sun, 15 May 2005 02:45:29 +0000 Subject: [PATCH] [multiple changes] 2005-05-15 Feng Wang Jerry DeLisle PR fortran/17432 * trans-stmt.c (gfc_trans_label_assign): fix pointer type, to resolve ICE on assign of format label. * trans-io.c (set_string): add fold-convert to properly handle assigned format label in write. 2005-05-15 Jerry DeLisle PR fortran/17432 * gfortran.dg/assign_4.f: New test. From-SVN: r99711 --- gcc/fortran/ChangeLog | 9 +++++++++ gcc/fortran/trans-io.c | 3 ++- gcc/fortran/trans-stmt.c | 2 +- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/assign_4.f | 11 +++++++++++ 5 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/assign_4.f diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 76cd9f9fd00..5cfe135fda5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2005-05-15 Feng Wang + Jerry DeLisle + + PR fortran/17432 + * trans-stmt.c (gfc_trans_label_assign): fix pointer type, to + resolve ICE on assign of format label. + * trans-io.c (set_string): add fold-convert to properly + handle assigned format label in write. + 2005-05-13 Paul Brook * trans-stmt.c (gfc_trans_forall_1): Fix comment typo. diff --git a/gcc/fortran/trans-io.c b/gcc/fortran/trans-io.c index 8701d5ebee1..a8f8ce8d461 100644 --- a/gcc/fortran/trans-io.c +++ b/gcc/fortran/trans-io.c @@ -394,7 +394,8 @@ set_string (stmtblock_t * block, stmtblock_t * postblock, tree var, tmp = build2 (LE_EXPR, boolean_type_node, tmp, convert (TREE_TYPE (tmp), integer_minus_one_node)); gfc_trans_runtime_check (tmp, msg, &se.pre); - gfc_add_modify_expr (&se.pre, io, GFC_DECL_ASSIGN_ADDR (se.expr)); + gfc_add_modify_expr (&se.pre, io, + fold_convert (TREE_TYPE (io), GFC_DECL_ASSIGN_ADDR (se.expr))); gfc_add_modify_expr (&se.pre, len, GFC_DECL_STRING_LEN (se.expr)); } else diff --git a/gcc/fortran/trans-stmt.c b/gcc/fortran/trans-stmt.c index 60a786c6ac1..b8959968a69 100644 --- a/gcc/fortran/trans-stmt.c +++ b/gcc/fortran/trans-stmt.c @@ -129,7 +129,7 @@ gfc_trans_label_assign (gfc_code * code) label_len = code->label->format->value.character.length; len_tree = build_int_cst (NULL_TREE, label_len); label_tree = gfc_build_string_const (label_len + 1, label_str); - label_tree = gfc_build_addr_expr (pchar_type_node, label_tree); + label_tree = gfc_build_addr_expr (pvoid_type_node, label_tree); } gfc_add_modify_expr (&se.pre, len, len_tree); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 09b2cb73e0a..9e239380bfb 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-05-15 Jerry DeLisle + + PR fortran/17432 + * gfortran.dg/assign_4.f: New test. + 2005-05-14 Kazu Hirata PR tree-optimization/21563 diff --git a/gcc/testsuite/gfortran.dg/assign_4.f b/gcc/testsuite/gfortran.dg/assign_4.f new file mode 100644 index 00000000000..3277f7c74a2 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/assign_4.f @@ -0,0 +1,11 @@ +! { dg-do compile } +! Option passed to avoid excess errors from obsolete warning +! { dg-options "-w" } +! PR17423 + program testit +c + assign 12 to i + write(*, i) + 0012 format (" **** ASSIGN FORMAT NUMBER TO INTEGER VARIABLE ****" ) + end +