diff options
Diffstat (limited to 'gcc/config/rs6000/rs6000.c')
-rw-r--r-- | gcc/config/rs6000/rs6000.c | 32 |
1 files changed, 13 insertions, 19 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 79dd1403c91..20b3cb8fea6 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -9131,8 +9131,7 @@ rs6000_va_start (tree valist, rtx nextarg) /* Find the overflow area. */ t = make_tree (TREE_TYPE (ovf), virtual_incoming_args_rtx); if (words != 0) - t = build2 (POINTER_PLUS_EXPR, TREE_TYPE (ovf), t, - size_int (words * UNITS_PER_WORD)); + t = fold_build_pointer_plus_hwi (t, words * UNITS_PER_WORD); t = build2 (MODIFY_EXPR, TREE_TYPE (ovf), ovf, t); TREE_SIDE_EFFECTS (t) = 1; expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); @@ -9148,8 +9147,7 @@ rs6000_va_start (tree valist, rtx nextarg) /* Find the register save area. */ t = make_tree (TREE_TYPE (sav), virtual_stack_vars_rtx); if (cfun->machine->varargs_save_offset) - t = build2 (POINTER_PLUS_EXPR, TREE_TYPE (sav), t, - size_int (cfun->machine->varargs_save_offset)); + t = fold_build_pointer_plus_hwi (t, cfun->machine->varargs_save_offset); t = build2 (MODIFY_EXPR, TREE_TYPE (sav), sav, t); TREE_SIDE_EFFECTS (t) = 1; expand_expr (t, const0_rtx, VOIDmode, EXPAND_NORMAL); @@ -9202,9 +9200,7 @@ rs6000_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, /* This updates arg ptr by the amount that would be necessary to align the zero-sized (but not zero-alignment) item. */ t = build2 (MODIFY_EXPR, TREE_TYPE (valist), valist_tmp, - fold_build2 (POINTER_PLUS_EXPR, - TREE_TYPE (valist), - valist_tmp, size_int (boundary - 1))); + fold_build_pointer_plus_hwi (valist_tmp, boundary - 1)); gimplify_and_add (t, pre_p); t = fold_convert (sizetype, valist_tmp); @@ -9339,20 +9335,20 @@ rs6000_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, t = sav; if (sav_ofs) - t = build2 (POINTER_PLUS_EXPR, ptr_type_node, sav, size_int (sav_ofs)); + t = fold_build_pointer_plus_hwi (sav, sav_ofs); u = build2 (POSTINCREMENT_EXPR, TREE_TYPE (reg), unshare_expr (reg), build_int_cst (TREE_TYPE (reg), n_reg)); u = fold_convert (sizetype, u); u = build2 (MULT_EXPR, sizetype, u, size_int (sav_scale)); - t = build2 (POINTER_PLUS_EXPR, ptr_type_node, t, u); + t = fold_build_pointer_plus (t, u); /* _Decimal32 varargs are located in the second word of the 64-bit FP register for 32-bit binaries. */ if (!TARGET_POWERPC64 && TARGET_HARD_FLOAT && TARGET_FPRS && TYPE_MODE (type) == SDmode) - t = build2 (POINTER_PLUS_EXPR, TREE_TYPE (t), t, size_int (size)); + t = fold_build_pointer_plus_hwi (t, size); gimplify_assign (addr, t, pre_p); @@ -9375,17 +9371,15 @@ rs6000_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p, t = ovf; if (align != 1) { - t = build2 (POINTER_PLUS_EXPR, TREE_TYPE (t), t, size_int (align - 1)); - t = fold_convert (sizetype, t); + t = fold_build_pointer_plus_hwi (t, align - 1); t = build2 (BIT_AND_EXPR, TREE_TYPE (t), t, - size_int (-align)); - t = fold_convert (TREE_TYPE (ovf), t); + build_int_cst (TREE_TYPE (t), -align)); } gimplify_expr (&t, pre_p, NULL, is_gimple_val, fb_rvalue); gimplify_assign (unshare_expr (addr), t, pre_p); - t = build2 (POINTER_PLUS_EXPR, TREE_TYPE (t), t, size_int (size)); + t = fold_build_pointer_plus_hwi (t, size); gimplify_assign (unshare_expr (ovf), t, pre_p); if (lab_over) @@ -13685,14 +13679,14 @@ expand_block_move (rtx operands[]) rtx src_reg = copy_addr_to_reg (XEXP (src, 0)); src = replace_equiv_address (src, src_reg); } - set_mem_size (src, GEN_INT (move_bytes)); + set_mem_size (src, move_bytes); if (!REG_P (XEXP (dest, 0))) { rtx dest_reg = copy_addr_to_reg (XEXP (dest, 0)); dest = replace_equiv_address (dest, dest_reg); } - set_mem_size (dest, GEN_INT (move_bytes)); + set_mem_size (dest, move_bytes); emit_insn ((*gen_func.movmemsi) (dest, src, GEN_INT (move_bytes & 31), @@ -23063,8 +23057,8 @@ adjacent_mem_locations (rtx insn1, rtx insn2) val_diff = val1 - val0; return ((REGNO (reg0) == REGNO (reg1)) - && ((MEM_SIZE (a) && val_diff == INTVAL (MEM_SIZE (a))) - || (MEM_SIZE (b) && val_diff == -INTVAL (MEM_SIZE (b))))); + && ((MEM_SIZE_KNOWN_P (a) && val_diff == MEM_SIZE (a)) + || (MEM_SIZE_KNOWN_P (b) && val_diff == -MEM_SIZE (b)))); } return false; |