Commit Graph

162 Commits

Author SHA1 Message Date
Kazu Hirata
2e226e6699 cgraphunit.c, [...]: Fix comment typos.
* cgraphunit.c, config/i386/i386.c, config/ia64/ia64.c, cse.c,
	output.h, toplev.c, tree-affine.h, tree-flow.h,
	tree-ssa-alias.c, tree-ssa-coalesce.c, tree-ssa-live.c,
	tree-ssa-live.h, tree-ssa-operands.c, tree-ssa-ter.c,
	tree-vrp.c, varpool.c: Fix comment typos.

From-SVN: r120137
2006-12-22 01:19:39 +00:00
Diego Novillo
38635499e9 [multiple changes]
2006-12-11  Diego Novillo  <dnovillo@redhat.com>

	* doc/tree-ssa.texi: Update documentation for virtual operands
	and the use of push_stmt_changes/pop_stmt_changes.
	* doc/invoke.texi: Remove documentation for params
	global-var-threshold.
	Update documentation on max-aliased-vops.

	* tree-into-ssa.c: Cleanup comments, variables and
	spacing in various functions.
	(regs_to_rename): Declare.
	(mem_syms_to_rename): Declare.
	(dump_update_ssa): Declare.
	(debug_update_ssa): Declare.
	(dump_names_replaced_by): Declare.
	(debug_names_replaced_by): Declare.
	(dump_def_blocks): Declare.
	(debug_def_blocks): Declare.
	(dump_defs_stack): Declare.
	(debug_defs_stack): Declare.
	(dump_currdefs): Declare.
	(debug_currdefs): Declare.
	(mark_def_sites): Do not handle virtual operands.
	(compute_idf): Rename from find_idf.  Update users.
	(register_new_def): Make local.  Convert second argument
	to 'tree'.
	Use BLOCK_DEFS_STACK directly.
	If pushing a non-register, also push the underlying
	symbol.
	(rewrite_stmt): Do not handle virtual operands.
	(dump_tree_ssa): Call dump_def_blocks, dump_defs_stack,
	dump_currdefs and dump_tree_ssa_stats.
	(dump_tree_ssa_stats): Also dump REPL_TBL.
	(replace_use): Remove.  Update all users to call SET_USE
	instead.
	(rewrite_blocks): Move code to free memory to
	fini_ssa_renamer.
	(mark_def_site_blocks): Move initialization code to
	init_ssa_renamer.
	(init_ssa_renamer): New.
	(fini_ssa_renamer): New.
	(rewrite_into_ssa): Call them.
	(prepare_block_for_update): Process SSA_OP_ALL_USES first
	and SSA_OP_ALL_DEFS later.  Do not process virtual
	operands separately.
	(dump_update_ssa): Call dump_decl_set.
	(init_update_ssa): Initialize regs_to_rename and
	mem_syms_to_rename.
	Call init_ssa_renamer.
	(delete_update_ssa): Call fini_ssa_renamer.
	Free blocks_with_phis_to_rewrite.
	(mark_sym_for_renaming): If the variable has
	sub-variables, also mark them.
	If the variable belongs to a partition, also mark it.
	(mark_set_for_renaming): Call mark_sym_for_renaming on
	every symbol in the set.
	(switch_virtuals_to_full_rewrite): Call
	mark_set_for_renaming.
	(update_ssa): Separate syms_to_rename into regs_to_rename
	and mem_syms_to_rename.

	* tree-dump.c (dump_options): Add TDF_MEMSYMS.
	* tree-pretty-print.c (debug_generic_expr): Add TDF_MEMSYMS.
	(debug_generic_stmt): Likewise.
	(debug_tree_chain): Likewise.
	(dump_symbols): New.
	(dump_generic_node): Check for TDF_MEMSYMS.
	Handle MEMORY_PARTITION_TAG.
	If the statement references memory and TDF_MEMSYMS is
	given, call dump_symbols.
	Indicate default names with (D).
	(dump_vops): Update for new virtual operator format.

	* tree.c (init_ttree): Add MEMORY_PARTITION_TAG to
	tree_contains_struct.
	(tree_code_size): Handle MEMORY_PARTITION_TAG.
	(tree_node_structure): Likewise.
	(needs_to_live_in_memory): Handle SSA names.
	* tree.h (MTAG_P): Likewise.
	(struct tree_memory_partition_tag): Declare.
	(MPT_SYMBOLS): Define.
	(union tree_node): Add field 'mpt'.
	* treestruct.def (TS_MEMORY_PARTITION_TAG): Define.
	* tree.def (MEMORY_PARTITION_TAG): Define.

	* tree-pass.h (TDF_MEMSYMS): Define.

	* params.h (GLOBAL_VAR_THRESHOLD): Remove.

	* tree-ssa-alias.c: Include pointer-set.h
	(struct alias_map_d): Remove fields total_alias_vops,
	grouped_p and may_aliases.  Update all users.
	(struct mp_info_def): Declare.
	(mp_info_t): New type.
	(get_smt_for): Rename from get_tmt_for.  Update all
	users.
	(add_may_alias): Add argument ALREADY_ADDED.  If given,
	use it to avoid adding duplicate entries to alias sets.
	(replace_may_alias): Remove.  Update all users.
	(total_alias_vops_cmp): Remove.  Update all users.
	(group_aliases_into): Remove.  Update all users.
	(tree_pointer_compare): Remove.  Update all users.
	(compact_name_tags): Remove.  Update all users.
	(group_aliases): Remove.  Update all users.
	(mark_non_addressable): Move from tree-flow-inline.h.
	Remove the symbol from the partition holding it, if
	needed.
	(dump_mp_info): New.
	(debug_mp_info): New.
	(sort_mp_info): New.
	(create_partition_for): New.
	(rewrite_alias_set_for): New.
	(compute_memory_partitions): New.
	(compute_may_aliases): Call it.
	(init_alias_info): If computing aliases for the first
	time, mark every memory symbol for renaming.
	(have_common_aliases_p): New.
	(compute_flow_insensitive_aliasing): Call it.
	(setup_pointers_and_addressables): Do not cache
	num_referenced_vars.
	For register promoted symbols, mark their former
	partition for renaming.
	(maybe_create_global_var): Only create .GLOBAL_VAR if
	there are no call-clobbered variables and a mix of pure
	and non-pure functions were found.
	(may_alias_p): Tidy comments.
	(create_tag_raw): Remove unused variable new_type.
	(dump_alias_info): call dump_memory_partitions.
	(dump_points_to_info_for): Call dump_decl_set.
	(may_be_aliased): Tidy comments and formatting.

	* timevar.def (TV_MEMORY_PARTITIONING): Define.
	* tree-vectorizer.c (vect_memsyms_to_rename): Rename from
	vect_vnames_to_rename.  Set DECL_UIDs instead of SSA name
	versions in it.
	(slpeel_update_phi_nodes_for_guard1): Ignore memory PHIs.
	* tree-vect-transform.c (vect_transform_loop): Call
	mark_set_for_renaming with vect_memsyms_to_rename.
	* tree-flow-inline.h (zero_imm_uses_p): New.
	(memory_partition): New.
	(set_memory_partition): New.
	(factoring_name_p): New.
	(symbol_mem_tag): New.  Update every function that used
	to access the annotation directly.
	(set_symbol_mem_tag): Likewise.

	* tree-ssa-copy.c (may_propagate_copy): Allow copies
	between a partition and a symbol as long as the symbol
	belongs to the partition.
	(merge_alias_info): Ignore merge requests when memory
	partitions are involved.

	* tree-ssa.c (verify_ssa_name): Check that default
	definitions have empty defining statements.
	(verify_use): Remove argument IS_VIRTUAL.
	Don't call verify_ssa_name.
	(verify_phi_args): Call verify_ssa_name.
	(verify_flow_insensitive_alias_info): Handle MPTs.
	(verify_flow_sensitive_alias_info): Likewise.
	(verify_name_tags): Likewise.
	(verify_call_clobbering): Likewise.
	(verify_ssa): Check for VOPs only after aliasing
	information is available.
	Check virtuals and real operands separately.
	Call verify_ssa_name on every operand.
	(stmt_references_memory_p): Move to tree-ssa-operands.c.
	(walk_use_def_chains_1): Guard against NULL PHI
	arguments.

	* tree-ssa-operands.c (stmt_references_memory_p): Move from
	tree-ssa.c.
	(get_mpt_for): New.
	(dump_memory_partitions): New.
	(debug_memory_partitions): New.

	* tree-flow.h (struct var_ann_d): Add field mpt.
	(struct stmt_ann_d): Add bitfield references_memory.
	* Makefile.in (tree-ssa-structalias.o): Include
	pointer-set.h
	(tree-ssa-alias.o): Likewise.
	* tree-ssa-structalias.c: (update_alias_info): Use
	STORED_SYMS to determine which variables are being
	written to by the store operation.
	* tree-ssa-structalias.h (struct alias_info)
	<total_alias_vops>: Remove.  Update all users.
	<written_vars>: Change to a pointer set.  Update all
	users.
	<dereferenced_ptrs_store>: Likewise.
	<dereferenced_ptrs_load>: Likewise.
	(NUM_REFERENCES): Remove.  Update all users.
	(NUM_REFERENCES_CLEAR): Remove.  Update all users.
	(NUM_REFERENCES_INC): Remove.  Update all users.
	(NUM_REFERENCES_SET): Remove.  Update all users.

	* params.def (PARAM_GLOBAL_VAR_THRESHOLD): Remove.
	Update all users.
	(PARAM_MAX_ALIASED_VOPS): Set to 10.
	* tree-ssanames.c (make_ssa_name): Initialize
	SSA_NAME_IS_DEFAULT_DEF to 0.

