From: Paul Thomas Date: Wed, 20 Dec 2006 21:10:51 +0000 (+0000) Subject: re PR fortran/30190 ([4.1 only] Bounds check generates wrong code for associated... X-Git-Tag: releases/gcc-4.3.0~7887 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=6a14cf131e4f2b11a5709304694a200c2c3fe0ff;p=thirdparty%2Fgcc.git re PR fortran/30190 ([4.1 only] Bounds check generates wrong code for associated(p1(i)%p2,p1(i)%p2)) 2006-12-20 Paul Thomas PR fortran/30190 * trans-array.c (gfc_conv_array_ref): Remove gfc_evaluate_now from the -fbounds-check branch. 2006-12-20 Paul Thomas PR fortran/30190 * gfortran.dg/bounds_check_5.f90: New test. From-SVN: r120084 --- diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0eb5dc5d75eb..c3b60fc5f025 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2006-12-20 Paul Thomas + + PR fortran/30190 + * trans-array.c (gfc_conv_array_ref): Remove gfc_evaluate_now + from the -fbounds-check branch. + 2006-12-20 Roger Sayle * trans-expr.c (is_zero_initializer_p): Determine whether a given diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c index 085898866e0d..6201c4c05618 100644 --- a/gcc/fortran/trans-array.c +++ b/gcc/fortran/trans-array.c @@ -2094,8 +2094,6 @@ gfc_conv_array_ref (gfc_se * se, gfc_array_ref * ar, gfc_symbol * sym, tree cond; char *msg; - indexse.expr = gfc_evaluate_now (indexse.expr, &se->pre); - tmp = gfc_conv_array_lbound (se->expr, n); cond = fold_build2 (LT_EXPR, boolean_type_node, indexse.expr, tmp); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dac041bfecbf..4d43f7902800 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-12-20 Paul Thomas + + PR fortran/30190 + * gfortran.dg/bounds_check_5.f90: New test. + 2006-12-20 Andrew Pinski PR middle-end/30143 diff --git a/gcc/testsuite/gfortran.dg/bounds_check_5.f90 b/gcc/testsuite/gfortran.dg/bounds_check_5.f90 new file mode 100644 index 000000000000..3a2fc6306a55 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/bounds_check_5.f90 @@ -0,0 +1,17 @@ +! { dg-do run } +! This tests the fix for PR30190, in which the array reference +! in the associated statement would cause a segfault. +! +! Contributed by Tobias Burnus +! + TYPE particle_type + INTEGER, POINTER :: p(:) + END TYPE particle_type + TYPE(particle_type), POINTER :: t(:) + integer :: i + logical :: f + i = 1 + allocate(t(1)) + allocate(t(1)%p(0)) + f = associated(t(i)%p,t(i)%p) +end