diff options
author | Paul Thomas <pault@gcc.gnu.org> | 2006-12-20 21:10:51 +0000 |
---|---|---|
committer | Paul Thomas <pault@gcc.gnu.org> | 2006-12-20 21:10:51 +0000 |
commit | 6a14cf131e4f2b11a5709304694a200c2c3fe0ff (patch) | |
tree | 8cdd30fa7a95399c0d599e44683c5a8fb4b7b9ce /gcc | |
parent | 2a4f771a6e735f6b1924349c39f05f4f420c2a41 (diff) | |
download | gcc-6a14cf131e4f2b11a5709304694a200c2c3fe0ff.zip gcc-6a14cf131e4f2b11a5709304694a200c2c3fe0ff.tar.gz gcc-6a14cf131e4f2b11a5709304694a200c2c3fe0ff.tar.bz2 |
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 <pault@gcc.gnu.org>
PR fortran/30190
* trans-array.c (gfc_conv_array_ref): Remove gfc_evaluate_now
from the -fbounds-check branch.
2006-12-20 Paul Thomas <pault@gcc.gnu.org>
PR fortran/30190
* gfortran.dg/bounds_check_5.f90: New test.
From-SVN: r120084
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/trans-array.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/bounds_check_5.f90 | 17 |
4 files changed, 28 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 0eb5dc5..c3b60fc 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2006-12-20 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/30190 + * trans-array.c (gfc_conv_array_ref): Remove gfc_evaluate_now + from the -fbounds-check branch. + 2006-12-20 Roger Sayle <roger@eyesopen.com> * 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 0858988..6201c4c 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 dac041b..4d43f79 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2006-12-20 Paul Thomas <pault@gcc.gnu.org> + + PR fortran/30190 + * gfortran.dg/bounds_check_5.f90: New test. + 2006-12-20 Andrew Pinski <pinskia@gmail.com> 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 0000000..3a2fc63 --- /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 <burnus@gcc.gnu.org> +! + 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 |