gcc/fortran:
authordfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jan 2008 12:19:54 +0000 (12:19 +0000)
committerdfranke <dfranke@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 22 Jan 2008 12:19:54 +0000 (12:19 +0000)
2008-01-22  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/34915
* expr.c (check_elemental): Fix check for valid data types.

gcc/testsuite:
2008-01-22  Daniel Franke  <franke.daniel@gmail.com>

PR fortran/34915
* gfortran.dg/initialization_18.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@131715 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/expr.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/initialization_18.f90 [new file with mode: 0644]

index 57c9142..72af9f0 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-22  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/34915
+       * expr.c (check_elemental): Fix check for valid data types.
+
 2008-01-22  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34899
index e8b6548..fb1886e 100644 (file)
@@ -2109,7 +2109,8 @@ check_elemental (gfc_expr *e)
       || !e->value.function.isym->elemental)
     return MATCH_NO;
 
-  if ((e->ts.type != BT_INTEGER || e->ts.type != BT_CHARACTER)
+  if (e->ts.type != BT_INTEGER
+      && e->ts.type != BT_CHARACTER
       && gfc_notify_std (GFC_STD_F2003, "Extension: Evaluation of "
                        "nonstandard initialization expression at %L",
                        &e->where) == FAILURE)
index 7e4fd05..e8cc0c2 100644 (file)
@@ -1,3 +1,8 @@
+2008-01-22  Daniel Franke  <franke.daniel@gmail.com>
+
+       PR fortran/34915
+       * gfortran.dg/initialization_18.f90: New test.
+
 2008-01-22  Tobias Burnus  <burnus@net-b.de>
 
        PR fortran/34899
diff --git a/gcc/testsuite/gfortran.dg/initialization_18.f90 b/gcc/testsuite/gfortran.dg/initialization_18.f90
new file mode 100644 (file)
index 0000000..4e26e1b
--- /dev/null
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! { dg-options "-std=f95 -Wall" }
+!
+! PR fortran/34915
+! Testcase contributed by Al Greynolds via comp.lang.fortran.
+!
+
+ character(*),dimension(3),parameter :: a=(/'a()  ','b(,) ','c(,,)'/)
+ integer,dimension(3),parameter :: l=len_trim(a)
+end