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