From 723bd722d616bbb427264930986f080d89207caa Mon Sep 17 00:00:00 2001 From: Harald Anlauf Date: Fri, 5 Jan 2024 23:38:56 +0100 Subject: Fortran: bogus warnings with REPEAT intrinsic and -Wconversion-extra [PR96724] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gcc/fortran/ChangeLog: PR fortran/96724 * iresolve.cc (gfc_resolve_repeat): Force conversion to gfc_charlen_int_kind before call to gfc_multiply. gcc/testsuite/ChangeLog: PR fortran/96724 * gfortran.dg/repeat_8.f90: New test. Co-authored-by: José Rui Faustino de Sousa --- gcc/fortran/iresolve.cc | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'gcc/fortran/iresolve.cc') diff --git a/gcc/fortran/iresolve.cc b/gcc/fortran/iresolve.cc index 5bb0bbc..c961cdb 100644 --- a/gcc/fortran/iresolve.cc +++ b/gcc/fortran/iresolve.cc @@ -2363,7 +2363,15 @@ gfc_resolve_repeat (gfc_expr *f, gfc_expr *string, } if (tmp) - f->ts.u.cl->length = gfc_multiply (tmp, gfc_copy_expr (ncopies)); + { + /* Force-convert to gfc_charlen_int_kind before gfc_multiply. */ + gfc_expr *e = gfc_copy_expr (ncopies); + gfc_typespec ts = tmp->ts; + ts.kind = gfc_charlen_int_kind; + gfc_convert_type_warn (e, &ts, 2, 0); + gfc_convert_type_warn (tmp, &ts, 2, 0); + f->ts.u.cl->length = gfc_multiply (tmp, e); + } } -- cgit v1.1