re PR fortran/19589 (Regression: Error on Data assignment with LOGICAL*1)
authorSteven G. Kargl <kargls@comcast.net>
Sat, 29 Jan 2005 15:35:50 +0000 (15:35 +0000)
committerPaul Brook <pbrook@gcc.gnu.org>
Sat, 29 Jan 2005 15:35:50 +0000 (15:35 +0000)
2005-01-29  Steven G. Kargl  <kargls@comcast.net>

PR fortran/19589
* expr.c (gfc_check_assign):  Check for conformance of logical operands
testsuite/
* gfortran.dg/logical_data_1.f90: New test.

From-SVN: r94409

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

index 18b7753f4bb06f4109c9783531b66bcacb0b2acc..dc5f01e3264a7ba1e9b2fbbb43d2e4d647cd12a6 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-29  Steven G. Kargl  <kargls@comcast.net>
+
+       PR fortran/19589
+       * expr.c (gfc_check_assign):  Check for conformance of logical operands
+
 2004-01-27  Steven Bosscher  <stevenb@suse.de>
 
        * trans-decl.c (gfc_build_label_decl): Set DECL_ARTIFICAL and
index c71c4a1f558408f0638816e8fe2625241a54dc5f..87ce3e5fcbcb85b10e4de9aaaa866220aa39903b 100644 (file)
@@ -1820,6 +1820,9 @@ gfc_check_assign (gfc_expr * lvalue, gfc_expr * rvalue, int conform)
       if (gfc_numeric_ts (&lvalue->ts) && gfc_numeric_ts (&rvalue->ts))
        return SUCCESS;
 
+      if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
+       return SUCCESS;
+
       gfc_error ("Incompatible types in assignment at %L, %s to %s",
                 &rvalue->where, gfc_typename (&rvalue->ts),
                 gfc_typename (&lvalue->ts));
index dd24748487c7142d4f9386f027c23881974479cf..edd525ac2b6284281e2699d4964699e2e7c9d2f7 100644 (file)
@@ -1,3 +1,8 @@
+2005-01-29  Steven G. Kargl  <kargls@comcast.net>
+
+       PR fortran/19589
+       * gfortran.dg/logical_data_1.f90: New test.
+
 2005-01-28  Mark Mitchell  <mark@codesourcery.com>
 
        PR c++/19253
diff --git a/gcc/testsuite/gfortran.dg/logical_data_1.f90 b/gcc/testsuite/gfortran.dg/logical_data_1.f90
new file mode 100644 (file)
index 0000000..b9190d2
--- /dev/null
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! PR19589
+! Logical objects/values with differing type kinds were being rejected in
+! data statements.
+program logical_data_1
+  logical(kind=4) :: a
+  logical(kind=8) :: b
+  data a, b /.true., .false./
+end program