OSDN Git Service

2008-04-23 Jerry DeLisle <jvdelisle@gcc.gnu.org>
authorjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Apr 2008 03:48:00 +0000 (03:48 +0000)
committerjvdelisle <jvdelisle@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 24 Apr 2008 03:48:00 +0000 (03:48 +0000)
    Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

PR fortran/35994
* trans-instrinsic.c (gfc_conv_intrinsic_minmaxloc): Correctly adjust
loop counter offset.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@134615 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/trans-intrinsic.c

index dedc52a..4de64f1 100644 (file)
@@ -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.
index e832b8a..f3cd4de 100644 (file)
@@ -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),