diff options
author | Richard Guenther <rguenther@suse.de> | 2007-05-30 14:11:06 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2007-05-30 14:11:06 +0000 |
commit | fa13976560a8ae33802927ed3e607d01e96e7cfa (patch) | |
tree | 38252a4dbdfe3f79cc10bd5574226330baaa645c | |
parent | 722ba5eeacaeaf2c913d74f5d17b5e8ab9f04d37 (diff) | |
download | gcc-fa13976560a8ae33802927ed3e607d01e96e7cfa.zip gcc-fa13976560a8ae33802927ed3e607d01e96e7cfa.tar.gz gcc-fa13976560a8ae33802927ed3e607d01e96e7cfa.tar.bz2 |
re PR middle-end/32152 (omp lowering creates mismatched types)
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.
From-SVN: r125187
-rw-r--r-- | gcc/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 8 | ||||
-rw-r--r-- | gcc/fold-const.c | 2 | ||||
-rw-r--r-- | gcc/gimplify.c | 3 |
4 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9229ee1..89d7923 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 87972b4..977ff6b 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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); diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 01ce961..af48916 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -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; diff --git a/gcc/gimplify.c b/gcc/gimplify.c index a6978d9..e73e00a 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -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); |