s390.c (s390_gimplify_va_arg): Use size_int instead of build_int_2.
authorUlrich Weigand <uweigand@de.ibm.com>
Tue, 13 Jul 2004 17:22:41 +0000 (17:22 +0000)
committerUlrich Weigand <uweigand@gcc.gnu.org>
Tue, 13 Jul 2004 17:22:41 +0000 (17:22 +0000)
* config/s390/s390.c (s390_gimplify_va_arg): Use size_int instead
of build_int_2.  Convert both operands of PLUS_EXPR and MULT_EXPR
to the same type.

From-SVN: r84632

gcc/ChangeLog
gcc/config/s390/s390.c

index 67fcce1e06916a4606cd93dc25d7f13f0a2ec172..ca219cb4234ef02ec3613371814eb8429b7d9041 100644 (file)
@@ -1,3 +1,9 @@
+2004-07-13  Ulrich Weigand  <uweigand@de.ibm.com>
+
+       * config/s390/s390.c (s390_gimplify_va_arg): Use size_int instead
+       of build_int_2.  Convert both operands of PLUS_EXPR and MULT_EXPR
+       to the same type.
+
 2004-07-13  Per Bothner  <per@bothner.com>
 
        * collect2.c (main):  Handle --no-demangle and --demangle flags.
index 614e714b8a09d3d0451d62bf7bdf9831ac9b6ae6..58424a4131543535514b8869c364043b3e3222ba 100644 (file)
@@ -6716,21 +6716,17 @@ s390_gimplify_va_arg (tree valist, tree type, tree *pre_p,
   lab_over = create_artificial_label ();
   addr = create_tmp_var (ptr_type_node, "addr");
 
-  t = build_int_2 (max_reg, 0);
-  TREE_TYPE (t) = TREE_TYPE (reg);
+  t = fold_convert (TREE_TYPE (reg), size_int (max_reg));
   t = build2 (GT_EXPR, boolean_type_node, reg, t);
   u = build1 (GOTO_EXPR, void_type_node, lab_false);
   t = build3 (COND_EXPR, void_type_node, t, u, NULL_TREE);
   gimplify_and_add (t, pre_p);
 
-  if (sav_ofs)
-    t = build2 (PLUS_EXPR, ptr_type_node, sav, build_int_2 (sav_ofs, 0));
-  else
-    t = sav;
-
-  u = build2 (MULT_EXPR, long_integer_type_node,
-             reg, build_int_2 (sav_scale, 0));
-  t = build2 (PLUS_EXPR, ptr_type_node, t, u);
+  t = build2 (PLUS_EXPR, ptr_type_node, sav, 
+             fold_convert (ptr_type_node, size_int (sav_ofs)));
+  u = build2 (MULT_EXPR, TREE_TYPE (reg), reg, 
+             fold_convert (TREE_TYPE (reg), size_int (sav_scale)));
+  t = build2 (PLUS_EXPR, ptr_type_node, t, fold_convert (ptr_type_node, u));
 
   t = build2 (MODIFY_EXPR, void_type_node, addr, t);
   gimplify_and_add (t, pre_p);
@@ -6746,16 +6742,17 @@ s390_gimplify_va_arg (tree valist, tree type, tree *pre_p,
 
   t = ovf;
   if (size < UNITS_PER_WORD)
-    t = build2 (PLUS_EXPR, TREE_TYPE (t), t, 
-               build_int_2 (UNITS_PER_WORD - size, 0));
+    t = build2 (PLUS_EXPR, ptr_type_node, t, 
+               fold_convert (ptr_type_node, size_int (UNITS_PER_WORD - size)));
 
   gimplify_expr (&t, pre_p, NULL, is_gimple_val, fb_rvalue);
 
   u = build2 (MODIFY_EXPR, void_type_node, addr, t);
   gimplify_and_add (u, pre_p);
 
-  t = build2 (PLUS_EXPR, TREE_TYPE (t), t, build_int_2 (size, 0));
-  t = build2 (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t);
+  t = build2 (PLUS_EXPR, ptr_type_node, t, 
+             fold_convert (ptr_type_node, size_int (size)));
+  t = build2 (MODIFY_EXPR, ptr_type_node, ovf, t);
   gimplify_and_add (t, pre_p);
 
   t = build1 (LABEL_EXPR, void_type_node, lab_over);
@@ -6765,7 +6762,7 @@ s390_gimplify_va_arg (tree valist, tree type, tree *pre_p,
   /* Increment register save count.  */
 
   u = build2 (PREINCREMENT_EXPR, TREE_TYPE (reg), reg,
-             build_int_2 (n_reg, 0));
+             fold_convert (TREE_TYPE (reg), size_int (n_reg)));
   gimplify_and_add (u, pre_p);
 
   if (indirect_p)