2006-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-dse.c (aggregate_vardecl_d): New.
	(dse_global_data): Add aggregate_vardecl field.
	(dse_possible_dead_store_p): New.
	Add prev_defvar variable.
	Allow immediate uses and previous immediate uses to differ
	if they are setting different parts of the whole.
	(get_aggregate_vardecl): New.
	(dse_record_partial_aggregate_store): New.
	(dse_whole_aggregate_clobbered_p): New.
	(dse_partial_kill_p): New.
	(dse_optimize_stmt): Abstract code checking a possible dead store
	into new function dse_possible_dead_store_p().
	Call dse_maybe_record_aggregate_store().
	When checking whether a STMT and its USE_STMT refer to the
	same memory address, check also for partial kills that clobber
	the whole.
	Move some variable definitions to the block where they are used.
	(aggregate_vardecl_hash): New.
	(aggregate_vardecl_eq): New.
	(aggregate_vardecl_free): New.
	(aggregate_whole_store_p): New.
	(tree_ssa_dse): Initialize and free aggregate_vardecl.
	Mark which aggregate stores we care about.

2006-12-11  Andrew Macleod  <amacleod@redhat.com>

	* tree-ssa-operands.h (struct vuse_element_d): Declare.
	(vuse_element_t): Declare.
	(struct vuse_vec_d): Declare.
	(vuse_vec_p): Declare.
	(VUSE_VECT_NUM_ELEM): Define.
	(VUSE_VECT_ELEMENT_NC): Define.
	(VUSE_ELEMENT_PTR_NC): Define.
	(VUSE_ELEMENT_VAR_NC): Define.
	(VUSE_VECT_ELEMENT): Define.
	(VUSE_ELEMENT_PTR): Define.
	(VUSE_ELEMENT_VAR): Define.
	(struct maydef_optype_d) <use_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(struct vuse_optype_d) <kill_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(struct mustdef_optype_d) <kill_var>: Remove.
	<use_ptr>: Remove.
	<usev>: Add.
	(VUSE_OP_PTR): Add argument.  Use VUSE_ELEMENT_PTR.
	(VUSE_OP): Add argument.  Use VUSE_ELEMENT_PTR.
	(VUSE_NUM): Define.
	(VUSE_VECT): Define.
	(MAYDEF_OP_PTR): Add argument.  Use VUSE_OP_PTR.
	(MAYDEF_OP): Add argument.  Use VUSE_OP.
	(MAYDEF_NUM): Define.
	(MAYDEF_VECT): Define.
	(MUSTDEF_KILL_PTR): Use VUSE_OP_PTR.
	(MUSTDEF_KILL): Use VUSE_OP.
	(MUSTDEF_NUM): Define.
	(MUSTDEF_VECT): Define.
	(realloc_maydef): Declare.
	(realloc_vuse): Declare.
	(struct ssa_operand_iterator_d) <vuse_index>: Add.
	<mayuse_index>: Add.
	(LOADED_SYMS): Define.
	(STORED_SYMS): Define.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): Call op_iter_next_mustdef.
	* tree-into-ssa.c: Adapt for multi-operand V_MAY_DEF and VUSE
	operators.
	* tree-pretty-print.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* tree-flow-inline.h: Likewise.
	(op_iter_next_mustdef): New.
	* tree-ssa-operands.c: Likewise.
	(ALLOC_OPTYPE): Remove.
	Update all users.
	(alloc_def): New.
	(alloc_use): New.
	(alloc_maydef): New.
	(alloc_vuse): New.
	(alloc_mustdef): New.
	(realloc_maydef): New.
	(realloc_vuse): New.

2006-12-11  Aldy Hernandez  <aldyh@redhat.com>

	* tree-ssa-operands.c: Remove build_v_must_defs.
	(init_ssa_operands): Delete build_v_must_defs.
	(finalize_ssa_v_must_def_ops): Remove.
	(finalize_ssa_v_must_defs): Remove.
	(finalize_ssa_stmt_operands): Do not call
	finalize_ssa_v_must_defs.
	(start_ssa_stmt_operands): Do not check build_v_must_defs.
	(append_v_must_def): Delete.
	(copy_virtual_operands): Do not copy V_MUST_DEFs.
	(get_modify_expr_operands): Remove reference to V_MUST_DEF from
	comment.  Remove opf_kill_def.
	(build_ssa_operands): Remove references to v_must_defs.
	(copy_virtual_operands): Same.
	(copy_virtual_operands): Same.
	(fini_ssa_operands): Same.
	(free_ssa_operands): Same.
	(add_mustdef_op): Remove.
	Remove mustdef_optype_p.
	(alloc_mustdef): Remove.
	Remove references to V_MUST_DEFs in comment at top of file.
	(get_expr_operands): Remove opf_kill_def.
	(opf_kill_def): Remove.
	(add_virtual_operand): Remove opf_kill_def.
	(get_indirect_ref_operands): Same.
	(get_tmr_operands): Same.

	* tree-vectorizer.c (rename_variables_in_bb): Remove
	SSA_OP_ALL_KILLS.

	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt): Remove
	SSA_OP_ALL_KILLS.
	(check_loop_closed_ssa_stmt): Same.

	* tree-ssa.c (verify_def): Remove V_MUST_DEF from comment.
	(verify_use): Same.
	(verify_ssa): Remove V_MUST_DEFs traces.
	(verify_ssa): Remove SSA_OP_ALL_KILLS.

	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTDEF to
	SSA_OP_VMAYDEF.
	(rewrite_update_stmt): Remove SSA_OP_VIRTUAL_KILLS.
	(rewrite_stmt): Remove SSA_OP_ALL_KILLS.

	* tree-ssa-operands.h (struct stmt_operands_d): Remove V_MUST_DEF
	references.
	(MUSTDEF_OPS): Remove.
	(SSA_OP_VMUSTDEF): Remove.
	(FOR_EACH_SSA_MUSTDEF_OPERAND): Remove.
	(struct mustdef_optype_d): Remove.
	Remove mustdef_optype_p.
	(struct stmt_operands_d): Remove mustdef_ops.
	(ssa_operand_iterator_d): Remove mustdefs and mustkills.
	(SSA_OP_VIRTUAL_DEFS): Remove SSA_OP_VMUSTDEF.
	(MUSTDEF_RESULT_PTR): Remove.
	(MUSTDEF_RESULT): Remove.
	(MUSTDEF_KILL_PTR): Remove.
	(MUSTDEF_KILL): Remove.
	(MUSTDEF_NUM): Remove.
	(MUSTDEF_VECT): Remove.
	(SSA_OP_VIRTUAL_KILLS): Remove.
	(SSA_OP_ALL_VIRTUALS): Remove SSA_OP_VIRTUAL_KILLS.
	(SSA_OP_VMUSTKILL): Remove.
	(SSA_OP_ALL_KILLS): Remove.
	(SSA_OP_ALL_OPERANDS): Remove SSA_OP_ALL_KILLS.

	* tree-flow-inline.h (op_iter_init_def): Remove
	SSA_OP_VIRTUAL_KILLS.
	(delink_stmt_imm_use): Remove SSA_OP_ALL_KILLS.

	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
	SSA_OP_VIRTUAL_KILLS.

	* tree-ssa-loop-im.c (determine_max_movement): Remove
	SSA_OP_VIRTUAL_KILLS.
	(gather_mem_refs_stmt): Same.
	(gather_mem_refs_stmt): Same.

	* tree-ssa-dce.c (mark_really_necessary_kill_operand_phis): Delete.
	(perform_tree_ssa_dce): Remove call to
	mark_really_necessary_kill_operand_phis.

	* tree-flow-inline.h (op_iter_init): Remove setting of mustdefs
	and mustkills.
	(op_iter_next_use): Do not check mustkills.
	(op_iter_next_def): Do not check mustdefs.
	(op_iter_next_tree): Do not check mustkills or mustdefs.
	(clear_and_done_ssa_iter): Do not set mustdefs or mustkills.
	(op_iter_next_maymustdef): Do not check mustkills.
	(op_iter_init_must_and_may_def): Remove SSA_OP_VMUSTKILL.
	(op_iter_init_mustdef): Remove.

	* tree-ssa-live.c (create_ssa_var_map): Change SSA_OP_VMUSTDEF to
	SSA_OP_VMAYDEF.

	* tree-ssa-dse.c (dse_optimize_stmt): Remove SSA_OP_VMUSTDEF.

	* tree-ssa-ccp.c: Remove V_MUST_DEF traces from comments.
	(visit_assignment): Same.

	* tree-ssa-copy.c (copy_prop_visit_assignment): Same.

	* tree-sra.c (mark_all_v_defs_1): Remove V_MUST_DEF from comment.

	* tree-outof-ssa.c (check_replaceable): Remove SSA_OP_VMUSTDEF.

	* tree-pretty-print.c (dump_vops): Remove printing of V_MUST_DEF.
	Remove kill_p variable.

	* tree-dfa.c (struct dfa_stats_d): Remove num_v_must_defs.
	(dump_dfa_stats): Remove code related to V_MUST_DEFs.
	(collect_dfa_stats_r): Do not set num_v_must_defs.
	(mark_new_vars_to_rename): Remove v_must_defs_{before,after}
	code.

	* tree-into-ssa.c (mark_def_sites): Change SSA_OP_VMUSTKILL to
	SSA_OP_VMAYUSE.

	* tree-ssa-pre.c (compute_rvuse_and_antic_safe): Remove
	SSA_OP_VMUSTDEF and SSA_OP_VMUSTKILL.

	* tree-ssa-propagate.c (stmt_makes_single_store): Remove
	SSA_OP_VMUSTDEF.

From-SVN: r119760
2006-12-11 20:48:51 -05:00
Daniel Berlin
c7463db95a tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
2006-12-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compact_name_tags): Use sort_tags_by_id.
	(tree_pointer_compare): Remove.

