From efa45ebf5b09a1b83bd0317623ef141f5411866b Mon Sep 17 00:00:00 2001 From: pault Date: Wed, 20 Dec 2006 21:10:51 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120084 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/fortran/ChangeLog | 6 ++++++ gcc/fortran/trans-array.c | 2 -- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/bounds_check_5.f90 | 17 +++++++++++++++++ 4 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/gfortran.dg/bounds_check_5.f90 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 -- 2.47.3