[multiple changes]
authorFeng Wang <fengwang@gcc.gnu.org>
Sun, 15 May 2005 02:45:29 +0000 (02:45 +0000)
committerFeng Wang <fengwang@gcc.gnu.org>
Sun, 15 May 2005 02:45:29 +0000 (02:45 +0000)
2005-05-15  Feng Wang <fengwang@nudt.edu.cn>
        Jerry DeLisle <jvdelisle@verizon.net>

        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 <jvdelisle@verizon.net>

        PR fortran/17432
        * gfortran.dg/assign_4.f: New test.

From-SVN: r99711

gcc/fortran/ChangeLog
gcc/fortran/trans-io.c
gcc/fortran/trans-stmt.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/assign_4.f [new file with mode: 0644]

index 76cd9f9fd008c06790691e2757265872d24dbfd5..5cfe135fda58eb75e2ab5a47df8357217c32f682 100644 (file)
@@ -1,3 +1,12 @@
+2005-05-15  Feng Wang <fengwang@nudt.edu.cn>
+       Jerry DeLisle <jvdelisle@verizon.net>
+
+       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  <paul@codesourcery.com>
 
        * trans-stmt.c (gfc_trans_forall_1): Fix comment typo.
index 8701d5ebee1581856323e6c109c8051a1cbc0ac4..a8f8ce8d4611c1fb570a479e6664ccd316a82806 100644 (file)
@@ -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
index 60a786c6ac1d345aa348f60d10131d9ec617e101..b8959968a69bff688a423a0f2cb6c97d5c277f87 100644 (file)
@@ -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);
index 09b2cb73e0a14260d2ef533073201fcd62290045..9e239380bfbf2f6a8b61d6a6b871bdba08d47c4c 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-15  Jerry DeLisle <jvdelisle@verizon.net>
+
+       PR fortran/17432
+       * gfortran.dg/assign_4.f: New test.
+
 2005-05-14  Kazu Hirata  <kazu@cs.umass.edu>
 
        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 (file)
index 0000000..3277f7c
--- /dev/null
@@ -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
+