From-SVN: r119714
2006-12-10 22:39:41 +00:00
Daniel Berlin
ae07b4632c tree-vrp.c (pass_vrp): Remove PROP_smt_usage.
2006-12-05  Daniel Berlin  <dberlin@dberlin.org>

	* tree-vrp.c (pass_vrp): Remove PROP_smt_usage.
	* tree-complex.c (pass_lower_complex): Ditto.
	* tree-ssa-ccp.c (pass_ccp): Ditto.
	(pass_store_ccp): Ditto.
	* tree-ssa-dom.c (pass_dominator): Ditto.
	(pass_phi_only_cprop): Ditto.
	* tree-sra.c (pass_sra): Ditto.
	* tree-ssa-forwprop.c (pass_forwprop): Ditto.
	* tree-flow.h (updating_used_alone): Remove.
	(updating_used_alone): Ditto.
	* tree-ssa-alias.c (updating_used_alone): Remove variable.
	(lhs_may_store_to): Remove function.
	(recalculate_used_alone): Ditto.
	(compute_may_aliases): Remove used_alone calculation.
	* tree.h (struct tree_memory_tag): Remove is_used_alone and
	old_used_alone. Remove SMT_USED_ALONE and SMT_OLD_USED_ALONE.
	* tree-pass.h (PROP_smt_usage): Remove.
	* passes.c (execute_todo): Remove used alone recalculation.
	(execute_one_pass): Ditto.
	* tree-ssa-operands.c (add_virtual_operand): Remove used_alone
	stuff.

From-SVN: r119550
2006-12-05 18:39:13 +00:00
Aldy Hernandez
07beea0df3 Merge gimple-tuples-branch into mainline.
From-SVN: r119546
2006-12-05 17:26:05 +00:00
Daniel Berlin
e5ebbea51e tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call set_used_smts.
2006-12-04  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Call
	set_used_smts.
	* tree-ssa-structalias.c (set_used_smts): Export.
	(find_what_p_points_to): Don't call set_used_smts here.
	* tree-ssa-structalias.h (set_used_smts): Add prototype.

From-SVN: r119528
2006-12-05 00:44:24 +00:00
Daniel Berlin
c58936b6b7 tree-ssa-alias.c (compute_may_aliases): Compute flow sensitive before flow insensitive.
2006-12-04  Daniel Berlin  <dberlin@dberlin.org>
	
	* tree-ssa-alias.c (compute_may_aliases):
	Compute flow sensitive before flow insensitive.
	(compute_flow_sensitive_aliasing): Don't try to add
	a symbol memory tag to itself.
	
	* alias.h (alias_set_subset_of): New prototype.

	* alias.c (alias_set_subset_of): New function.

	* tree-ssa-structalias.c: Update comments.
	(struct variable_info): Add finished_solution.
	(new_varinfo): Set finished solution to NULL.
	(var_escaped_vars): Remove.
	(escaped_vars_tree): Remove.
	(escaped_vars_id): Remove.
	(nonlocal_vars_id): Remove.
	(constraint_expr_type): Add INCLUDES.
	(graph_size): Removed.
	(dump_constraint): Support INCLUDES.
	(build_constraint_graph): Ditto.
	(collapse_nodes): Add merge_solutions argument.
	Don't merge attributes.
	(process_unification_queue): Just use collapse_nodes.
	(perform_var_substitution): Update call to collapse_nodes.
	(get_constraint_exp_from_ssa_var): Use INCLUDES.
	(process_constraint): Fix non-field sensitive handling
	Handle includes.
	(get_constraint_for): Use INCLUDES.
	(make_constraint_from_anything): Renamed from
	make_constraint_from_escaped.
	(make_constraint_to_escaped): Removed.
	(find_global_initializers): Removed.
	(create_variable_info_for): Do not make constraints to escaped
	vars anymore.
	(dump_solution_for_var): Don't print out the equivalent points-to
	sets, just use the name of the variable it shares it with.
	(intra_create_variable_infos): Use INCLUDES.
	Change nonlocal variable sets to anything sets.
	(init_base_vars): Remove escaped_vars and nonlocal_var
	initialization. 
	(find_escape_constraints): Removed.
	(delete_points_to_sets): Remove dead code.
	(used_smt_calculated): New variable.
	(set_used_smts): New function.
	(merge_smts_into): New function.
	(find_what_p_points_to): Modify to use SMTs.
	(create_nonlocal_var): Remove.
	
	* tree-ssa-operands.c (access_can_touch_variable): Remove
	reference to nonlocal_all. 

	* tree-ssa.c (verify_name_tags): Remove.

From-SVN: r119502
2006-12-04 19:07:05 +00:00
Jan Hubicka
5cd4ec7f24 Privatize SSA variables into gimple_df.
* tree-flow-inline.h
	(gimple_in_ssa_p, gimple_aliases_computed_p, gimple_addressable_vars,
	gimple_call_clobbered_vars, gimple_referenced_vars, gimple_global_var,
	gimple_nonlocal_all): New accessors.
	(first_referenced_var): Update.
	(mark_stmt_modified): Update.
	(is_call_clobbered): Update.
	(mark_call_clobbered): Update.
	(clear_call_clobbered): Update.
	(mark_non_addressable): Update.
	* tree-vrp.c (get_value_range): Update.
	* tree-into-ssa.c (in_ssa_p): Kill.
	(get_default_def_for): Update.
	(rewrite_into_ssa): Update.
	* tree-complex.c (init_parameter_lattice_values): Update.
	(update_complex_assignment): Update.
	(update_parameter_components): Update.
	(expand_complex_libcall): Update.
	(expand_complex_operations_1): Update.
	* tree-tailcall.c (arg_needs_copy_p): Update.
	(add_virtual_phis): Update.
	(tree_optimize_tail_calls_1): Update.
	* tree-ssa-dse.c (memory_ssa_name_same): Update.
	* tree-ssa-copyrename.c
	(copy_rename_partition_coalesce): Update.
	* tree-ssa-math-opts.c (execute_cse_reciprocals): Update.
	* tree-ssa-propagate.c (set_rhs): Update.
	* tree-ssa-alias.c (aliases_computed_p, call_clobbered_vars,
	addressable_vars, global_var):Kill.
	(set_initial_properties): Update.
	(init_alias_info): Update.
	(finalize_ref_all_pointers): Update.
	(setup_pointers_and_addressables): Update.
	(maybe_create_global_var): Update.
	(create_global_var): Update.
	(dump_points_to_info): Update.
	* function.h (struct gimple_df): Forward declare.
	(struct function): Add GIMPLE_DF field.
	* gimplify.c (force_gimple_operand): Update.
	* tree-dfa.c (referenced_vars, default_defs): KIll.
	(make_rename_temp): Update.
	(dump_variable): Update.
	(referenced_var_lookup): Update.
	(referenced_var_check_and_insert): Update.
	(default_def): Rename to ...
	(gimple_default_def): ... this one; accept cfun argument.
	(set_default_def): Update.
	* tree-cfgcleanup.c (modified_noreturn_calls): Kill.
	(cleanup_control_flow): Update.
	* tree-ssa-pre.c (compute_avail): Update
	* tree-ssa-live.c (calculate_live_on_entry): Update.
	* tree-ssa.c (verify_use): Update.
	(verify_call_clobbering): Update.
	(verify_call_clobbering): Update.
	(init_tree_ssa): Update.
	(delete_tree_ssa): Update.
	* tree-outof-ssa.c (coalesce_ssa_name): Update.
	(rewrite_out_of_ssa): Update.
	* tree-flow.h (gimple_df): New structure collecting dataflow variables.
	(FREE_SSANAMES, SSANAMES, MODIFIED_NORETURN_CALLS, DEFAULT_DEFS): New
	private accessors.
	(in_ssa_p, modified_noreturn_calls, referenced_vars, default_defs,
	ssa_names, global_var, nonlocal_all, call_clobbered_vars,
	addressable_vars, aliases_computed_p): Kill.
	(default_def): Rename to...
	(gimple_default_def): ... this one.
	(defaule_def_fn): Kill.
	(num_referenced_vars, ssa_names, num_ssa_names): Update.
	* tree-ssa-structalias.c (nonlocal_all): Kill.
	(get_constraint_exp_from_ssa_var): Update.
	(create_nonlocal_var): Update.
	(get_constraint_for): Update.
	(update_alias_info): Update.
	(find_global_initializers): Update.
	(intra_create_variable_infos): Update.
	(intra_create_variable_infos):
	(find_what_p_points_to): Update.
	(init_alias_heapvars): Update.
	* tree-cfg.c (remove_bb): Update.
	(gimplify_val): Update.
	* tree-ssa-reassoc.c (get_rank): Update.
	(init_reassoc): Update.
	* tree-ssanames.c: Do not include gt-tree-ssanames.h
	(ssa_names, free_ssanames): Kill.
	(init_ssanames): Update.
	(make_ssa_name): Update.
	(release_ssa_name): Update.
	(release_defs): Update.
	(replace_ssa_name_symbol): Update.
	* tree-ssa-operands.c (access_can_touch_variable): Update.
	(add_virtual_operand): Update.
	(add_call_clobber_ops): Update.
	(add_call_read_ops): Update.
	(get_call_expr_operands): Update.
	(get_asm_expr_operands): Update.

From-SVN: r119294
2006-11-28 14:42:37 +00:00
Daniel Berlin
2941f691d9 tree-ssa-alias.c (tree_pointer_compare): New function.
2006-11-23  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (tree_pointer_compare): New function.
	(compact_name_tags): New function.
	(group_aliases): Call compact_name_tags.

From-SVN: r119142
2006-11-24 01:26:26 +00:00
Zdenek Dvorak
d092f0f605 tree-ssa-alias.c (new_type_alias): Do not use offset of expr to select subvars of var.
* tree-ssa-alias.c (new_type_alias): Do not use offset of expr to
	select subvars of var.

