2007-05-30 Richard Guenther <rguenther@suse.de>
authorrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 May 2007 14:11:06 +0000 (14:11 +0000)
committerrguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 30 May 2007 14:11:06 +0000 (14:11 +0000)
PR middle-end/32152
* gimplify.c (gimplify_omp_atomic_pipeline): Use correct
types for comparison.
* fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
with original typed arguments.
* config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.

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

gcc/ChangeLog
gcc/config/i386/i386.c
gcc/fold-const.c
gcc/gimplify.c

index 9229ee1..89d7923 100644 (file)
@@ -1,3 +1,12 @@
+2007-05-30  Richard Guenther  <rguenther@suse.de>
+
+       PR middle-end/32152
+       * gimplify.c (gimplify_omp_atomic_pipeline): Use correct
+       types for comparison.
+       * fold-const.c (fold_comparison): Call maybe_canonicalize_comparison
+       with original typed arguments.
+       * config/i386/i386.c (ix86_gimplify_va_arg): Fix type mismatches.
+
 2007-05-30  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/31769
index 87972b4..977ff6b 100644 (file)
@@ -4912,7 +4912,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
       if (needed_intregs)
        {
          /* int_addr = gpr + sav; */
-         t = fold_convert (ptr_type_node, gpr);
+         t = fold_convert (ptr_type_node, fold_convert (size_type_node, gpr));
          t = build2 (PLUS_EXPR, ptr_type_node, sav, t);
          t = build2 (GIMPLE_MODIFY_STMT, void_type_node, int_addr, t);
          gimplify_and_add (t, pre_p);
@@ -4920,7 +4920,7 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
       if (needed_sseregs)
        {
          /* sse_addr = fpr + sav; */
-         t = fold_convert (ptr_type_node, fpr);
+         t = fold_convert (ptr_type_node, fold_convert (size_type_node, fpr));
          t = build2 (PLUS_EXPR, ptr_type_node, sav, t);
          t = build2 (GIMPLE_MODIFY_STMT, void_type_node, sse_addr, t);
          gimplify_and_add (t, pre_p);
@@ -4958,12 +4958,12 @@ ix86_gimplify_va_arg (tree valist, tree type, tree *pre_p, tree *post_p)
                }
              src_addr = fold_convert (addr_type, src_addr);
              src_addr = fold_build2 (PLUS_EXPR, addr_type, src_addr,
-                                     size_int (src_offset));
+                                     build_int_cst (addr_type, src_offset));
              src = build_va_arg_indirect_ref (src_addr);
 
              dest_addr = fold_convert (addr_type, addr);
              dest_addr = fold_build2 (PLUS_EXPR, addr_type, dest_addr,
-                                      size_int (INTVAL (XEXP (slot, 1))));
+                                      build_int_cst (addr_type, INTVAL (XEXP (slot, 1))));
              dest = build_va_arg_indirect_ref (dest_addr);
 
              t = build2 (GIMPLE_MODIFY_STMT, void_type_node, dest, src);
index 01ce961..af48916 100644 (file)
@@ -8542,7 +8542,7 @@ fold_comparison (enum tree_code code, tree type, tree op0, tree op1)
       return fold_build2 (cmp_code, type, variable1, const2);
     }
 
-  tem = maybe_canonicalize_comparison (code, type, arg0, arg1);
+  tem = maybe_canonicalize_comparison (code, type, op0, op1);
   if (tem)
     return tem;
 
index a6978d9..e73e00a 100644 (file)
@@ -5308,7 +5308,8 @@ gimplify_omp_atomic_pipeline (tree *expr_p, tree *pre_p, tree addr,
      floating point.  This allows the atomic operation to properly 
      succeed even with NaNs and -0.0.  */
   x = build3 (COND_EXPR, void_type_node,
-             build2 (NE_EXPR, boolean_type_node, oldival, oldival2),
+             build2 (NE_EXPR, boolean_type_node,
+                     fold_convert (itype, oldival), oldival2),
              build1 (GOTO_EXPR, void_type_node, label), NULL);
   gimplify_and_add (x, pre_p);