diff options
author | Harald Anlauf <anlauf@gmx.de> | 2024-01-05 23:38:56 +0100 |
---|---|---|
committer | Harald Anlauf <anlauf@gmx.de> | 2024-01-06 13:14:48 +0100 |
commit | 723bd722d616bbb427264930986f080d89207caa (patch) | |
tree | 3e979d8689fd14ca17cf724e6541099761771f46 /gcc/fortran | |
parent | fefbd85b72729cec99a6e71e5c8b637948c8ed79 (diff) | |
download | gcc-723bd722d616bbb427264930986f080d89207caa.zip gcc-723bd722d616bbb427264930986f080d89207caa.tar.gz gcc-723bd722d616bbb427264930986f080d89207caa.tar.bz2 |
Fortran: bogus warnings with REPEAT intrinsic and -Wconversion-extra [PR96724]
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 <jrfsousa@gmail.com>
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/iresolve.cc | 10 |
1 files changed, 9 insertions, 1 deletions
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); + } } |