From-SVN: r118924
2006-11-17 09:24:01 +00:00
Dirk Mueller
b9eae1a974 tree-vrp.c (get_value_range): Use XCNEW instead of XNEW and memset.
2006-11-16  Dirk Mueller  <dmueller@suse.de>

       * tree-vrp.c (get_value_range): Use XCNEW instead
       of XNEW and memset.
       (insert_range_assertions): Use XCNEWVEC instead
       of XNEWVEC and memset.
       (vrp_initialize): Same.
       (vrp_finalize): Same.
       * tree-ssa-ccp.c (ccp_initialize): Same.
       * predict.c (tree_bb_level_predictions): Same.
       * calls.c (expand_call): Same.
       * tree-ssa-copy.c (init_copy_prop): Same.
       (fini_copy_prop): Same.
       * tree-ssa-alias.c (get_ptr_info): Use GGC_CNEW instead
       of GGC_NEW and memset.

       * name-lookup.c (begin_scope): Use GGC_CNEW instead of
       GGC_NEW and memset.

From-SVN: r118903
2006-11-16 22:07:30 +00:00
Daniel Berlin
21392f1922 Fix PR tree-optimization/28778 Fix PR tree-optimization/29156 Fix PR tree-optimization/29415
2006-10-19  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/28778
	Fix PR tree-optimization/29156
	Fix PR tree-optimization/29415
	* tree.h (DECL_PTA_ARTIFICIAL): New macro.
	(tree_decl_with_vis): Add artificial_pta_var flag.
	* tree-ssa-alias.c (is_escape_site): Remove alias info argument,
	pushed into callers.
	* tree-ssa-structalias.c (nonlocal_for_type): New variable.
	(nonlocal_all): Ditto.
	(struct variable_info): Add directly_dereferenced member.
	(var_escaped_vars): New variable.
	(escaped_vars_tree): Ditto.
	(escaped_vars_id): Ditto.
	(nonlocal_vars_id): Ditto.
	(new_var_info): Set directly_dereferenced.
	(graph_size): New variable
	(build_constraint_graph): Use graph_size.
	(solve_graph): Don't process constraints that cannot change the
	solution, don't try to propagate an empty solution to our
	successors.
	(process_constraint): Set directly_dereferenced.
	(could_have_pointers): New function.
	(get_constraint_for_component_ref): Don't process STRING_CST.
	(nonlocal_lookup): New function.
	(nonlocal_insert): Ditto.
	(create_nonlocal_var): Ditto.
	(get_nonlocal_id_for_type): Ditto.
	(get_constraint_for): Allow results vector to be empty in the case
	of string constants.
	Handle results of calls properly.
	(update_alias_info): Update alias info stats on number and type of
	calls.
	(find_func_aliases): Use could_have_pointers.
	(make_constraint_from_escaped): Renamed from
	make_constraint_to_anything, and changed to make constraints from
	escape variable.
	(make_constraint_to_escaped): New function.
	(find_global_initializers): Ditto.
	(create_variable_info_for): Make constraint from escaped to any
	global variable, and from any global variable to the set of
	escaped vars.
	(intra_create_variable_infos): Deal with escaped instead of
	pointing to anything.
	(set_uids_in_ptset): Do type pruning on directly dereferenced
	variables.
	(find_what_p_points_to): Adjust call to set_uids_with_ptset.
	(init_base_vars): Fix comment, and initialize escaped_vars.
	(need_to_solve): Removed.
	(find_escape_constraints): New function.
	(expand_nonlocal_solutions): Ditto.
	(compute_points_to_sets): Call find_escape_constraints and
	expand_nonlocal_solutions.
	(delete_points_to_sets): Don't fall off the end of the graph.
	(init_alias_heapvars): Initialize nonlocal_for_type and
	nonlocal_all.
	(delete_alias_heapvars): Free nonlocal_for_type and null out
	nonlocal_all.

From-SVN: r117891
2006-10-19 23:05:53 +00:00
Daniel Berlin
ca8587095e re PR tree-optimization/28003 (optimizer bug)
2006-08-22  Daniel Berlin  <dberlin@dberlin.org>

	PR tree-optimization/28003
	* tree-ssa-alias.c (compute_may_aliases): Compute call clobbered
	before grouping aliases.

From-SVN: r116323
2006-08-22 14:04:16 +00:00
Jan Hubicka
1af4bba82e tree-ssa-alias.c (eq_ptr_info, [...]): New function.
* tree-ssa-alias.c (eq_ptr_info, ptr_info_hash): New function.
	(create_name_tags): Instead of quadratic checking use hashtable.
	* bitmap.h: Include hashtab.h.
	(bitmap_hash): Declare.
	* bitmap.c (bitmap_hash): New function.

From-SVN: r116285
2006-08-21 01:53:11 +00:00
Dorit Nuzman
cc0968b01c re PR tree-optimization/26197 (ICE in is_old_name with vectorizer)
PR tree-optimization/26197
        * tree-ssa-alias.c (new_type_alias): Takes additional argument. Calls
        get_ref_base_and_extent and overlap_subvar to add only relevant
        subvars as may-aliases.
        (add_may_alias_for_new_tag): New function, factored out of
        new_type_alias.
        * tree-vect-transform.c (vect_create_data_ref_ptr): Call new_type_alias
        with additional argument.
        * tree-flow.h (new_type_alias): Takes additional argument.

From-SVN: r116060
2006-08-10 12:07:22 +00:00
Jason Merrill
9949572916 re PR c++/27768 (wrong-code with vectors)
PR c++/27768
        * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Add
        may_aliases already in the tag's annotations to the bitmap.

From-SVN: r115062
2006-06-28 21:12:20 -04:00
Kazu Hirata
152279c4d2 tree-flow.h: Remove the prototype for add_type_alias.
* tree-flow.h: Remove the prototype for add_type_alias.
	* tree-ssa-alias.c (add_type_alias): Remove.

From-SVN: r114197
2006-05-29 13:47:00 +00:00
Eric Botcazou
05a58ad48d tree-ssa-structalias.h (PTR_IS_REF_ALL): New macro.
* tree-ssa-structalias.h (PTR_IS_REF_ALL): New macro.
	(struct alias_info): Add new field ref_all_symbol_mem_tag.
	* tree-ssa-alias.c (compute_may_aliases): If the program contains
	ref-all pointers, run a finalization pass for them.
	(compute_flow_insensitive_aliasing): Skip ref-all pointers.
	(finalize_ref_all_pointers): New function.
	(is_escape_site): Return ESCAPE_BAD_CAST for conversion from a
	regular pointer type to a ref-all pointer type.
	(get_tmt_for): Return the special memory tag for ref-all pointers.

From-SVN: r114116
2006-05-25 14:11:36 +00:00
Andrew MacLeod
f004ab022e re PR c++/26757 (C++ front-end producing two DECLs with the same UID)
2006-05-23  Andrew MacLeod  <amacleod@redhat.com>
	
	PR c++/26757
	* tree-ssa-loop-im.c (determine_invariantness_stmt): Use 
	add_referenced_var instead of add_referenced_tmp_var.
	* tree-complex.c (create_one_component_var): Use add_referenced_var.
	* tree-ssa-loop-manip.c (create_iv, tree_unroll_loop): Use
	add_referenced_var.
	* tree-tailcall.c (adjust_accumulator_values, adjust_return_value,
	tree_optimize_tail_calls_1): Use add_referenced_var.
	* tree-ssa-loop-ivopts.c (create_new_iv): Use add_referenced_var.
	* tree-ssa-alias.c (create_memory_tag, create_global_var, create_sft):
	Use add_referenced_var.
	* tree-if-conv.c (ifc_temp_var): Use add_referenced_var.
	* gimplify.c (force_gimple_operand): Use add_referenced_var.
	* tree-ssa-phiopt.c (conditional_replacement, abs_replacement):
	Use add_referenced_var.
	* tree-dfa.c (struct walk_state): Remove.
	(find_referenced_vars): Remove walk state and vars_found hash table.
	(make_rename_temp): Use add_referenced_var.
	(find_vars_r): Pass less parameters to add_referenced_var.
	(referenced_var_p): New.  Is var in referenced_var hash table.
	(referenced_var_insert): Assert var isn't already in hash table.
	(add_referenced_var): Don't need walk_state parameter.  Add var if it
	isn't already in the hash table.
	(add_referenced_tmp_var): Remove.
	(find_new_referenced_vars_1): Use add_referenced_var.
	* tree-ssa-pre.c (create_expression_by_pieces, 
	insert_into_preds_of_block, insert_extra_phis, realify_fake_stores):
	Use add_referenced_var.
	* tree-vect-patterns.c (vect_pattern_recog_1): Use add_referenced_var.
	* lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression,
	lambda_loopnest_to_gcc_loopnest, perfect_nestify): Use 
	add_referenced_var.
	* tree-vect-transform.c (vect_create_addr_base_for_vector_ref,
	vect_create_data_ref_ptr, vect_create_destination_var,
	vect_init_vector, vect_build_loop_niters, 
	vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer,
	vect_gen_niters_for_prolog_loop, vect_create_cond_for_align_checks):
	Use add_referenced_var.
	* tree-outof-ssa.c (create_temp): Use add_referenced_var.
	* tree-flow.h (add_referenced_tmp_var): Remove prototype
	(add_referenced_var): Add prototype.
	* tree-ssa-structalias.c (get_constraint_for, 
	intra_create_variable_infos): Use add_referenced_var.

From-SVN: r114018
2006-05-23 14:07:21 +00:00
Daniel Berlin
74be08f84e re PR tree-optimization/27093 (verify_ssa failed: definition does not dominate use)
2006-05-08  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/27093
	* tree-ssa-alias.c (recalculate_used_alone): Mark variables for 
	renaming when they become not-used_alone.

