diff options
author | Richard Guenther <rguenther@suse.de> | 2011-07-19 14:01:59 +0000 |
---|---|---|
committer | Richard Biener <rguenth@gcc.gnu.org> | 2011-07-19 14:01:59 +0000 |
commit | 5d49b6a7b28117095ef6889b5d010687fa52843c (patch) | |
tree | 2530edff8e2622a26913a15b62d707dad7e5b286 /gcc/fortran | |
parent | d906fd7fec3b6fcdea45922c4475b1b6bcd5b34c (diff) | |
download | gcc-5d49b6a7b28117095ef6889b5d010687fa52843c.zip gcc-5d49b6a7b28117095ef6889b5d010687fa52843c.tar.gz gcc-5d49b6a7b28117095ef6889b5d010687fa52843c.tar.bz2 |
tree.h (fold_build_pointer_plus_loc): New helper function.
2011-07-19 Richard Guenther <rguenther@suse.de>
* tree.h (fold_build_pointer_plus_loc): New helper function.
(fold_build_pointer_plus_hwi_loc): Likewise.
(fold_build_pointer_plus): Define.
(fold_build_pointer_plus_hwi): Likewise.
* builtins.c (std_gimplify_va_arg_expr): Use fold_build_pointer_plus.
(fold_builtin_memory_op): Likewise.
(fold_builtin_stpcpy): Likewise.
(fold_builtin_memchr): Likewise.
(fold_builtin_strstr): Likewise.
(fold_builtin_strchr): Likewise.
(fold_builtin_strrchr): Likewise.
(fold_builtin_strpbrk): Likewise.
(fold_builtin_strcat): Likewise.
(expand_builtin_memory_chk): Likewise.
(fold_builtin_memory_chk): Likewise.
* c-typeck.c (build_unary_op): Likewise.
* cgraphunit.c (thunk_adjust): Likewise.
* fold-const.c (build_range_check): Likewise.
(fold_binary_loc): Likewise.
* omp-low.c (extract_omp_for_data): Likewise.
(expand_omp_for_generic): Likewise.
(expand_omp_for_static_nochunk): Likewise.
(expand_omp_for_static_chunk): Likewise.
* tree-affine.c (add_elt_to_tree): Likewise.
* tree-data-ref.c (split_constant_offset_1): Likewise.
* tree-loop-distribution.c (generate_memset_zero): Likewise.
* tree-mudflap.c (mf_xform_derefs_1): Likewise.
* tree-predcom.c (ref_at_iteration): Likewise.
* tree-ssa-address.c (tree_mem_ref_addr): Likewise.
(add_to_parts): Likewise.
(create_mem_ref): Likewise.
* tree-ssa-loop-ivopts.c (force_expr_to_var_cost): Likewise.
* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Likewise.
(number_of_iterations_le): Likewise.
* tree-ssa-loop-prefetch.c (issue_prefetch_ref): Likewise.
* tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
(vect_create_addr_base_for_vector_ref): Likewise.
* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Likewise.
(vect_create_cond_for_alias_checks): Likewise.
* tree-vrp.c (extract_range_from_assert): Likewise.
* config/alpha/alpha.c (alpha_va_start): Likewise.
(alpha_gimplify_va_arg_1): Likewise.
* config/i386/i386.c (ix86_va_start): Likewise.
(ix86_gimplify_va_arg): Likewise.
* config/ia64/ia64.c (ia64_gimplify_va_arg): Likewise.
* config/mep/mep.c (mep_expand_va_start): Likewise.
(mep_gimplify_va_arg_expr): Likewise.
* config/mips/mips.c (mips_va_start): Likewise.
(mips_gimplify_va_arg_expr): Likewise.
* config/pa/pa.c (hppa_gimplify_va_arg_expr): Likewise.
* config/rs6000/rs6000.c (rs6000_va_start): Likewise.
(rs6000_gimplify_va_arg): Likewise.
* config/s390/s390.c (s390_va_start): Likewise.
(s390_gimplify_va_arg): Likewise.
* config/sh/sh.c (sh_va_start): Likewise.
(sh_gimplify_va_arg_expr): Likewise.
* config/sparc/sparc.c (sparc_gimplify_va_arg): Likewise.
* config/spu/spu.c (spu_va_start): Likewise.
(spu_gimplify_va_arg_expr): Likewise.
* config/stormy16/stormy16.c (xstormy16_expand_builtin_va_start):
Likewise.
(xstormy16_gimplify_va_arg_expr): Likewise.
* config/xtensa/xtensa.c (xtensa_va_start): Likewise.
(xtensa_gimplify_va_arg_expr): Likewise.
c-family/
* c-common.c (pointer_int_sum): Use fold_build_pointer_plus.
* c-omp.c (c_finish_omp_for): Likewise.
cp/
* call.c (build_special_member_call): Use fold_build_pointer_plus.
* class.c (build_base_path): Likewise.
(convert_to_base_statically): Likewise.
(dfs_accumulate_vtbl_inits): Likewise.
* cp-gimplify.c (cxx_omp_clause_apply_fn): Likewise.
* except.c (expand_start_catch_block): Likewise.
* init.c (expand_virtual_init): Likewise.
(build_new_1): Likewise.
(build_vec_delete_1): Likewise.
(build_vec_delete): Likewise.
* rtti.c (build_headof): Likewise.
(tinfo_base_init): Likewise.
* typeck.c (get_member_function_from_ptrfunc): Likewise.
(cp_build_addr_expr_1): Likewise.
* typeck2.c (build_m_component_ref): Likewise.
fortran/
* trans-expr.c (fill_with_spaces): Use fold_build_pointer_plus.
(gfc_trans_string_copy): Likewise.
* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Likewise.
* trans-types.c (gfc_get_array_descr_info): Likewise.
* trans.c (gfc_build_array_ref): Likewise.
java/
* builtins.c (static): Use fold_build_pointer_plus.
* class.c (make_class_data): Likewise.
(build_symbol_entry): Likewise.
* except.c (build_exception_object_ref): Likewise.
* expr.c (build_java_arrayaccess): Likewise.
(build_field_ref): Likewise.
(build_known_method_ref): Likewise.
(build_invokevirtual): Likewise.
objc/
* objc-next-runtime-abi-02.c (objc_v2_build_ivar_ref):
Use fold_build_pointer_plus.
(objc2_build_ehtype_initializer): Likewise.
From-SVN: r176461
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/fortran/trans-expr.c | 7 | ||||
-rw-r--r-- | gcc/fortran/trans-intrinsic.c | 5 | ||||
-rw-r--r-- | gcc/fortran/trans-types.c | 17 | ||||
-rw-r--r-- | gcc/fortran/trans.c | 4 |
5 files changed, 24 insertions, 17 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 5d8cc64..b3019f3 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,11 @@ +2011-07-19 Richard Guenther <rguenther@suse.de> + + * trans-expr.c (fill_with_spaces): Use fold_build_pointer_plus. + (gfc_trans_string_copy): Likewise. + * trans-intrinsic.c (gfc_conv_intrinsic_repeat): Likewise. + * trans-types.c (gfc_get_array_descr_info): Likewise. + * trans.c (gfc_build_array_ref): Likewise. + 2011-07-19 Janus Weil <janus@gcc.gnu.org> PR fortran/49708 diff --git a/gcc/fortran/trans-expr.c b/gcc/fortran/trans-expr.c index 55a0fc4..26d4398 100644 --- a/gcc/fortran/trans-expr.c +++ b/gcc/fortran/trans-expr.c @@ -3790,8 +3790,8 @@ fill_with_spaces (tree start, tree type, tree size) fold_build2_loc (input_location, MINUS_EXPR, sizetype, i, TYPE_SIZE_UNIT (type))); gfc_add_modify (&loop, el, - fold_build2_loc (input_location, POINTER_PLUS_EXPR, - TREE_TYPE (el), el, TYPE_SIZE_UNIT (type))); + fold_build_pointer_plus_loc (input_location, + el, TYPE_SIZE_UNIT (type))); /* Making the loop... actually loop! */ tmp = gfc_finish_block (&loop); @@ -3917,8 +3917,7 @@ gfc_trans_string_copy (stmtblock_t * block, tree dlength, tree dest, built_in_decls[BUILT_IN_MEMMOVE], 3, dest, src, slen); - tmp4 = fold_build2_loc (input_location, POINTER_PLUS_EXPR, TREE_TYPE (dest), - dest, fold_convert (sizetype, slen)); + tmp4 = fold_build_pointer_plus_loc (input_location, dest, slen); tmp4 = fill_with_spaces (tmp4, chartype, fold_build2_loc (input_location, MINUS_EXPR, TREE_TYPE(dlen), dlen, slen)); diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c index db2bbc1..0c8abc6 100644 --- a/gcc/fortran/trans-intrinsic.c +++ b/gcc/fortran/trans-intrinsic.c @@ -5998,9 +5998,8 @@ gfc_conv_intrinsic_repeat (gfc_se * se, gfc_expr * expr) fold_convert (gfc_charlen_type_node, count)); tmp = fold_build2_loc (input_location, MULT_EXPR, gfc_charlen_type_node, tmp, fold_convert (gfc_charlen_type_node, size)); - tmp = fold_build2_loc (input_location, POINTER_PLUS_EXPR, pvoid_type_node, - fold_convert (pvoid_type_node, dest), - fold_convert (sizetype, tmp)); + tmp = fold_build_pointer_plus_loc (input_location, + fold_convert (pvoid_type_node, dest), tmp); tmp = build_call_expr_loc (input_location, built_in_decls[BUILT_IN_MEMMOVE], 3, tmp, src, fold_build2_loc (input_location, MULT_EXPR, diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c index d7f1dd5..01587eb 100644 --- a/gcc/fortran/trans-types.c +++ b/gcc/fortran/trans-types.c @@ -2899,7 +2899,7 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info) t = base_decl; if (!integer_zerop (data_off)) - t = build2 (POINTER_PLUS_EXPR, ptype, t, data_off); + t = fold_build_pointer_plus (t, data_off); t = build1 (NOP_EXPR, build_pointer_type (ptr_type_node), t); info->data_location = build1 (INDIRECT_REF, ptr_type_node, t); if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ALLOCATABLE) @@ -2912,12 +2912,14 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info) for (dim = 0; dim < rank; dim++) { - t = build2 (POINTER_PLUS_EXPR, ptype, base_decl, - size_binop (PLUS_EXPR, dim_off, lower_suboff)); + t = fold_build_pointer_plus (base_decl, + size_binop (PLUS_EXPR, + dim_off, lower_suboff)); t = build1 (INDIRECT_REF, gfc_array_index_type, t); info->dimen[dim].lower_bound = t; - t = build2 (POINTER_PLUS_EXPR, ptype, base_decl, - size_binop (PLUS_EXPR, dim_off, upper_suboff)); + t = fold_build_pointer_plus (base_decl, + size_binop (PLUS_EXPR, + dim_off, upper_suboff)); t = build1 (INDIRECT_REF, gfc_array_index_type, t); info->dimen[dim].upper_bound = t; if (GFC_TYPE_ARRAY_AKIND (type) == GFC_ARRAY_ASSUMED_SHAPE @@ -2936,8 +2938,9 @@ gfc_get_array_descr_info (const_tree type, struct array_descr_info *info) info->dimen[dim].lower_bound, info->dimen[dim].upper_bound); } - t = build2 (POINTER_PLUS_EXPR, ptype, base_decl, - size_binop (PLUS_EXPR, dim_off, stride_suboff)); + t = fold_build_pointer_plus (base_decl, + size_binop (PLUS_EXPR, + dim_off, stride_suboff)); t = build1 (INDIRECT_REF, gfc_array_index_type, t); t = build2 (MULT_EXPR, gfc_array_index_type, t, elem_size); info->dimen[dim].stride = t; diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c index 4043df2..578f225 100644 --- a/gcc/fortran/trans.c +++ b/gcc/fortran/trans.c @@ -345,9 +345,7 @@ gfc_build_array_ref (tree base, tree offset, tree decl) gfc_array_index_type, offset, GFC_DECL_SPAN(decl)); tmp = gfc_build_addr_expr (pvoid_type_node, base); - tmp = fold_build2_loc (input_location, POINTER_PLUS_EXPR, - pvoid_type_node, tmp, - fold_convert (sizetype, offset)); + tmp = fold_build_pointer_plus_loc (input_location, tmp, offset); tmp = fold_convert (build_pointer_type (type), tmp); if (!TYPE_STRING_FLAG (type)) tmp = build_fold_indirect_ref_loc (input_location, tmp); |