From fa13976560a8ae33802927ed3e607d01e96e7cfa Mon Sep 17 00:00:00 2001 From: Richard Guenther Date: Wed, 30 May 2007 14:11:06 +0000 Subject: [PATCH] re PR middle-end/32152 (omp lowering creates mismatched types) 2007-05-30 Richard Guenther 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 --- gcc/ChangeLog | 9 +++++++++ gcc/config/i386/i386.c | 8 ++++---- gcc/fold-const.c | 2 +- gcc/gimplify.c | 3 ++- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9229ee17656..89d7923b8a1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2007-05-30 Richard Guenther + + 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 PR tree-optimization/31769 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 87972b47d5d..977ff6b805f 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 01ce961ebd9..af48916601c 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 a6978d95296..e73e00ae9ae 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); -- 2.30.2