aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2008-04-24 03:48:00 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2008-04-24 03:48:00 +0000
commit4e77ad242f46c1dcbebca2fc2f63ec4f40269d46 (patch)
tree04b41bfc43f3809c60b588173402eaaa2104427a /gcc/fortran
parente50b376d61f67af4baff5522d865ba7630eef454 (diff)
downloadgcc-4e77ad242f46c1dcbebca2fc2f63ec4f40269d46.zip
gcc-4e77ad242f46c1dcbebca2fc2f63ec4f40269d46.tar.gz
gcc-4e77ad242f46c1dcbebca2fc2f63ec4f40269d46.tar.bz2
re PR fortran/35994 (MAXLOC and MINLOC off by one with mask)
2008-04-23 Jerry DeLisle <jvdelisle@gcc.gnu.org> Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> PR fortran/35994 * trans-instrinsic.c (gfc_conv_intrinsic_minmaxloc): Correctly adjust loop counter offset. Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org> From-SVN: r134615
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/trans-intrinsic.c9
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index dedc52a..4de64f1 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2008-04-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+ Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
+
+ PR fortran/35994
+ * trans-instrinsic.c (gfc_conv_intrinsic_minmaxloc): Correctly adjust
+ loop counter offset.
+
2008-04-23 Paolo Bonzini <bonzini@gnu.org>
* trans-expr.c (gfc_conv_structure): Don't set TREE_INVARIANT.
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index e832b8a..f3cd4de 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -2171,11 +2171,12 @@ gfc_conv_intrinsic_minmaxloc (gfc_se * se, gfc_expr * expr, int op)
/* Remember where we are. An offset must be added to the loop
counter to obtain the required position. */
- if (loop.temp_dim)
- tmp = build_int_cst (gfc_array_index_type, 1);
+ if (loop.from[0])
+ tmp = fold_build2 (MINUS_EXPR, gfc_array_index_type,
+ gfc_index_one_node, loop.from[0]);
else
- tmp =fold_build2 (MINUS_EXPR, gfc_array_index_type,
- gfc_index_one_node, loop.from[0]);
+ tmp = build_int_cst (gfc_array_index_type, 1);
+
gfc_add_modify_expr (&block, offset, tmp);
tmp = fold_build2 (PLUS_EXPR, TREE_TYPE (pos),