r119131 - in /branches/pointer_plus/gcc: Change...
pinskia@gcc.gnu.org
pinskia@gcc.gnu.org
Thu Nov 23 18:55:00 GMT 2006
Author: pinskia
Date: Thu Nov 23 18:55:49 2006
New Revision: 119131
URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119131
Log:
ChangeLog:
* tree.def (POINTER_PLUS_EXPR): New tree code.
* tree-pretty-print.c (dump_generic_node): Handle
POINTER_PLUS_EXPR.
(op_prio): Likewise.
(op_symbol_1): Likewise.
* optabs.c (optab_for_tree_code): Likewise.
* tree-ssa-loop-manip.c (create_iv): Handle pointer base
specially.
* tree-tailcall.c (process_assignment): Mention
POINTER_PLUS_EXPR in a TODO comment.
* tree.c (build2_stat): Assert when trying to use PLUS_EXPR or
MINUS_EXPR with a pointer. Also assert for POINTER_PLUS_EXPR
not used with a pointer and an integer type.
* tree-scalar-evolution.c (fold_used_pointer): Mention
POINTER_PLUS_EXPR is what this needs to handle.
* builtins.c (get_pointer_alignment): Handle POINTER_PLUS_EXPR
instead of PLUS_EXPR.
(expand_builtin_strcat): Create a POINTER_PLUS_EXPR instead of
PLUS_EXPR for pointers.
(std_gimplify_va_arg_expr): Likewise.
(fold_builtin_memory_op): Likewise.
(fold_builtin_strstr): Likewise.
(fold_builtin_strchr): Likewise.
(fold_builtin_strrchr): Likewise.
(fold_builtin_strpbrk): Likewise.
(expand_builtin_memory_chk): Likewise.
(fold_builtin_memory_chk): Likewise.
* fold-const.c (build_range_check): Handle pointer types
specially.
(fold_to_nonsharp_ineq_using_bound): Likewise.
(fold_binary): Handle simple POINTER_PLUS_EXPR cases.
(tree_expr_nonnegative_p): Handle POINTER_PLUS_EXPR.
(tree_expr_nonzero_p): Likewise.
(fold_indirect_ref_1): Look at POINTER_PLUS_EXPR instead
of PLUS_EXPR for the complex expression folding.
* tree-ssa-loop-ivopts.c (determine_base_object): Handle
POINTER_PLUS_EXPR.
(tree_to_aff_combination): Likewise.
(force_expr_to_var_cost): Likewise.
(force_expr_to_var_cost): Likewise. Create a POINTER_PLUS_EXPR
instead of PLUS_EXPR for pointers.
* c-format.c (check_format_arg): Mention this should be handling
POINTER_PLUS_EXPR.
* tree-stdarg.c (va_list_counter_bump): Handle POINTER_PLUS_EXPR
instead of PLUS_EXPR.
(check_va_list_escapes): Likewise.
(check_all_va_list_escapes): Likewise.
* expr.c (expand_expr_real_1): Handle POINTER_PLUS_EXPR.
(string_constant): Likewise.
* tree-ssa-address.c (add_to_parts): Create a POINTER_PLUS_EXPR
instead of PLUS_EXPR for pointers.
(most_expensive_mult_to_index): Likewise.
(addr_to_parts): Use the correct type for the index.
* c-typeck.c (build_unary_op): For pointers create the increment
as a sizetype. Create a POINTER_PLUS_EXPR instead of PLUS_EXPR
for pointers.
* gimplify.c (gimplify_self_mod_expr): Create a
POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
(gimplify_omp_atomic_fetch_op): Handle POINTER_PLUS_EXPR.
* tree-mudflap.c (mf_xform_derefs_1): Create a
POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
* tree-ssa-forwprop.c (forward_propagate_addr_expr_1): Add a
note this should be handling POINTER_PLUS_EXPR.
* varasm.c (initializer_constant_valid_p): Handle
POINTER_PLUS_EXPR.
* tree-ssa-loop-prefetch.c (idx_analyze_ref): Handle
POINTER_PLUS_EXPR instead of PLUS_EXPR.
(issue_prefetch_ref): Create a POINTER_PLUS_EXPR instead
of PLUS_EXPR for pointers.
* tree-vect-transform.c (vect_create_addr_base_for_vector_ref):
Likewise.
* tree-inline.c (estimate_num_insns_1): Handle
POINTER_PLUS_EXPR.
* tree-object-size.c (plus_expr_object_size): Handle
POINTER_PLUS_EXPR instead of PLUS_EXPR. Removing all the extra
code which is trying to figure out which side is a pointer and
is the index.
(check_for_plus_in_loops_1): Likewise.
(check_for_plus_in_loops): Likewise.
* c-common.c (pointer_int_sum): Create a
POINTER_PLUS_EXPR instead of PLUS_EXPR for pointers.
* tree-ssa-structalias.c (handle_ptr_arith): Handle
only POINTER_PLUS_EXPR. Removing all the extra
code which is trying to figure out which side is a pointer and
is the index.
* tree-cfg.c (verify_expr): Add extra checking for pointers and
PLUS_EXPR and MINUS_EXPR.
Also add checking to make sure the operands of POINTER_PLUS_EXPR
are correct.
cp/ChangeLog:
* typeck.c (build_binary_op): For templates build the
expression in pieces to avoid the assert in build2_stat.
* init.c (expand_virtual_init): Create a POINTER_PLUS_EXPR
instead of PLUS_EXPR for pointers.
(build_new_1): Likewise.
(build_vec_delete_1): Likewise.
(build_vec_delete): Likewise.
* class.c (build_base_path): Likewise.
(build_base_path): Likewise.
(convert_to_base_statically): Likewise.
(fixed_type_or_null): Handle POINTER_PLUS_EXPR.
(get_vtbl_decl_for_binfo): Handle POINTER_PLUS_EXPR
instead of PLUS_EXPR.
(dfs_accumulate_vtbl_inits): Create a POINTER_PLUS_EXPR
instead of PLUS_EXPR for pointers.
* call.c (build_special_member_call): Likewise.
* rtti.c (build_headof): Likewise.
(tinfo_base_init): Likewise.
testsuite/ChangeLog:
* gcc.dg/tree-ssa/ssa-pre-8.c: Update testcase since we don't
have a cast which is PREd.
Added:
branches/pointer_plus/gcc/ChangeLog.ptr
branches/pointer_plus/gcc/cp/ChangeLog.ptr
branches/pointer_plus/gcc/testsuite/ChangeLog.ptr
Modified:
branches/pointer_plus/gcc/builtins.c
branches/pointer_plus/gcc/c-common.c
branches/pointer_plus/gcc/c-format.c
branches/pointer_plus/gcc/c-typeck.c
branches/pointer_plus/gcc/cp/call.c
branches/pointer_plus/gcc/cp/class.c
branches/pointer_plus/gcc/cp/init.c
branches/pointer_plus/gcc/cp/rtti.c
branches/pointer_plus/gcc/cp/typeck.c
branches/pointer_plus/gcc/expr.c
branches/pointer_plus/gcc/fold-const.c
branches/pointer_plus/gcc/gimplify.c
branches/pointer_plus/gcc/optabs.c
branches/pointer_plus/gcc/testsuite/gcc.dg/tree-ssa/ssa-pre-8.c
branches/pointer_plus/gcc/tree-cfg.c
branches/pointer_plus/gcc/tree-inline.c
branches/pointer_plus/gcc/tree-mudflap.c
branches/pointer_plus/gcc/tree-object-size.c
branches/pointer_plus/gcc/tree-pretty-print.c
branches/pointer_plus/gcc/tree-scalar-evolution.c
branches/pointer_plus/gcc/tree-ssa-address.c
branches/pointer_plus/gcc/tree-ssa-forwprop.c
branches/pointer_plus/gcc/tree-ssa-loop-ivopts.c
branches/pointer_plus/gcc/tree-ssa-loop-manip.c
branches/pointer_plus/gcc/tree-ssa-loop-prefetch.c
branches/pointer_plus/gcc/tree-ssa-structalias.c
branches/pointer_plus/gcc/tree-stdarg.c
branches/pointer_plus/gcc/tree-tailcall.c
branches/pointer_plus/gcc/tree-vect-transform.c
branches/pointer_plus/gcc/tree.c
branches/pointer_plus/gcc/tree.def
branches/pointer_plus/gcc/varasm.c
More information about the Gcc-cvs
mailing list