From-SVN: r113641
2006-05-09 01:28:47 +00:00
Kazu Hirata
d96f49bf64 tree-ssa-alias.c (set_initial_properties, [...]): Use VEC instead of VARRAY.
* tree-ssa-alias.c (set_initial_properties, init_alias_info,
	delete_alias_info, compute_flow_sensitive_aliasing,
	group_aliases): Use VEC instead of VARRAY.
	* tree-ssa-structalias.c (update_alias_info): Likewise.
	* tree-ssa-structalias.h (alias_info): Change the type of
	processed_ptrs to VEC(tree,heap) *.

From-SVN: r112903
2006-04-12 22:55:28 +00:00
Kazu Hirata
e3df376d22 Makefile.in (tree-into-ssa.o, [...]): Depend on vecprim.h.
* Makefile.in (tree-into-ssa.o, tree-outof-ssa.o,
	tree-ssa-live.o, tree-ssa-alias.o, function.o, df-problems.o,
	global.o, cfglayout.o, lambda-code.o, reg-stack.o,
	build/genextract.o): Depend on vecprim.h.
	* cfglayout.c, df-problems.c, function.c, genextract.c,
	global.c, lambda-code.c, reg-stack.c, tree-into-ssa.c,
	tree-outof-ssa.c, tree-ssa-alias.c, tree-ssa-live.c: Include
	vecprim.h.
	* vecprim.h: New.

From-SVN: r112830
2006-04-10 19:26:18 +00:00
Daniel Berlin
ef2bb311e5 tree-ssa-alias.c (lhs_may_store_to): New function.
2006-04-10 Daniel Berlin  <dberlin@dberlin.org>
	
	* tree-ssa-alias.c (lhs_may_store_to): New function.
	(recalculate_used_alone): Handle LHS of calls.

From-SVN: r112815
2006-04-10 03:36:09 +00:00
Daniel Berlin
9ccfe0cda4 tree.h (tree_memory_tag): Add old_used_alone.
2006-04-08  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (tree_memory_tag): Add old_used_alone.
	(SMT_OLD_USED_ALONE): New macro.
	* tree-ssa-alias.c (recalculate_used_alone): Stop
	marking things for renaming unnecessarily.

From-SVN: r112789
2006-04-08 21:50:04 +00:00
Daniel Berlin
c245c134da tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE from parent_var.
2006-03-28  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (create_sft): Initially inherit TREE_ADDRESSABLE
	from parent_var.

From-SVN: r112451
2006-03-28 14:36:56 +00:00
Daniel Berlin
fe1f8f442e re PR tree-optimization/26804 (Alias Time explosion)
2006-03-25  Daniel Berlin  <dberlin@dberlin.org>

	PR tree-optimization/26804
	* tree.h (DECL_CALL_CLOBBERED): New macro.
	(tree_decl_common): Add call_clobbered_flag.
	* tree-flow-inline.h (is_call_clobbered): Use DECL_CALL_CLOBBERED.
	(mark_call_clobbered): Set DECL_CALL_CLOBBERED.
	(clear_call_clobbered): Clear DECL_CALL_CLOBBERED.
	(mark_non_addressable): Ditto.
	* tree-ssa.c (verify_call_clobbered): New function.
	(verify_alias_info): Use it.
	* tree-pass.h (pass_reset_cc_flags): New prototype.
	* tree-ssa-alias.c (pass_reset_cc_flags): New structure.
	(reset_cc_flags): New function.
	* passes.c (init_optimization_passes): Call reset_cc_flags after
	initializing referenced_vars.

From-SVN: r112380
2006-03-25 19:17:26 +00:00
Toon Moene
0698a1d2bd options.c (gfc_init_options): Initialize flag_argument_noalias to 3.
2006-03-21  Toon Moene  <toon@moene.indiv.nluug.nl>

	* fortran/options.c (gfc_init_options): Initialize
	flag_argument_noalias to 3.
	* doc/invoke.texi: Document new flag -fargument-noalias-anything.
	* tree-ssa-alias.c (may_alias_p): If flag_argument_noalias > 2,
	argument pointers may not alias any other storage.
	* common.opt: Define option -fargument-noalias-anything.
	* tree-ssa-structalias.c (intra_create_variable_infos): Fortran
	alias semantics is specified by flag_argument_noalias > 2.

From-SVN: r112243
2006-03-21 06:32:57 +00:00
Daniel Berlin
c2924966db tree-vrp.c (execute_vrp): Return value.
2006-03-02  Daniel Berlin <dberlin@dberlin.org>

	* gcc/tree-vrp.c (execute_vrp): Return value.
	* gcc/regrename.c (rest_of_handle_regrename): Ditto.
	* gcc/tree-into-ssa.c (rewrite_into_ssa): Ditto.
	* gcc/tree-complex.c (tree_lower_complex): Ditto.
	(tree_lower_complex_O0): Ditto.
	* gcc/tracer.c (rest_of_handle_tracer): Ditto.
	* gcc/postreload-gcse.c (rest_of_handle_gcse2): Ditto.
	* gcc/postreload.c (rest_of_handle_postreload): Ditto.
	* gcc/tree-tailcall.c (execute_tail_recursion): Ditto.
	(execute_tail_calls): Ditto.
	* gcc/tree-ssa-loop-ch.c (copy_loop_headers): Ditto.
	* gcc/tree.h (init_function_for_compilation): Ditto.
	* gcc/ipa-cp.c (ipcp_driver): Ditto.
	* gcc/tree-scalar-evolution.c (scev_const_prop): Ditto.
	* gcc/tree-scalar-evolution.h (scev_const_prop): Ditto.
	* gcc/final.c (compute_alignments): Ditto.
	(rest_of_handle_final): Ditto.
	(rest_of_handle_shorten_branches): Ditto.
	(rest_of_clean_state): Ditto.
	* gcc/omp-low.c (execute_expand_omp): Ditto.
	(execute_lower_omp): Ditto.
	* gcc/tree-ssa-dse.c (tree_ssa_dse): Ditto.
	* gcc/ipa-reference.c (static_execute): Ditto.
	* gcc/tree-ssa-uncprop.c (tree_ssa_uncprop): Ditto.
	* gcc/reorg.c (rest_of_handle_delay_slots): Ditto.
	(rest_of_handle_machine_reorg): Ditto.
	* gcc/cgraphunit.c (rebuild_cgraph_edges): Ditto.
	* gcc/flow.c (recompute_reg_usage): Ditto.
	(rest_of_handle_remove_death_notes): Ditto.
	(rest_of_handle_life): Ditto.
	(rest_of_handle_flow2): Ditto.
	* gcc/tree-ssa-copyrename.c (rename_ssa_copies): Ditto.
	* gcc/tree-ssa-ccp.c (do_ssa_ccp): Ditto.
	(do_ssa_store_ccp): Ditto.
	(execute_fold_all_builtins): Ditto.
	* gcc/mode-switching.c (rest_of_handle_mode_switching): Ditto.
	* gcc/modulo-sched.c (rest_of_handle_sms): Ditto.
	* gcc/ipa-pure-const.c (static_execute): Ditto.
	* gcc/cse.c (rest_of_handle_cse): Ditto.
	(rest_of_handle_cse2): Ditto.
	* gcc/web.c (rest_of_handle_web): Ditto.
	* gcc/tree-stdarg.c (execute_optimize_stdarg): Ditto.
	* gcc/tree-ssa-math-opts.c (execute_cse_reciprocals): Ditto.
	* gcc/tree-ssa-dom.c (tree_ssa_dominator_optimize): Ditto.
	* gcc/tree-nrv.c (tree_nrv): Ditto.
	(execute_return_slot_opt): Ditto.
	* gcc/tree-ssa-alias.c (compute_may_aliases): Ditto.
	(create_structure_vars): Ditto.
	* gcc/loop-init.c (rtl_loop_init): Ditto.
	(rtl_loop_done): Ditto.
	(rtl_move_loop_invariants): Ditto.
	(rtl_unswitch): Ditto.
	(rtl_unroll_and_peel_loops): Ditto.
	(rtl_doloop): Ditto.
	* gcc/gimple-low.c (lower_function_body): Ditto.
	(mark_used_blocks): Ditto.
	* gcc/tree-ssa-sink.c (execute_sink_code): Ditto.
	* gcc/ipa-inline.c (cgraph_decide_inlining): Ditto.
	(cgraph_early_inlining): Ditto.
	* gcc/global.c (rest_of_handle_global_alloc): Ditto.
	* gcc/jump.c (cleanup_barriers): Ditto.
	(purge_line_number_notes): Ditto.
	* gcc/ifcvt.c (rest_of_handle_if_conversion): Ditto.
	(rest_of_handle_if_after_reload): Ditto.
	* gcc/tree-ssa-loop.c (tree_ssa_loop_init): Ditto.
	(tree_ssa_loop_im): Ditto.
	(tree_ssa_loop_unswitch): Ditto.
	(tree_vectorize): Ditto.
	(tree_linear_transform): Ditto.
	(tree_ssa_loop_ivcanon): Ditto.
	(tree_ssa_empty_loop): Ditto.
	(tree_ssa_loop_bounds): Ditto.
	(tree_complete_unroll): Ditto.
	(tree_ssa_loop_prefetch): Ditto.
	(tree_ssa_loop_ivopts): Ditto.
	(tree_ssa_loop_done): Ditto.
	* gcc/predict.c (tree_estimate_probability): Ditto.
	* gcc/recog.c (split_all_insns_noflow): Ditto.
	(rest_of_handle_peephole2): Ditto.
	(rest_of_handle_split_all_insns): Ditto.
	* gcc/tree-eh.c (lower_eh_constructs): Ditto.
	* gcc/regmove.c (rest_of_handle_regmove): Ditto.
	(rest_of_handle_stack_adjustments): Ditto.
	* gcc/local-alloc.c (rest_of_handle_local_alloc): Ditto.
	* gcc/function.c (instantiate_virtual_regs): Ditto.
	(init_function_for_compilation): Ditto.
	(rest_of_handle_check_leaf_regs): Ditto.
	* gcc/gcse.c (rest_of_handle_jump_bypass): Ditto.
	(rest_of_handle_gcse): Ditto.
	* gcc/ipa-type-escape.c (type_escape_execute): Ditto.
	* gcc/alias.c (rest_of_handle_cfg): Ditto.
	* gcc/tree-if-conv.c (main_tree_if_conversion): Ditto.
	* gcc/profile.c (rest_of_handle_branch_prob): Ditto.
	* gcc/tree-ssa-phiopt.c (tree_ssa_phiopt): Ditto.
	* gcc/rtl-factoring.c (rest_of_rtl_seqabstr): Ditto.
	* gcc/bt-load.c (rest_of_handle_branch_target_load_optimize): Ditto
	* gcc/tree-dfa.c (find_referenced_vars): Ditto.
	* gcc/except.c (set_nothrow_function_flags): Ditto.
	(convert_to_eh_region_ranges): Ditto.
	(rest_of_handle_eh): Ditto.
	* gcc/emit-rtl.c (unshare_all_rtl): Ditto.
	(remove_unnecessary_notes): Ditto.
	* gcc/except.h (set_nothrow_function_flags): Ditto.
	(convert_to_eh_region_ranges): Ditto.
	* gcc/cfgexpand.c (tree_expand_cfg): Ditto.
	* gcc/tree-cfgcleanup.c (merge_phi_nodes): Ditto.
	* gcc/tree-ssa-pre.c (do_pre): Ditto.
	(execute_fre): Ditto.
	* gcc/cfgcleanup.c (rest_of_handle_jump): Ditto.
	(rest_of_handle_jump2): Ditto.
	* gcc/tree-sra.c (tree_sra): Ditto.
	* gcc/tree-mudflap.c (execute_mudflap_function_ops): Ditto.
	(execute_mudflap_function_decls): Ditto.
	* gcc/tree-ssa-copy.c (do_copy_prop): Ditto.
	(do_store_copy_prop): Ditto.
	* gcc/ipa-prop.h (ipcp_driver): Ditto.
	* gcc/cfglayout.c (insn_locators_initialize): Ditto.
	* gcc/tree-ssa-forwprop.c
	(tree_ssa_forward_propagate_single_use_vars): Ditto.
	* gcc/cfglayout.h (insn_locators_initialize): Ditto.
	* gcc/tree-ssa-dce.c (tree_ssa_dce): Ditto.
	* gcc/tree-ssa.c (execute_early_warn_uninitialized): Ditto.
	(execute_late_warn_uninitialized): Ditto.
	* gcc/rtl.h (cleanup_barriers): Ditto.
	(split_all_insns_noflow): Ditto.
	(purge_line_number_notes): Ditto.
	(unshare_all_rtl): Ditto.
	(remove_unnecessary_notes): Ditto.
	(recompute_reg_usage): Ditto.
	(variable_tracking_main): Ditto.
	* gcc/integrate.c (emit_initial_value_sets): Ditto.
	* gcc/integrate.h (emit_initial_value_sets): Ditto.
	* gcc/tree-optimize.c (execute_free_datastructures): Ditto
	(execute_free_cfg_annotations): Ditto.
	(execute_fixup_cfg): Ditto.
	(execute_cleanup_cfg_pre_ipa): Ditto.
	(execute_cleanup_cfg_post_optimizing): Ditto.
	(execute_init_datastructures): Ditto.
	* gcc/tree-object-size.c (compute_object_sizes): Ditto.
	* gcc/combine.c (rest_of_handle_combine): Ditto.
	* gcc/tree-outof-ssa.c (rewrite_out_of_ssa): Ditto.
	* gcc/bb-reorder.c (duplicate_computed_gotos): Ditto.
	(rest_of_handle_reorder_blocks): Ditto.
	(rest_of_handle_partition_blocks): Ditto.
	* gcc/var-tracking.c (variable_tracking_main): Ditto.
	* gcc/tree-profile.c (tree_profiling): Ditto.
	* gcc/tree-vect-generic.c (expand_vector_operations): Ditto.
	* gcc/reg-stack.c (rest_of_handle_stack_regs): Ditto.
	* gcc/sched-rgn.c (rest_of_handle_sched): Ditto.
	(rest_of_handle_sched2): Ditto.
	* gcc/basic-block.h (free_bb_insn): Ditto.
	* gcc/tree-ssa-structalias.c (ipa_pta_execute): Ditto.
	* gcc/tree-cfg.c (execute_build_cfg): Ditto.
	(remove_useless_stmts): Ditto.
	(split_critical_edges): Ditto.
	(execute_warn_function_return): Ditto.
	(execute_warn_function_noreturn): Ditto.
	* gcc/tree-ssa-reassoc.c (execute_reassoc): Ditto.
	* gcc/cfgrtl.c (free_bb_for_insn): Ditto.
	* gcc/passes.c (execute_one_pass): Run additional
	todos returned by execute function.
	* gcc/tree-pass.h (struct tree_opt_pass): Make execute
	return a value.

