Regression tested on x86_64-*-freebsd.  OK to commit?

2018-06-07  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/78571
        * data.c (create_character_initializer): Return early if type is
        incompatible with CHARACTER.

2018-06-07  Steven G. Kargl  <ka...@gcc.gnu.org>

        PR fortran/78571
        * gfortran.dg/pr78571.f90: New test.

-- 
Steve
Index: gcc/fortran/data.c
===================================================================
--- gcc/fortran/data.c	(revision 261285)
+++ gcc/fortran/data.c	(working copy)
@@ -107,7 +107,10 @@ create_character_initializer (gfc_expr *init, gfc_type
   HOST_WIDE_INT len, start, end, tlen;
   gfc_char_t *dest;
   bool alloced_init = false;
-	    
+
+  if (init && init->ts.type != BT_CHARACTER)
+    return NULL;
+
   gfc_extract_hwi (ts->u.cl->length, &len);
 
   if (init == NULL)
Index: gcc/testsuite/gfortran.dg/pr78571.f90
===================================================================
--- gcc/testsuite/gfortran.dg/pr78571.f90	(nonexistent)
+++ gcc/testsuite/gfortran.dg/pr78571.f90	(working copy)
@@ -0,0 +1,9 @@
+! { dg-do compile }
+! PR fortran/78571
+program p
+   type t
+      character :: c
+   end type
+   character :: x = t('a') ! { dg-error "convert TYPE" }
+   data x /'b'/
+end

Reply via email to