aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Thomas <pault@gcc.gnu.org>2006-12-20 21:10:51 +0000
committerPaul Thomas <pault@gcc.gnu.org>2006-12-20 21:10:51 +0000
commit6a14cf131e4f2b11a5709304694a200c2c3fe0ff (patch)
tree8cdd30fa7a95399c0d599e44683c5a8fb4b7b9ce
parent2a4f771a6e735f6b1924349c39f05f4f420c2a41 (diff)
downloadgcc-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
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/trans-array.c2
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/bounds_check_5.f9017
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