re PR fortran/90563 (Out of bounds error when compiling with -Wextra)

2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/90563
	* frontend-passes.c (insert_index): Suppress errors while
	simplifying the resulting expression.

2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/90563
	* gfortran.dg/do_subsript_5.f90: New test.

From-SVN: r274394
This commit is contained in:
Thomas Koenig 2019-08-13 18:43:00 +00:00
parent eabd9d9167
commit 35ca2d4ea7
4 changed files with 35 additions and 2 deletions

View File

@ -1,7 +1,13 @@
2013-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90563
* frontend-passes.c (insert_index): Suppress errors while
simplifying the resulting expression.
2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89647
resolve.c (resolve_typebound_procedure): Allow host associated
resolve.c (resolve_typebound_procedure): Allow host associated
procedure to be a binding target. While here, wrap long line.
2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>

View File

@ -2518,7 +2518,12 @@ insert_index (gfc_expr *e, gfc_symbol *sym, mpz_t val, mpz_t ret)
data.sym = sym;
mpz_init_set (data.val, val);
gfc_expr_walker (&n, callback_insert_index, (void *) &data);
/* Suppress errors here - we could get errors here such as an
out of bounds access for arrays, see PR 90563. */
gfc_push_suppress_errors ();
gfc_simplify_expr (n, 0);
gfc_pop_suppress_errors ();
if (n->expr_type == EXPR_CONSTANT)
{

View File

@ -1,3 +1,8 @@
2013-08-13 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/90563
* gfortran.dg/do_subsript_5.f90: New test.
2019-08-13 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/89647
@ -22,7 +27,7 @@
* gnat.dg/casesi.ad[bs], test_casesi.adb: New test.
2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
2019-08-13 Wilco Dijkstra <wdijkstr@arm.com>
PR target/81800
* gcc.target/aarch64/no-inline-lrint_3.c: New test.

View File

@ -0,0 +1,17 @@
! { dg-do compile }
! PR 90563 - this used to be rejected, wrongly
! Original test case by Tobias Neumann
program test
implicit none
integer, parameter :: swap(4) = [2,1,3,4]
real :: p(20)
integer :: j
p = 0.0
do j=1,6
if (j<5) then
p(j) = p(swap(j))
endif
enddo
end program