From-SVN: r111643
2006-03-02 19:00:11 +00:00
Richard Guenther
62c577fd5b tree-ssa-alias.c (find_used_portions): Consider taking the address as making the variable not write-only.
2006-03-02  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-alias.c (find_used_portions): Consider taking
	the address as making the variable not write-only.

From-SVN: r111639
2006-03-02 15:47:03 +00:00
Diego Novillo
18cd8a03f8 tree.def (SYMBOL_MEMORY_TAG): Rename from TYPE_MEMORY_TAG.
* tree.def (SYMBOL_MEMORY_TAG): Rename from TYPE_MEMORY_TAG.
	Update all users.
	* tree-pass.h (PROP_smt_usage): Rename from PROP_tmt_usage.
	Update all users.
	(TODO_update_smt_usage): Rename from TODO_update_tmt_usage.
	Update all users.
	* tree.h (SMT_USED_ALONE): Rename from TMT_USED_ALONE.
	Update all users.
	* tree-flow.h (struct var_ann_d): Rename field 'type_mem_tag'
	to 'symbol_mem_tag'.
	Update all users.
	* doc/tree-ssa.texi: Update documentation to reflect TMT->SMT
	rename.

From-SVN: r111617
2006-03-01 17:35:42 -05:00
Richard Guenther
651402f11e re PR tree-optimization/26421 (tree-ssa-alias.c:find_used_portions considers foo(&var) use all elements of var)
2006-02-26  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/26421
	* tree-ssa-alias.c (find_used_portions): Don't treat parameters
	in function calls that are ADDR_EXPRs as using the whole structure.

	* gcc.dg/tree-ssa/pr26421.c: New testcase.

From-SVN: r111461
2006-02-26 21:02:43 +00:00
Dorit Nuzman
afa38a953b re PR tree-optimization/26359 (Over optimization of loop when using -ftree-vectorize)
PR tree-optimization/26359
        * tree-ssa-alias.c (new_type_alias): Set fields for new tag.

From-SVN: r111451
2006-02-26 09:27:35 +00:00
Daniel Berlin
a6c550f985 tree.h (struct tree_memory_tag): Add is_used_alone member.
2006-02-20  Daniel Berlin  <dberlin@dberlin.org>

	* tree.h (struct tree_memory_tag): Add is_used_alone member.
	(TMT_USED_ALONE): New macro.
	* tree-pass.h (PROP_tmt_usage): New property.
	(TODO_update_tmt_usage): New todo.
	* tree-ssa-alias.c (updating_used_alone): New variable.
	(recalculate_used_alone): New function.	  
	(compute_may_aliases): Set updating_used_alone, call
	recalculate_used_alone. 
	* tree-sra.c (pass_sra): Note that this pass destroys
	PROP_tmt_usage, and add TODO_update_tmt_usage.
	* tree-ssa-forwprop.c (pass_forwprop): Ditto.
	* tree-flow.h (updating_used_alone): Prototype.
	(recalculate_used_alone): Ditto.
	* passes.c (execute_todo): Add code to set updating_used_alone,
	and call recalculate.
	* tree-ssa-operands.c (add_virtual_operand): Only append bare def
	for clobber if used alone, and add assert to verify used_alone
	status.

From-SVN: r111300
2006-02-20 13:38:01 +00:00
Diego Novillo
faf7c6784e tree-flow.h (struct var_ann_d): Rename field is_alias_tag to is_aliased.
* tree-flow.h (struct var_ann_d): Rename field is_alias_tag to
	is_aliased.
	Update all users.

From-SVN: r111249
2006-02-18 15:31:28 -05:00
Daniel Berlin
3c0b6c4300 tree.c (init_ttree): Add STRUCT_FIELD_TAG handling.
2006-02-15 Daniel Berlin  <dberlin@dberlin.org>

	* tree.c (init_ttree): Add STRUCT_FIELD_TAG handling.
	(tree_code_size): Ditto.
	* tree.h (struct tree_memory_tag): Remove parent_var.
	(struct tree_struct_field_tag): New.
	(SFT_OFFSET): New.
	(SFT_SIZE): New.
	(union tree_node): Add sft member.
	* tree-ssa-alias.c (get_tmt_for): Don't handle TYPE_READONLY
	specially here.
	(create_sft): Add size and offset argument, set SFT_OFFSET and
	SFT_SIZE.
	(create_overlap_variables_for): Update for SFT_OFFSET/SFT_SIZE.
	* treestruct.def: Add TS_STRUCT_FIELD_TAG.
	* tree-flow-inline.h (get_subvar_at): Update for
	SFT_OFFSET/SFT_SIZE.
	(var_can_have_subvars): Ditto.
	(overlap_subvar): Ditto.
	* print-tree.c (print_node): Print out interesting things for
	SFT's.
	* tree-flow.h (struct subvar): Remove offset and size members.
	* tree-ssa-operands.c (get_expr_operands): Update for
	get_indirect_ref_operands changes.
	(get_indirect_ref_operands): Call add_virtual_operand instead of
	add_stmt_operand.  Only recurse on base var if requested.
	(access_can_touch_variable): New function.
	(add_stmt_operand): Split virtual operand handling into ...
	(add_virtual_operand): Here.  Add offset, size, and for_clobber
	arguments.  Prune alias sets.
	(add_call_clobber_ops): Call add_virtual_operand.

