aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBud Davis <bdavis9659@sbcglobal.net>2008-05-02 04:05:12 +0000
committerBud Davis <bdavis@gcc.gnu.org>2008-05-02 04:05:12 +0000
commit00113de86ecca65a1ecfa40f279ab907ac202db8 (patch)
tree74f52be359103fe859bf875d3715201abe543ee4
parentc26cc9a6a615c77e768eda6d6e42b0c389f6a74f (diff)
downloadgcc-00113de86ecca65a1ecfa40f279ab907ac202db8.zip
gcc-00113de86ecca65a1ecfa40f279ab907ac202db8.tar.gz
gcc-00113de86ecca65a1ecfa40f279ab907ac202db8.tar.bz2
PR fortran/PR35940
2008-05-01 Bud Davis <bdavis9659@sbcglobal.net> PR fortran/PR35940 * gfortran.dg/index.f90: New test. 2008-05-01 Bud Davis <bdavis9659@sbcglobal.net> PR35940/Fortran * simplify.c (gfc_simplify_index): Check for direction argument being a constant. From-SVN: r134879
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/simplify.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/index.f9022
4 files changed, 35 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index f9ae961..a0755f8 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2008-05-01 Bud Davis <bdavis9659@sbcglobal.net>
+
+ PR35940/Fortran
+ * simplify.c (gfc_simplify_index): Check for direction argument
+ being a constant.
+
2008-05-01 Janus Weil <jaydub66@gmail.com>
* gfortran.h (struct gfc_symbol): Moving "interface" member to
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index 62c1cd45..cde4770 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -1570,7 +1570,8 @@ gfc_simplify_index (gfc_expr *x, gfc_expr *y, gfc_expr *b, gfc_expr *kind)
int back, len, lensub;
int i, j, k, count, index = 0, start;
- if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT)
+ if (x->expr_type != EXPR_CONSTANT || y->expr_type != EXPR_CONSTANT
+ || ( b != NULL && b->expr_type != EXPR_CONSTANT))
return NULL;
if (b != NULL && b->value.logical != 0)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c4ef136..82d3a4d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2008-05-01 Bud Davis <bdavis9659@sbcglobal.net>
+
+ PR fortran/PR35940
+ * gfortran.dg/index.f90: New test.
+
2008-05-01 Simon Baldwin <simonb@google.com>
* testsuite/gcc.dg/Warray-bounds.c: Updated for frontend warnings,
diff --git a/gcc/testsuite/gfortran.dg/index.f90 b/gcc/testsuite/gfortran.dg/index.f90
new file mode 100644
index 0000000..58cd25c
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/index.f90
@@ -0,0 +1,22 @@
+! { dg-do run }
+! pr35940
+ program FA1031
+ implicit none
+ integer I
+ INTEGER IDA1(10)
+ LOGICAL GDA1(10)
+ INTEGER RSLT(10)
+ DATA RSLT /4,1,4,1,4,1,4,1,4,1/
+ IDA1 = 0
+ gda1 = (/ (i/2*2 .ne. I, i=1,10) /)
+
+ IDA1 = INDEX ( 'DEFDEF' , 'DEF', GDA1 ) !fails
+ do I = 1, 10
+ if (IDA1(i).NE.RSLT(i)) call abort
+ end do
+ IDA1 = INDEX ( (/ ('DEFDEF',i=1,10) /) , 'DEF', GDA1 ) !works
+ do I = 1, 10
+ if (IDA1(i).NE.RSLT(i)) call abort
+ end do
+
+ END