[Committed] PR fortran/44491 -- Select non-NULL locus

Steve Kargl sgk@troutmask.apl.washington.edu
Wed Jun 13 12:20:00 GMT 2018


The attached patch has been committed to trunk after
regression testing.  Two loci are available for the
error messages.  If the first locus is NULL, then it
uses the second one to report the error.

In the audit trail of the PR manu@ suggested removing
the assert() that caused the ICE.  His patch tested
for a NULL locus, and simply reported UNKNOWN LOCATION
in the error message.  I find the ICE to be an aid
in locating where gfortran goes sideways, so I've left
the assert() in place.

Index: gcc/fortran/expr.c
===================================================================
--- gcc/fortran/expr.c	(revision 261376)
+++ gcc/fortran/expr.c	(working copy)
@@ -3414,6 +3414,8 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, 
   /* Only DATA Statements come here.  */
   if (!conform)
     {
+      locus *where;
+
       /* Numeric can be converted to any other numeric. And Hollerith can be
 	 converted to any other type.  */
       if ((gfc_numeric_ts (&lvalue->ts) && gfc_numeric_ts (&rvalue->ts))
@@ -3423,8 +3425,9 @@ gfc_check_assign (gfc_expr *lvalue, gfc_expr *rvalue, 
       if (lvalue->ts.type == BT_LOGICAL && rvalue->ts.type == BT_LOGICAL)
 	return true;
 
+      where = lvalue->where.lb ? &lvalue->where : &rvalue->where;
       gfc_error ("Incompatible types in DATA statement at %L; attempted "
-		 "conversion of %s to %s", &lvalue->where,
+		 "conversion of %s to %s", where,
 		 gfc_typename (&rvalue->ts), gfc_typename (&lvalue->ts));
 
       return false;
Index: gcc/testsuite/gfortran.dg/pr44491.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr44491.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr44491.f90	(working copy)
@@ -0,0 +1,4 @@
+! { dg-do compile }
+! PR fortran/44491
+      character*2 escape /z'1B'/  { dg-error "Incompatible types in DATA" }
+      end
-- 
Steve
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pr44491.diff
Type: text/x-diff
Size: 1378 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20180613/0d503ce6/attachment.bin>


More information about the Fortran mailing list