From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2071) id DAA6A385801B; Tue, 30 Nov 2021 19:39:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org DAA6A385801B MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Harald Anlauf To: gcc-cvs@gcc.gnu.org Subject: [gcc r12-5634] Fortran: check type of SUB argument to IMAGE_INDEX X-Act-Checkin: gcc X-Git-Author: Harald Anlauf X-Git-Refname: refs/heads/master X-Git-Oldrev: e5440bc08e07fd491dcccd47e1b86a5985ee117c X-Git-Newrev: 814f52a8bfc66aff8c453b040f0e730b034b7f52 Message-Id: <20211130193926.DAA6A385801B@sourceware.org> Date: Tue, 30 Nov 2021 19:39:26 +0000 (GMT) X-BeenThere: gcc-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 30 Nov 2021 19:39:27 -0000 https://gcc.gnu.org/g:814f52a8bfc66aff8c453b040f0e730b034b7f52 commit r12-5634-g814f52a8bfc66aff8c453b040f0e730b034b7f52 Author: Harald Anlauf Date: Mon Nov 29 22:23:02 2021 +0100 Fortran: check type of SUB argument to IMAGE_INDEX gcc/fortran/ChangeLog: PR fortran/101565 * check.c (gfc_check_image_index): Verify that SUB argument to IMAGE_INDEX is of type integer. gcc/testsuite/ChangeLog: PR fortran/101565 * gfortran.dg/coarray_49.f90: New test. Co-authored-by: Steven G. Kargl Diff: --- gcc/fortran/check.c | 7 +++++++ gcc/testsuite/gfortran.dg/coarray_49.f90 | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index 3e65f3d8b1f..ee3a51ee253 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -5955,6 +5955,13 @@ gfc_check_image_index (gfc_expr *coarray, gfc_expr *sub) return false; } + if (sub->ts.type != BT_INTEGER) + { + gfc_error ("Type of %s argument of IMAGE_INDEX at %L shall be INTEGER", + gfc_current_intrinsic_arg[1]->name, &sub->where); + return false; + } + if (gfc_array_size (sub, &nelems)) { int corank = gfc_get_corank (coarray); diff --git a/gcc/testsuite/gfortran.dg/coarray_49.f90 b/gcc/testsuite/gfortran.dg/coarray_49.f90 new file mode 100644 index 00000000000..370e3fd5847 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/coarray_49.f90 @@ -0,0 +1,9 @@ +! { dg-do compile } +! { dg-options "-fcoarray=lib" } +! PR fortran/101565 - ICE in gfc_simplify_image_index +! Contributed by G. Steinmetz + +program p + integer :: x[*] + print *, image_index (x, [1.0]) ! { dg-error "shall be INTEGER" } +end