From-SVN: r111120
2006-02-15 22:09:45 +00:00
Daniel Berlin
8a1053288e tree-ssa-alias.c (maybe_create_global_var): Change subvar walking to an assertion that we don't have subvar'd variables.
2006-01-26  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (maybe_create_global_var): Change
	subvar walking to an assertion that we don't have subvar'd variables.

From-SVN: r110257
2006-01-26 15:24:51 +00:00
Daniel Berlin
d16a5e3669 tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
2006-01-16  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-operands.h (ssa_call_clobbered_cache_valid): Remove.
	(ssa_ro_call_cache_valid): Ditto.
	* tree-ssa-alias.c (sort_tags_by_id): New function.
	(init_transitive_clobber_worklist): Ditto.
	(add_to_worklist): Ditto.
	(mark_aliases_call_clobbered): Ditto.
	(compute_tag_properties): Ditto.
	(set_initial_properties): Ditto.
	(compute_call_clobbered): Ditto.
	(compute_may_aliases):	Call compute_call_clobbered and grouping.
	(compute_flow_sensitive_aliasing): Remove clobbering related code.
	(compute_flow_insensitive_aliasing): Grouping now happens in our
	caller.
	(setup_pointers_and_addressables): Remove clobbering related code.
	(add_may_alias): Ditto.
	(replace_may_alias): Ditto.
	(get_nmt_for): Ditto.
	(create_global_var): 
	(is_escape_site): Return an escape_type enumeration.
	* tree-flow-inline.h (is_call_clobbered):  Global var does not
	imply call clobbered.
	(mark_call_clobbered): Take a reason for marking this. Remove
	marking of globalness, and cache invalidation.
	(clear_call_clobbered): Remove cache invalidation code.
	* tree-dfa.c (dump_variable): If details is on, dump the reason
	for escaping.
	* tree-outof-ssa.c (create_temp): Copy escape mask from original
	variable. 
	* tree-flow.h (struct ptr_info_def): Add escape mask member.
	(struct var_ann_d): Ditto.
	(enum escape_type): New.
	(mark_call_clobbered): Adjust prototype.
	* tree-ssa-structalias.c (update_alias_info): Unmodifiable vars
	are never call clobbered. 
	Record reasons for escaping.
	* tree-ssa-structalias.h (is_escape_site): Update prototype.
	* tree-ssa-operands.c (ssa_call_clobbered_cache_valid): Remove.
	(ssa_ro_call_cache_valid): Ditto.
	(clobbered_v_may_defs): Ditto.
	(clobbered_vuses): Ditto.
	(ro_call_vuses): Ditto.
	(clobber_stats): New.
	(init_ssa_operands): Zero out clobber stats.
	(fini_ssa_operands): Print out clobber stats.
	(get_call_expr_operands): Pass callee fndecl to
	add_call_read_ops).
	(add_call_clobber_ops): Remove use of cache.
	Add use of PURE_CONST information.
	(add_call_read_ops): Remove use of cache.
	Add use of static not_read information.

From-SVN: r109938
2006-01-19 01:42:48 +00:00
Richard Guenther
183596ebac tree-ssa-alias.c (struct used_part): Add write_only field.
2006-01-16  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-alias.c (struct used_part): Add write_only field.
	(get_or_create_used_part_for): Initialize it to true.
	(create_overlap_variables_for): Don't create structure variables
	for structures that only are written to.
	(find_used_portions): Handle MODIFY_EXPR to track whether a
	structure is only written to.

	* gcc.dg/tree-ssa/20031015-1.c: Adjust testcase.

From-SVN: r109766
2006-01-16 19:35:08 +00:00
Richard Guenther
a916f21d3c re PR tree-optimization/22548 (Aliasing can not tell array members apart)
2006-01-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/22548
	PR tree-optimization/22555
	PR tree-optimization/22501
	* Makefile.in (tree-ssa-structalias.o): Depend on $(PARAMS_H).
	* params.def (salias-max-array-elements): New parameter.
	* params.h (SALIAS_MAX_ARRAY_ELEMENTS): Define.
	* doc/invoke.texi (salias-max-array-elements): Document.
	* tree-flow-inline.h (var_can_have_subvars): We also handle
	arrays now.
	* tree-ssa-alias.c (find_used_portions): Handle ARRAY_REF like
	COMPONENT_REF.
	* tree-ssa-structalias.c (params.h): Include.
	(push_fields_onto_fieldstack): Handle ARRAY_TYPE.
	(find_func_aliases): Handle multiple constraints from ARRAY_REF.
	(get_constraint_for): For ADDR_EXPR operating on something
	containing an ARRAY_REF, add all subvars to the solution.
	(handle_ptr_arith): Handle ARRAY_TYPE like RECORD_TYPE types.
	* tree-ssa-operands.c (parse_ssa_operands): Handle ARRAY_REF
	for creating MUST_DEFs.
	(get_expr_operands): Treat ARRAY_REF like COMPONENT_REF wrt subvars.

	* gcc.dg/tree-ssa/alias-4.c: New testcase.
	* gcc.dg/tree-ssa/alias-5.c: Likewise.
	* gcc.dg/tree-ssa/alias-6.c: Likewise.
	* gcc.dg/tree-ssa/alias-7.c: Likewise.
	* gcc.dg/tree-ssa/alias-8.c: Likewise.
	* gcc.dg/tree-ssa/alias-9.c: Likewise.
	* gcc.dg/tree-ssa/alias-10.c: Likewise.
	* gcc.dg/tree-ssa/alias-11.c: Likewise.
	* gcc.dg/tree-ssa/alias-12.c: Likewise.

From-SVN: r109703
2006-01-14 14:30:33 +00:00
Diego Novillo
47adc0164e tree-ssa-alias.c (add_type_alias): Fix typo.
* tree-ssa-alias.c (add_type_alias): Fix typo.  Test whether
	VAR is a tag, not its type tag.

From-SVN: r109673
2006-01-13 15:13:06 -05:00
Daniel Berlin
dff852300d tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR to try to avoid clobbering pieces of structures when...
2006-01-11  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-operands.c (add_call_clobber_ops): Use SFT_PARENT_VAR
	to try to avoid clobbering pieces of structures when we know
	something about the whole structure.
	* tree-ssa-alias.c (create_sft): Set SFT_PARENT_VAR

From-SVN: r109651
2006-01-12 23:07:53 +00:00
Andrew Pinski
8ae5e6f215 re PR tree-optimization/25528 (missed LIM on the tree level (complex types))
2006-01-06  Andrew Pinski  <pinskia@physics.uc.edu>

        PR tree-opt/25528
        * tree-ssa-alias.c (find_used_portions): Handle REALPART_EXPR
        and IMAGPART_EXPR.
        * tree-flow-inline.h (var_can_have_subvars): Handle complex types
        on non gimple variables.  Also add checks at the top for decls and
        mtags.
        * tree-ssa-structalias.c (push_fields_onto_fieldstack): Handle
        complex types.
        * tree-ssa-operands.c (parse_ssa_operands): Handle REALPART_EXPR
        and IMAGPART_EXPR for creating MUST_DEFs.
        (get_expr_operands): Handle SSA_NAME, STRUCT_FIELD_TAG, TYPE_MEMORY_TAG,
        and NAME_MEMORY_TAG separately from the DECLs.

From-SVN: r109419
2006-01-06 07:00:50 -08:00
Richard Guenther
758cf3f28a re PR tree-optimization/22555 (array in struct disables salias subvars for other fields)
2006-01-05  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/22555
	* tree-ssa-alias.c (create_overlap_variables_for): Do not give up,
	if one structure field is an array.
	* tree-ssa-operands.c (get_expr_operands): Continue scanning
	operands even if we found a subvar, but ignore VOPs in this
	case.
	* tree-ssa-loop-ivopts.c (rewrite_use): Mark new vars in stmt
	for renaming.
	* tree-ssa-loop.c (pass_iv_optimize): Schedule TODO_update_ssa.

	* gcc.dg/tree-ssa/alias-3.c: New testcase.

From-SVN: r109381
2006-01-05 15:30:44 +00:00
Richard Guenther
35ed859b0d tree-flow.h (struct fieldoff): Decompose field to type, size and decl.
2006-01-05  Richard Guenther  <rguenther@suse.de>

	* tree-flow.h (struct fieldoff): Decompose field to
	type, size and decl.
	* tree-ssa-alias.c (create_sft): Take type as parameter.
	(create_overlap_variables_for): Store type, size and decl
	in the fieldoff structure.
	* tree-ssa-structalias.c (fieldoff_compare): Adjust users
	of struct fieldoff.
	(push_fields_onto_fieldstack): Likewise.
	(create_variable_info_for): Likewise.  Use offset for the
	SFT name if the decl is not available.

