trans-array.c (gfc_conv_array_parameter): Use correct types for comparison.
authorRichard Guenther <rguenther@suse.de>
Wed, 11 Jul 2007 09:19:58 +0000 (09:19 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Wed, 11 Jul 2007 09:19:58 +0000 (09:19 +0000)
2007-07-11  Richard Guenther  <rguenther@suse.de>

* trans-array.c (gfc_conv_array_parameter): Use correct
types for comparison.
* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use
correct types for POINTER_PLUS_EXPR.
* trans-stmt.c (gfc_trans_forall_loop): Use correct type
for integer one constant.

From-SVN: r126543

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

index d7c4e706958f77c16631c2f5a2ebc63f8b606c33..092a1499c2d33420c5ae7a4fa26f6fd8310e75a4 100644 (file)
@@ -1,3 +1,12 @@
+2007-07-11  Richard Guenther  <rguenther@suse.de>
+
+       * trans-array.c (gfc_conv_array_parameter): Use correct
+       types for comparison.
+       * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Use
+       correct types for POINTER_PLUS_EXPR.
+       * trans-stmt.c (gfc_trans_forall_loop): Use correct type
+       for integer one constant.
+
 2007-07-10  Paul Thomas  <pault@gcc.gnu.org>
 
        PR fortran/32157
index 6a48031b3fb3dc4ac56f30c3364f423568ceebc9..8a2365813ba5bc5799ac5471baa4411ab3ac978a 100644 (file)
@@ -4924,7 +4924,8 @@ gfc_conv_array_parameter (gfc_se * se, gfc_expr * expr, gfc_ss * ss, int g77)
          loop cleanup code.  */
       tmp = build_fold_indirect_ref (desc);
       tmp = gfc_conv_array_data (tmp);
-      tmp = build2 (NE_EXPR, boolean_type_node, ptr, tmp);
+      tmp = build2 (NE_EXPR, boolean_type_node,
+                   fold_convert (TREE_TYPE (tmp), ptr), tmp);
       tmp = build3_v (COND_EXPR, tmp, stmt, build_empty_stmt ());
 
       gfc_add_expr_to_block (&block, tmp);
index 8856f1965af8f4e9bab170bf92344e0cf1e167bb..c4354b11e5f419cc5317314524a3fabec954f5ba 100644 (file)
@@ -3596,7 +3596,8 @@ gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr)
   /* Call memmove (dest + (i*slen), src, slen).  */
   tmp = fold_build2 (MULT_EXPR, gfc_charlen_type_node, slen,
                     fold_convert (gfc_charlen_type_node, count));
-  tmp = fold_build2 (POINTER_PLUS_EXPR, pchar_type_node, dest,
+  tmp = fold_build2 (POINTER_PLUS_EXPR, pchar_type_node,
+                    fold_convert (pchar_type_node, dest),
                     fold_convert (sizetype, tmp));
   tmp = build_call_expr (built_in_decls[BUILT_IN_MEMMOVE], 3,
                         tmp, src, slen);
index abb53ef751524e60d0818f58067641c7e3eab815..034a50529ebdf69437eedf1f87bdf68cda17aab0 100644 (file)
@@ -1609,7 +1609,8 @@ gfc_trans_forall_loop (forall_info *forall_tmp, tree body,
        }
 
       /* Decrement the loop counter.  */
-      tmp = build2 (MINUS_EXPR, TREE_TYPE (var), count, gfc_index_one_node);
+      tmp = build2 (MINUS_EXPR, TREE_TYPE (var), count,
+                   build_int_cst (TREE_TYPE (var), 1));
       gfc_add_modify_expr (&block, count, tmp);
 
       body = gfc_finish_block (&block);
@@ -3609,7 +3610,8 @@ gfc_trans_allocate (gfc_code * code)
            tmp = se.string_length;
 
          tmp = build_call_expr (gfor_fndecl_allocate, 2, tmp, pstat);
-         tmp = build2 (MODIFY_EXPR, void_type_node, se.expr, tmp);
+         tmp = build2 (MODIFY_EXPR, void_type_node, se.expr,
+                       fold_convert (TREE_TYPE (se.expr), tmp));
          gfc_add_expr_to_block (&se.pre, tmp);
 
          if (code->expr)