]> gcc.gnu.org Git - gcc.git/commitdiff
re PR fortran/20063 (n*'xxxx' disables padding)
authorJakub Jelinek <jakub@redhat.com>
Mon, 25 Jul 2005 07:51:12 +0000 (09:51 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Mon, 25 Jul 2005 07:51:12 +0000 (09:51 +0200)
PR fortran/20063
* data.c (gfc_assign_data_value_range): Call
create_character_initializer if last_ts is a character type.

* gfortran.fortran-torture/execute/data_4.f90: New test.

From-SVN: r102349

gcc/fortran/ChangeLog
gcc/fortran/data.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.fortran-torture/execute/data_4.f90 [new file with mode: 0644]

index c8e31bf91f6c2bf81ae2da83198da7b38ca773b0..205c7177bb00a542b3fb2511a42c9363acda259f 100644 (file)
@@ -1,3 +1,9 @@
+2005-07-25  Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/20063
+       * data.c (gfc_assign_data_value_range): Call
+       create_character_initializer if last_ts is a character type.
+
 2005-07-22  Manfred Hollstein  <mh@suse.com>
 
        * match.c (gfc_match_symbol): Fix uninitialised warnings.
index 5eeee0c6a6efc7d10cb6a0d571e5f825e807ed04..d614db4a0844e011601ce800257bf14ac0671267 100644 (file)
@@ -459,12 +459,17 @@ gfc_assign_data_value_range (gfc_expr * lvalue, gfc_expr * rvalue,
       last_con = con;
     }
 
-  /* We should never be overwriting an existing initializer.  */
-  gcc_assert (!init);
+  if (last_ts->type == BT_CHARACTER)
+    expr = create_character_intializer (init, last_ts, NULL, rvalue);
+  else
+    {
+      /* We should never be overwriting an existing initializer.  */
+      gcc_assert (!init);
 
-  expr = gfc_copy_expr (rvalue);
-  if (!gfc_compare_types (&lvalue->ts, &expr->ts))
-    gfc_convert_type (expr, &lvalue->ts, 0);
+      expr = gfc_copy_expr (rvalue);
+      if (!gfc_compare_types (&lvalue->ts, &expr->ts))
+       gfc_convert_type (expr, &lvalue->ts, 0);
+    }
 
   if (last_con == NULL)
     symbol->value = expr;
index 7de213d183eba0c768fd4bc8cd2258f2ca42562d..11ec1110cf5721bbae7a3b34bc052419ceafdd91 100644 (file)
@@ -1,5 +1,8 @@
 2005-07-25  Jakub Jelinek  <jakub@redhat.com>
 
+       PR fortran/20063
+       * gfortran.fortran-torture/execute/data_4.f90: New test.
+
        PR middle-end/20303
        * gcc.dg/visibility-d.c: New test.
 
diff --git a/gcc/testsuite/gfortran.fortran-torture/execute/data_4.f90 b/gcc/testsuite/gfortran.fortran-torture/execute/data_4.f90
new file mode 100644 (file)
index 0000000..4b5c10e
--- /dev/null
@@ -0,0 +1,6 @@
+       CHARACTER*4 A(3),B(3),C(3)
+       DATA A /'A',"A",'A'/
+       DATA B /3*'A'/
+       DATA C /'A', 2*'A'/
+       IF (ANY(A.NE.B).OR.ANY(A.NE.C)) CALL ABORT
+       END
This page took 0.19478 seconds and 5 git commands to generate.