From-SVN: r109376
2006-01-05 09:58:57 +00:00
Zdenek Dvorak
780e37d370 tree-flow.h (struct var_ann_d): Change type of may_aliases field to VEC(tree, gc) *.
* tree-flow.h (struct var_ann_d): Change type of
	may_aliases field to VEC(tree, gc) *.
	(may_aliases): Declaration changed.
	* tree-ssa-alias.c (group_aliases, add_may_alias,
	replace_may_alias, dump_may_aliases_for,
	is_aliased_with, add_type_alias, new_type_alias):
	Work with VEC(tree, gc) * instead of varray.
	* tree-flow-inline.h (may_aliases): Ditto.
	* tree-ssa.c (verify_flow_insensitive_alias_info,
	verify_name_tags): Ditto.
	* tree-ssa-operands.c (add_stmt_operand): Ditto.

From-SVN: r108804
2005-12-19 19:13:21 +00:00
Gabriel Dos Reis
e1111e8ebe tree-tailcall.c (find_tail_calls): Use XNEW.
* tree-tailcall.c (find_tail_calls): Use XNEW.
        * tree-ssa-dom.c (allocate_edge_info): Use XCNEW.
        (free_all_edge_infos): Use explicit cast to convert from void
        * *.
        (vrp_free): Likewise.
        (dom_opt_finalize_block): Likewise.
        (record_equivalences_from_incoming_edge): Likewise.
        (thread_across_edge): Likewise.  Use XCNEWVEC.
        (record_cond): Use XCNEW.
        (record_conditions): Use XNEWVEC.
        (record_edge_info): Use XCNEWVEC.
        (lookup_avail_expr): Use XNEW.
        (record_range): Likewise.  Use GGC_NEW.
        * tree-nested.c (var_map_hash): Use explicit cast to convert
        * from
        void *.
        (var_map_eq): Likewise.
        (lookup_field_for_decl): Likewise.
        (convert_nonlocal_reference): Likewise.
        (convert_local_reference): Likewise.
        (convert_nl_goto_reference): Likewise.
        (convert_nl_goto_receiver): Likewise.
        (convert_call_expr): Likewise.
        (convert_tramp_reference): Likewise.
        (lookup_tramp_for_decl): Likewise.Use GGC_NEW.
        (convert_nl_goto_reference): Likewise.
        (lookup_field_for_decl): Use GGC_NEW.
        (create_nesting_tree): Use GGC_CNEW.
        * tree-ssa-phiopt.c (blocks_in_phiopt_order): Use XNEWVEC.
        * tree-ssa-alias.c (init_alias_info): Use XCNEW.
        (create_alias_map_for): Likewise.
        (setup_pointers_and_addressables): Use XCNEWVEC.
        (get_ptr_info): Use GGC_NEW.
        (used_part_map_eq): Use explicit cast to convert from void *.
        (up_lookup): Likewise.
        (up_insert): Use XNEW.
        (get_or_create_used_part_for): Use XCNEW.
        (get_tmt_for): Likewise.
        * tree-ssa-operands.c (ssa_operand_alloc): Use GGC_NEW.
        * tree-ssa-pre.c (phi_trans_add): Use XNEW.
        (bitmap_set_new): Use explicit cast to convert from void *.
        (set_new): Likewise.
        (insert_into_set): Likewise.
        (pool_copy_list): Likewise.
        (phi_translate): Likewise.
        (create_value_expr_from): Likewise.
        (insert_aux): Use XCNEWVEC.
        (compute_avail): Use XNEWVEC.
        * tree-ssa-live.c (calculate_live_on_entry): Likewise.
        (sort_coalesce_list): Likewise.
        (build_tree_conflict_graph): Use XCNEWVEC.
        * tree-ssa-dce.c (tree_dce_init): Use XNEWVEC.
        * tree-ssa-copy.c (init_copy_prop): Likewise.
        (fini_copy_prop): Likewise.
        * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
        * XNEW
        and XCNEWVEC.
        (record_equiv): Use XNEW.
        (uncprop_into_successor_phis): Use explicit cast to convert
        * from
        void *.
        (uncprop_initialize_block): Likewise.

From-SVN: r108747
2005-12-18 09:26:53 +00:00
Richard Guenther
6bec927194 tree-flow.h (okay_component_ref_for_subvars): Remove.
2005-12-15  Richard Guenther  <rguenther@suse.de>

	* tree-flow.h (okay_component_ref_for_subvars): Remove.
	(get_ref_base_and_extent): Declare.
	* tree-dfa.c (okay_component_ref_for_subvars): Remove.
	(get_ref_base_and_extent): New function.
	* tree-ssa-alias.c (find_used_portions): Use it.
	* tree-ssa-structalias.c (get_constraint_for_component_ref):
	Likewise.
	* tree-ssa-operands.c (get_expr_operands): Likewise.

From-SVN: r108568
2005-12-15 10:34:44 +00:00
Daniel Berlin
326eda4b25 In gcc/ 2005-12-05 Daniel Berlin <dberlin@dberlin.org>
In gcc/
2005-12-05  Daniel Berlin  <dberlin@dberlin.org>
	
	* print-tree.c (print_node): Ditto.
	* tree-dfa.c (add_referenced_var): Tag's don't have DECL_INITIAL.
	* tree-dump.c (dequeue_and_dump): Check for decl_common structure
	before accessing DECL_ARTIFICIAL. 
	Handle new tag tree codes.
	* tree-flow-inline.h (clear_call_clobbered): Update for tag
	changes.
	(unmodifiable_var_p): Ditto.
	* tree-flow.h (mem_tag_kind): Remove.
	(struct var_ann_d): Remove mem_tag_kind member.
	* tree-gimple.c (is_gimple_reg): Tags are not gimple registers.
	* tree-pretty-print.c (dump_generic_node): Handle memory tags.
	* tree-ssa-alias.c (init_alias_info): Update for memory tag changes.
	(group_aliases): Ditto.
	(setup_pointers_and_addressables): Ditto.
	(is_escape_site): Ditto.					  
	(may_alias_p): Ditto.
	(create_tag_raw): New function.
	(create_memory_tag): Use it.
	(dump_alias_info): Update for tags.
	(may_be_aliased): Ditto.
	(add_type_alias): Ditto.
	(new_type_alias): Ditto.
	(create_sft): Ditto.
	(create_structure_vars): Ditto.
	* tree-ssa-ccp.c (get_default_value): Ditto.
	* tree-ssa-operands.c (get_expr_operands): Ditto.
	(add_stmt_operand): Ditto.
	(add_call_clobber_ops): Remove duplicated condition.
	* tree-ssa.c (verify_flow_insensitive_alias_info): Update for
	tags.
	* tree-tailcall.c (suitable_for_tail_opt_p): Ditto.
	* tree-vect-transform.c (vect_create_data_ref_ptr): Ditto.
	* tree.c (init_ttree): Update structures for new tree codes.
	(tree_code_size): Update sizes for new tree codes.
	(make_node_stat): Don't try to set common things on minimal
	structures.
	(tree_node_structure): Update for tags.
	(is_global_var): Ditto.
	* tree.def: Add new tree codes.
	* tree.h (MTAG_P): New macro.
	(TREE_MEMORY_TAG_CHECK): Ditto.
	(SSA_VAR_P): Update for tags.
	(struct tree_memory_tag): New structure.
	(MTAG_GLOBAL): New macro.
	(union tree_node): Add memory tag member.
	* treestruct.def (TS_MEMORY_TAG): New.

In gcc/cp

2005-12-05  Daniel Berlin  <dberlin@dberlin.org>

	* ptree.c (cxx_print_decl): Update to check for decl_common
	structure.

From-SVN: r108102
2005-12-06 04:22:11 +00:00
Daniel Berlin
c900f6aa99 tree-ssa-alias.c (compute_may_aliases): Remove call to delete_old_heap_vars.
2005-11-10  Daniel Berlin  <dberlin@dberlin.org>

	* tree-ssa-alias.c (compute_may_aliases): Remove call to 
	delete_old_heap_vars.
	* tree-dfa.c (referenced_var_remove): Remove function.
	* tree-ssa.c (init_tree_ssa): Call init_alias_heapvars.
	(delete_tree_ssa): Remove call to delete_old_heapvars.
	Add call to delete_alias_heapvars.
	* tree-flow.h (referenced_var_remove): Remove prototype
	(init_alias_heapvars): New prototype.
	(delete_alias_heapvars): Ditto.
	* Makefile.in (tree-ssa-structalias.o): Add
	gt-tree-ssa-structalias.o
	(GTFILES): Add tree-ssa-structalias.h and
	tree-ssa-structalias.c.
	(s-gtype): Add gt-tree-ssa-structalias.h.
	* tree-ssa-structalias.c (heapvars): Remove.
	(oldheapvars): Remove.
	(heapvar_for_stmt): New variable.
	(heapvar_lookup): New function.
	(heapvar_insert): Ditto.
	(get_constraint_for): See if we have an old heapvar
	to reuse.
	(init_alias_heapvars): New function.
	(delete_alias_heapvars): Ditto.
	Add include of gt-tree-ssa-structalias.h.

From-SVN: r106743
2005-11-10 17:23:49 +00:00
Daniel Berlin
973162ec9d re PR tree-optimization/23382 (Does not remove the old HEAP virtual variables in clobbered)
2005-11-08  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/23382

	* tree-ssa-alias.c (compute_may_aliases): Call
	delete_old_heap_vars.
	* tree-dfa.c (referenced_var_remove): New function.
	* tree-ssa.c (delete_tree_ssa): Call delete_old_heap_vars.
	* tree-flow.h (referenced_var_remove): Add prototype.
	(delete_old_heap_vars): Ditto.
	* tree-ssa-structalias.c (heapvars): New variable.
	(oldheapvars): Ditto.
	(get_constraint_for): Put heap vars on heapvars list.
	(delete_old_heap_vars): New function.

From-SVN: r106643
2005-11-08 16:34:48 +00:00