Commit Graph

186 Commits

Author SHA1 Message Date
Richard Guenther
6a66f28ed5 re PR tree-optimization/39358 (Wrong aliasing warning with lists)
2009-03-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39358
	* tree-ssa-structalias.c (do_sd_constraint): Fix check for
	escaped_id and callused_id.
	(solve_graph): Likewise.

	* g++.dg/warn/Wstrict-aliasing-bogus-escape-2.C: New testcase.
	* g++.dg/warn/Wstrict-aliasing-bogus-escape-3.C: Likewise.

From-SVN: r144602
2009-03-04 12:36:56 +00:00
Jakub Jelinek
66647d441f Update Copyright years for files modified in 2008 and/or 2009.
From-SVN: r144324
2009-02-20 16:20:38 +01:00
Richard Guenther
9e39dba643 re PR tree-optimization/39207 (Strict aliasing warnings in libstdc++ headers)
2009-02-19  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39207
	PR tree-optimization/39074
	* tree-ssa-structalias.c (storedanything_id, var_storedanything,
	storedanything_tree): New.
	(do_ds_constraint): Simplify ANYTHING shortcutting.  Update
	the STOREDANYTHING solution if the lhs solution contains
	ANYTHING.
	(build_succ_graph): Add edges from STOREDANYTHING to all
	non-direct nodes.
	(init_base_vars): Initialize STOREDANYTHING.
	(compute_points_to_sets): Free substitution info after
	building the succ graph.
	(ipa_pta_execute): Likewise.

	* gcc.dg/torture/pr39074.c: New testcase.
	* gcc.dg/torture/pr39074-2.c: Likewise.
	* gcc.dg/torture/pr39074-3.c: Likewise.

	* tree-ssa-structalias.c (struct variable_info): Add may_have_pointers
	field.
	(do_ds_constraint): Do not add to special var or non-pointer
	field solutions.
	(type_could_have_pointers): Split out from ...
	(could_have_pointers): ... here.  For arrays use the element type.
	(create_variable_info_for): Initialize may_have_pointers.
	(new_var_info): Likewise.
	(handle_lhs_call): Make the HEAP variable unknown-sized.
	(intra_create_variable_infos): Use a type with pointers for
	PARM_NOALIAS, make it unknown-sized.

From-SVN: r144292
2009-02-19 10:12:25 +00:00
Richard Guenther
6b24ee26e5 re PR tree-optimization/39202 (internal compiler error: in collapse_rest_of_var, at tree-ssa-structalias.c:3296)
2009-02-17  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39202
	* tree-ssa-structalias.c (do_structure_copy): Before collapsing
	a var make sure to follow existing collapses.

	* gcc.c-torture/compile/pr39202.c: New testcase.

From-SVN: r144235
2009-02-17 16:01:53 +00:00
Richard Guenther
a60b7ddb73 re PR tree-optimization/39207 (Strict aliasing warnings in libstdc++ headers)
2009-02-17  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39207
	* tree-ssa-structalias.c (find_what_p_points_to): Do not emit
	strict-aliasing warnings for pointers pointing to NULL.

From-SVN: r144228
2009-02-17 13:38:06 +00:00
Daniel Berlin
08e14b2a1a re PR tree-optimization/39100 (-fstrict-aliasing miscompilation)
2009-02-05  Daniel Berlin  <dberlin@dberlin.org>
	    Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/39100
	* tree-ssa-structalias.c (do_ds_constraint): Actually do what the
	comment says and add edges.


Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r143951
2009-02-05 07:09:44 +00:00
Richard Guenther
14c28276e0 re PR tree-optimization/38937 (dereferencing pointer '<anonymous>' does break strict-aliasing)
2009-01-30  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/38937
	* tree-ssa-structalias.c (do_sd_constraint): Do not shortcut
	computing the transitive closure.

From-SVN: r143819
2009-01-31 10:25:41 +00:00
Paolo Bonzini
89ebafc6cd re PR tree-optimization/38984 (NULL pointers always considered distinct by PTA, even with -fno-delete-null-pointer-checks)
gcc:
2009-01-28  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/38984
	* tree-ssa-structalias.c (get_constraints_for_1): Do not use
	the nothing_id variable if -fno-delete-null-pointer-checks.

gcc/testsuite:
2009-01-28  Paolo Bonzini  <bonzini@gnu.org>

	PR tree-optimization/38984
	* gcc.dg/pr38984.c: New XFAILed testcase.

From-SVN: r143721
2009-01-28 08:02:31 +00:00
Richard Guenther
b5c3dfbbfb re PR middle-end/38503 (warnings from -isystem headers strikes back.)
2009-01-27  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/38503
	* cfgexpand.c (expand_gimple_basic_block): Ignore
	GIMPLE_CHANGE_DYNAMIC_TYPE during expansion.
	* tree-ssa-structalias.c (set_uids_in_ptset): Do not prune
	variables that cannot have TBAA applied.
	(compute_points_to_sets): Do not remove GIMPLE_CHANGE_DYNAMIC_TYPE
	statements.

	* g++.dg/warn/Wstrict-aliasing-bogus-placement-new.C: New testcase.

From-SVN: r143700
2009-01-27 10:42:59 +00:00
Richard Guenther
10bd6c5c4a re PR tree-optimization/38826 (points-to result wrong for reads from call-clobbered vars)
2009-01-14  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/38826
	PR middle-end/38477
	* tree-ssa-structalias.c (emit_alias_warning): Emit the pointer
	initialization notes only if we actually emitted a warning.
	(intra_create_variable_infos): Add constraints for a result decl
	that is passed by hidden reference.
	(build_pred_graph): Mark all related variables non-direct on
	address-taking.

	* gcc.dg/Wstrict-aliasing-bogus-pta-1.c: New testcase.

From-SVN: r143374
2009-01-14 16:45:22 +00:00
Richard Guenther
b3b30b2401 re PR tree-optimization/38445 (ICE in tree-ssa-struct-alias when compiling grub-0.97)
2008-12-09  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/38445
	* tree-ssa-structalias.c (emit_pointer_definition): Only visit
	names once.
	(emit_alias_warning): Adjust.

From-SVN: r142590
2008-12-09 11:06:34 +00:00
Richard Guenther
ce1b649802 re PR middle-end/36509 (gcc.dg/Wstrict-aliasing-float-ptr-int-obj.c)
2008-12-04  Richard Guenther  <rguenther@suse.de>

	PR middle-end/36509
	PR c++/38334
	* Makefile.in (tree-ssa-alias-warnings.o): Remove.
	(tree-ssa-structalias.o): Remove errors.h dependency.
	(tree-ssa-reassoc.o): Likewise.
	* tree-ssa-reassoc.c: Do not include errors.h.
	* tree-ssa-alias-warnings.c: Remove.
	* tree-ssa-alias.c (compute_may_aliases): Remove call to
	strict_aliasing_warning_backend.
	* tree-ssa-structalias.c (emit_pointer_definition): New function.
	(emit_alias_warning): Likewise.
	(set_uids_in_ptset): Warn for clear cases of type-punning.
	* tree-inline.c (remap_gimple_op_r): Preserve TREE_NO_WARNING
	on INDIRECT_REFs.

	cp/
	* typeck.c (get_member_function_from_ptrfunc): Mark the vtbl
	pointer access with TREE_NO_WARNING.

	* gcc.dg/Wstrict-aliasing-float-ptr-int-obj.c: Adjust, remove XFAIL.
	* gcc.dg/Wstrict-aliasing-converted-assigned.c: Adjust.
	* g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C: Likewise.

From-SVN: r142437
2008-12-04 15:55:25 +00:00
Richard Guenther
75af9746ba tree-ssa-structalias.c (intra_create_variable_infos): Make a constraint for the static chain parameter.
2008-11-27  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (intra_create_variable_infos): Make
	a constraint for the static chain parameter.

From-SVN: r142242
2008-11-27 09:45:56 +00:00
Daniel Berlin
3dc211827b re PR tree-optimization/37869 (PTA results wrong for "non-pointer" variables)
2008-11-25  Daniel Berlin  <dberlin@dberlin.org>
	Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/37869
	* tree-ssa-structalias.c (struct constraint_graph): Remove
	pt_used and number_incoming members.
	(build_pred_graph): Do not allocate them.
	(condense_visit): Do not use them.
	(label_visit): Likewise.
	(free_var_substitution_info): Do not free them.

Co-Authored-By: Richard Guenther <rguenther@suse.de>

From-SVN: r142213
2008-11-26 09:46:23 +00:00
Richard Guenther
51c869cac9 tree.def (COMPLEX_TYPE): Constrain element type.
2008-10-22  Richard Guenther  <rguenther@suse.de>

	* tree.def (COMPLEX_TYPE): Constrain element type.
	* tree.c (build_complex_type): Assert that.
	* tree-ssa-structalias.c (could_have_pointers): Complex types
	cannot have pointers.

From-SVN: r141299
2008-10-22 17:40:29 +00:00
Richard Guenther
13c6bff447 tree-ssa-structalias.c (create_variable_info_for): Do not create fields for heap vars or vars with a noalias state.
2008-08-29  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (create_variable_info_for): Do not
	create fields for heap vars or vars with a noalias state.
	For NO_ALIAS_ANYTHING variables add a self-constraint, not one
	from ESCAPED.

        * gfortran.fortran-torture/compile/20080806-1.f90: New testcase.

From-SVN: r139765
2008-08-29 11:47:01 +00:00
Richard Guenther
443aa7d576 re PR middle-end/37236 (ICE: in mark_operand_necessary, at tree-ssa-dce.c:242)
2008-08-29  Richard Guenther  <rguenther@suse.de>

	PR middle-end/37236
	* tree-ssa-structalias.c (intra_create_variable_infos): Mark
	PARAM_NOALIAS tags with is_heapvar.
	* tree-ssa-operands.c (access_can_touch_variable): Offset
	based tests do not apply for heapvars.  Fix offset test.

	* gfortran.fortran-torture/compile/pr37236.f: New testcase.

From-SVN: r139763
2008-08-29 11:40:47 +00:00
Tomas Bily
1a87cf0c4c tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to
* tree.h (IS_CONVERT_EXPR_CODE_P): Renamed to
        * CONVERT_EXPR_CODE_P.
        * tree-ssa-threadedge.c (simplify_control_stmt_condition): Use
        CONVERT_EXPR_P.
        * tree-data-ref.c (split_constant_offset_1): Likewise.
        * tree-inline.c (estimate_operator_cost): Use CASE_CONVERT.
        * tree-sra.c (sra_walk_expr): Likewise.
        * matrix-reorg.c (ssa_accessed_in_assign_rhs): Likewise.
        * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.
        * gimple.h (gimple_assign_cast_p): Use CONVERT_EXPR_CODE_P.
        * tree-ssa-structalias.c (find_func_aliases, find_func_aliases):
        * Likewise.
        * gimple.c (gimple_assign_unary_nop_p): Likewise.
        * tree-vect-transform.c (vectorizable_type_demotion)
        (vectorizable_type_promotion): Likewise.
        * tree-inline.c (expand_call_inline): 
        * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
        (forward_propagate_addr_expr_1, forward_propagate_comparison)
        (tree_ssa_forward_propagate_single_use_vars): Likewise.
        * expr.c (expand_expr_real_1): Likewise.
        * tree-ssa-dom.c (hashable_expr_equal_p,
        * iterative_hash_hashable_expr)
        (gimple_assign_unary_useless_conversion_p): Likewise.
        * tree-stdarg.c (execute_optimize_stdarg): Likewise.
        * tree-ssa-ccp.c (ccp_fold, fold_gimple_assign): Likewise.
        * fold-const.c (fold_unary): Likewise.
        * tree.h (CONVERT_EXPR_P): Likewise.
        * tree.c (simple_cst_equal, iterative_hash_expr): Likewise.
        * tree-ssa-loop-im.c (rewrite_bittest): Likewise.
        * tree-vrp.c: 
        (register_edge_assert_for_2, extract_range_from_unary_expr)
        (register_edge_assert_for_1): Likewise.

        * cp/tree.c (cp_tree_equal): Likewise.

From-SVN: r139204
2008-08-18 18:23:47 +02:00
Kaveh R. Ghazi
82d6e6fc38 builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
* builtins.c (expand_builtin_profile_func): Avoid C++ keywords.
	* calls.c (avoid_likely_spilled_reg): Likewise.
	* cfgexpand.c (gimple_assign_rhs_to_tree): Likewise.
	* cgraph.c (cgraph_clone_edge, cgraph_clone_node): Likewise.
	* config/i386/i386.c (ix86_expand_special_args_builtin,
	ix86_secondary_reload): Likewise.
	* except.c (struct eh_region, gen_eh_region_catch,
	remove_unreachable_regions, duplicate_eh_regions,
	assign_filter_values, build_post_landing_pads,
	sjlj_find_directly_reachable_regions, remove_eh_handler,
	reachable_next_level, foreach_reachable_handler,
	can_throw_internal_1, can_throw_external_1,
	collect_one_action_chain): Likewise.
	* expr.c (expand_expr_real_1, vector_mode_valid_p): Likewise.
	* fold-const.c (twoval_comparison_p, eval_subst): Likewise.
	* function.c (update_temp_slot_address, instantiate_new_reg,
	instantiate_virtual_regs_in_rtx,
	instantiate_virtual_regs_in_insn): Likewise.
	* gimple.c (extract_ops_from_tree, gimple_seq_copy): Likewise.
	* gimplify.c (gimplify_call_expr, gimplify_init_constructor,
	gimplify_cleanup_point_expr): Likewise.
	* ipa-cp.c (ipcp_lattice_changed): Likewise.
	* passes.c (next_pass_1): Likewise.
	* print-tree.c (print_node_brief, print_node): Likewise.
	* profile.c (branch_prob): Likewise.
	* tree-dump.c (dump_register): Likewise.
	* tree-eh.c (replace_goto_queue_cond_clause, lower_catch):
	Likewise.
	* tree-inline.c (remap_ssa_name, remap_type_1, remap_blocks,
	copy_statement_list, remap_gimple_op_r, copy_tree_body_r,
	copy_edges_for_bb, copy_cfg_body, copy_tree_r,
	copy_arguments_for_versioning, copy_static_chain): Likewise.
	* tree-into-ssa.c (names_replaced_by, add_to_repl_tbl,
	add_new_name_mapping, register_new_name_mapping): Likewise.
	* tree-mudflap.c (mf_xform_derefs): Likewise.
	* tree-predcom.c (struct chain, dump_chain, replace_ref_with,
	get_init_expr, combine_chains): Likewise.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* tree-ssa-structalias.c (create_variable_info_for): Likewise.
	* tree-vrp.c (simplify_cond_using_ranges): Likewise.
	* tree.c (substitute_in_expr, iterative_hash_expr): Likewise.
	* value-prof.c (gimple_duplicate_stmt_histograms): Likewise.

From-SVN: r138809
2008-08-06 15:57:09 +00:00
Richard Guenther
1961418e82 tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
2008-07-28  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-pre.c (insert_into_preds_of_block): Remove dead code.
	(insert_fake_stores): Remove.
	(realify_fake_stores): Likewise.
	(execute_pre): Remove dead code.
	* tree-ssa-structalias.c (get_constraint_for_1): Remove tcc_unary
	case.
	(find_func_aliases): Deal with it here instead.
	Re-enable gcc_unreachable call.

From-SVN: r138213
2008-07-28 18:29:04 +00:00
Richard Biener
726a989a8b backport: ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
2008-07-28  Richard Guenther  <rguenther@suse.de>

	Merge from gimple-tuples-branch.

	* ChangeLog.tuples: ChangeLog from gimple-tuples-branch.
	* gimple.def: New file.
	* gsstruct.def: Likewise.
	* gimple-iterator.c: Likewise.
	* gimple-pretty-print.c: Likewise.
	* tree-gimple.c: Removed.  Merged into ...
	* gimple.c: ... here.  New file.
	* tree-gimple.h: Removed.  Merged into ...
	* gimple.h: ... here.  New file.

	* Makefile.in: Add dependencies on GIMPLE_H and tree-iterator.h.
	* configure.ac: Added support for ENABLE_GIMPLE_CHECKING and the
	--enable-checking=gimple flag.
	* config.in: Likewise.
	* configure: Regenerated.

	* tree-ssa-operands.h: Tuplified.
	* tree-vrp.c: Likewise.
	* tree-loop-linear.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-ssa-loop-im.c: Likewise.
	* tree-dump.c: Likewise.
	* tree-complex.c: Likewise.
	* cgraphbuild.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa-loop-niter.c: Likewise.
	* tree-pretty-print.c: Likewise.
	* tracer.c: Likewise.
	* gengtype.c: Likewise.
	* tree-loop-distribution.c: Likewise.
	* tree-ssa-loop-unswitch.c: Likewise.
	* cgraph.c: Likewise.
	* cgraph.h: Likewise.
	* tree-ssa-loop-manip.c: Likewise.
	* value-prof.c: Likewise.
	* tree-ssa-loop-ch.c: Likewise.
	* tree-tailcall.c: Likewise.
	* value-prof.h: Likewise.
	* tree.c: Likewise.
	* tree.h: Likewise.
	* tree-pass.h: Likewise.
	* ipa-cp.c: Likewise.
	* tree-scalar-evolution.c: Likewise.
	* tree-scalar-evolution.h: Likewise.
	* target.h: Likewise.
	* lambda-mat.c: Likewise.
	* tree-phinodes.c: Likewise.
	* diagnostic.h: Likewise.
	* builtins.c: Likewise.
	* tree-ssa-alias-warnings.c: Likewise.
	* cfghooks.c: Likewise.
	* fold-const.c: Likewise.
	* cfghooks.h: Likewise.
	* omp-low.c: Likewise.
	* tree-ssa-dse.c: Likewise.
	* ipa-reference.c: Likewise.
	* tree-ssa-uncprop.c: Likewise.
	* toplev.c: Likewise.
	* tree-gimple.c: Likewise.
	* tree-gimple.h: Likewise.
	* tree-chrec.c: Likewise.
	* tree-chrec.h: Likewise.
	* tree-ssa-sccvn.c: Likewise.
	* tree-ssa-sccvn.h: Likewise.
	* cgraphunit.c: Likewise.
	* tree-ssa-copyrename.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-loop-ivopts.c: Likewise.
	* tree-nomudflap.c: Likewise.
	* tree-call-cdce.c: Likewise.
	* ipa-pure-const.c: Likewise.
	* c-format.c: Likewise.
	* tree-stdarg.c: Likewise.
	* tree-ssa-math-opts.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-nrv.c: Likewise.
	* tree-ssa-propagate.c: Likewise.
	* ipa-utils.c: Likewise.
	* tree-ssa-propagate.h: Likewise.
	* tree-ssa-alias.c: Likewise.
	* gimple-low.c: Likewise.
	* tree-ssa-sink.c: Likewise.
	* ipa-inline.c: Likewise.
	* c-semantics.c: Likewise.
	* dwarf2out.c: Likewise.
	* expr.c: Likewise.
	* tree-ssa-loop-ivcanon.c: Likewise.
	* predict.c: Likewise.
	* tree-ssa-loop.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-ssa-address.c: Likewise.
	* tree-ssa-ifcombine.c: Likewise.
	* matrix-reorg.c: Likewise.
	* c-decl.c: Likewise.
	* tree-eh.c: Likewise.
	* c-pretty-print.c: Likewise.
	* lambda-trans.c: Likewise.
	* function.c: Likewise.
	* langhooks.c: Likewise.
	* ebitmap.h: Likewise.
	* tree-vectorizer.c: Likewise.
	* function.h: Likewise.
	* langhooks.h: Likewise.
	* tree-vectorizer.h: Likewise.
	* ipa-type-escape.c: Likewise.
	* ipa-type-escape.h: Likewise.
	* domwalk.c: Likewise.
	* tree-if-conv.c: Likewise.
	* profile.c: Likewise.
	* domwalk.h: Likewise.
	* tree-data-ref.c: Likewise.
	* tree-data-ref.h: Likewise.
	* tree-flow-inline.h: Likewise.
	* tree-affine.c: Likewise.
	* tree-vect-analyze.c: Likewise.
	* c-typeck.c: Likewise.
	* gimplify.c: Likewise.
	* coretypes.h: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* calls.c: Likewise.
	* tree-ssa-coalesce.c: Likewise.
	* tree.def: Likewise.
	* tree-dfa.c: Likewise.
	* except.c: Likewise.
	* except.h: Likewise.
	* cfgexpand.c: Likewise.
	* tree-cfgcleanup.c: Likewise.
	* tree-ssa-pre.c: Likewise.
	* tree-ssa-live.c: Likewise.
	* tree-sra.c: Likewise.
	* tree-ssa-live.h: Likewise.
	* tree-predcom.c: Likewise.
	* lambda.h: Likewise.
	* tree-mudflap.c: Likewise.
	* ipa-prop.c: Likewise.
	* print-tree.c: Likewise.
	* tree-ssa-copy.c: Likewise.
	* ipa-prop.h: Likewise.
	* tree-ssa-forwprop.c: Likewise.
	* ggc-page.c: Likewise.
	* c-omp.c: Likewise.
	* tree-ssa-dce.c: Likewise.
	* tree-vect-patterns.c: Likewise.
	* tree-ssa-ter.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-ssa.c: Likewise.
	* lambda-code.c: Likewise.
	* tree-ssa-loop-prefetch.c: Likewise.
	* tree-inline.c: Likewise.
	* tree-inline.h: Likewise.
	* tree-iterator.c: Likewise.
	* tree-optimize.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-vect-transform.c: Likewise.
	* tree-object-size.c: Likewise.
	* tree-outof-ssa.c: Likewise.
	* cfgloop.c: Likewise.
	* system.h: Likewise.
	* tree-profile.c: Likewise.
	* cfgloop.h: Likewise.
	* c-gimplify.c: Likewise.
	* c-common.c: Likewise.
	* tree-vect-generic.c: Likewise.
	* tree-flow.h: Likewise.
	* c-common.h: Likewise.
	* basic-block.h: Likewise.
	* tree-ssa-structalias.c: Likewise.
	* tree-switch-conversion.c: Likewise.
	* tree-ssa-structalias.h: Likewise.
	* tree-cfg.c: Likewise.
	* passes.c: Likewise.
	* ipa-struct-reorg.c: Likewise.
	* ipa-struct-reorg.h: Likewise.
	* tree-ssa-reassoc.c: Likewise.
	* cfgrtl.c: Likewise.
	* varpool.c: Likewise.
	* stmt.c: Likewise.
	* tree-ssanames.c: Likewise.
	* tree-ssa-threadedge.c: Likewise.
	* langhooks-def.h: Likewise.
	* tree-ssa-operands.c: Likewise.
	* config/alpha/alpha.c: Likewise.
	* config/frv/frv.c: Likewise.
	* config/s390/s390.c: Likewise.
	* config/m32c/m32c.c: Likewise.
	* config/m32c/m32c-protos.h: Likewise.
	* config/spu/spu.c: Likewise.
	* config/sparc/sparc.c: Likewise.
	* config/i386/i386.c: Likewise.
	* config/sh/sh.c: Likewise.
	* config/xtensa/xtensa.c: Likewise.
	* config/stormy16/stormy16.c: Likewise.
	* config/ia64/ia64.c: Likewise.
	* config/rs6000/rs6000.c: Likewise.
	* config/pa/pa.c: Likewise.
	* config/mips/mips.c: Likewise.

From-SVN: r138207
2008-07-28 14:33:56 +00:00
Jan Hubicka
7e8b322aa0 cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
* cgraphbuild.c (record_reference): Drop non-unit-at-a-time code.
	(build_cgraph_edges): Likewise.
	* cgraph.c (cgraph_node): Do not update assembler hash.
	(cgraph_remove_node): Drop non-unit-at-a-time code.
	* tree-pass.h (pass_O0_always_inline): Remove.
	* ipa-reference.c (gate_reference): Remove unit-at-a-time check.
	* toplev.c (process_options): Flag unit-at-a-time does not imply
	no section anchors.
	* cgraphunit.c: Update comments.
	(decide_is_function_needed): Drop non-unit-at-a-time mode.
	(cgraph_assemble_pending_functions): Remove.
	(cgraph_reset_node): Drop non-unit-at-a-time code.
	(cgraph_finalize_function): Likewise.
	(cgraph_analyze_function): Likewise.
	(cgraph_finalize_compilation_unit): Likewise.
	(cgraph_expand_function): Likewise.
	(cgraph_optimize): Likesise.
	(save_inline_function_body): Likewise.
	* ipa-pure-const.c (gate_pure_const): Drop flag_unit_at_a_time check.
	* tree-ssa-alias.c (maybe_be_aliased): Likewise.
	* ipa-inline.c: Update comments.
	(enum inlining_mode): remove INLINE_SPEED.
	(cgraph_clone_inlined_nodes): Drop unit-at-a-time check.
	(cgraph_mark_inline_edge): Likewise.
	(try_inline): Likewise.
	(cgraph_decide_inlining_incrementally): Likewise.
	(cgraph_gate_inlining): Remove.
	(cgraph_early_inlining): Remove flag_unit_at_a_time checks.
	(cgraph_gate_early_inlining): Likewise.
	(gate_inline_passes): Remove.
	(pass_inline_parameters, pass_ipa_inline): Remove gates.
	(cgraph_gate_O0_always_inline, cgraph_O0_always_inline, 
	pass_O0_always_inline): Remove.
	* c-pch.c (c_pch_matching): Remove -funit-at-a-time.
	* dwarf2out.c (reference_to_unused): Remove flag_unit_at_a_time check.
	* opts.c (no_unit_at_a_time_default): Remove.
	(decode_options): Remove flag_unit_at_a_time reset and warning.
	* opts.h (no_unit_at_a_time_default): Remove.
	* c-decl.c (diagnose_mismatched_decls): Do not require inline keyword
	early in GNU dialect.
	(merge_decls): Update comment; drop unit-at-a-time check.
	(finish_decl): Likewise.
	(grok_declaration): Remove flag_inline_trees code.
	(finish_functions): Return on function returning non-void on all
	statics.
	* ipa-tye-escape.c (gate_type_escape_vars): Remove.
	* cfgexpand.c (expand_one_static_var): Remove.
	(expand_one_var): Remove expand_one_static_var call.
	(expand_used_vars_for_block): Remove flag_unit_a_time check.
	* c-opts.c (c_common_post_options): Remove flag_inline_trees code
	and flag_unit_at_a-time compatibility checks.
	* varasm.c (assemble_alias): Remove flag_unit_at_a_time check.
	* tree-inline.c (flag_inline_trees): Remove.
	(inlinable_function_p): Don't check it.
	(expand_call_inline): Remove non-unit-at-a-time code.
	* tree-inline.h (flag_inline_trees): Remove.
	* tree-optimize.c (execute_early_local_optimizations): Remove
	unit-at-a-time checks.
	(tree_rest_of_compilation): Likewise.
	* combine.c (setup_incoming_promotions): Likewise.
	* tree-profile.c (tree_gen_ic_func_profiler): Likewise.
	* tree-ssa-structalias.c (delete_points_to_sets): Likewise.
	* passes.c (pass_inline_parameters): Update comments; remove
	O0_alwaysinline pass.
	(execute_one_ipa_transform_pass): Do not reset in_gimple_form.
	(execute_one_pass): Likewise.
	* i386.c (ix86_function_regparm): Remove unit-at-a-time check.
	(ix86_function_sseregparm): Likewise.
	* arm.c (arm_function_in_section_p): Likewise.
	* bfin.c (bfin_load_pic_reg, bfin_function_ok_for_sibcall): Likewise.
	* varpool.c: Update comments.
	(decide_is_variable_needed): Remove unit-at-a-time checks.
	(varpool_finalize_decl): Likewise.

	* ada/utils.c (end_subprog_body): Remove inline trees check.
	* ada/misc.c (gnat_post_options): Do not set flag_inline_trees.

	* fortran/options.c (gfc_post_options): Remove flag_unline_trees code.

	* gcc.dg/winline-4.c: Remove.
	* gcc.dg/pch/valid-3.hs: Remove.
	* gcc.dg/pch/valid-3.c: Remove.
	* g++.old-deja/g++.brendan/crash52.C: Accept returning void warning
	* g++.old-deja/g++.jason/report.C: Likewise.
	* testsuite/g++.dg/warn/pr23075.C: We get returning void warning
	instead of control flow warning.


	* cp/decl.c (duplicate_decls): Update comment and unit-at-a-time.
	(grogfndecl): Drop flag_inline_trees code.
	* cp/pt.c (instantiate_decl): Drop flag_iline_trees code.
	* cp/lex.c (cxx_init): Do not set unit-at-a-time.


	* java/decl.c: Include cgraph.h
	(end_java_method): Remove non-unit-at-a-time code.
	(java_mark_decl_local): Likewise; sanity check that we don't touch
	finalized nodes.

From-SVN: r138140
2008-07-25 13:11:32 +00:00
Fernando Pereira
fc93bcb6d5 tree-ssa-structalias.c (compute_points_to_sets): Add call to dump_constraint_graph.
2008-07-07  Fernando Pereira <fernando@cs.ucla.edu>

        * tree-ssa-structalias.c (compute_points_to_sets): Add call to
        dump_constraint_graph.
        (dump_constraint_edge): New function.
        (dump_constraint_graph): New function.
        (debug_constraint_graph): New function.
        (dump_constraint): Removed useless comparison.
        * tree-ssa-structalias.h (dump_constraint_edge): Declare.
        (dump_constraint_graph): Declare.
        (debug_constraint_graph): Declare.
        * tree-dump.c (struct dump_option_value_info): Declare
        TDF_GRAPH.

From-SVN: r137597
2008-07-07 20:17:37 +00:00
Richard Guenther
bf87f41cae tree-ssa-structalias.h (set_used_smts): Remove.
2008-07-07  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.h (set_used_smts): Remove.
	* tree-ssa-structalias.c (used_smts): Likewise.
	(set_used_smts): Likewise.
	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Remove
	call to set_used_smts.

From-SVN: r137574
2008-07-07 15:52:42 +00:00
Richard Guenther
e5bae89b99 tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
2008-07-07  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (struct variable_info): Add is_full_var flag.
	(new_var_info): Set it to false.
	(solution_set_add): Correctly handle pointers outside a var and
	inside a field.
	(type_safe): Treat variables with is_full_var properly.
	(do_sd_constraint): Likewise.
	(do_ds_constraint): Likewise.
	(process_constraint): Remove zeroing offset for !use_field_sensitive.
	(get_constraint_for_ptr_offset): New function.
	(get_constraint_for_component_ref): For addresses at least include
	the last field of the variable.  Handle is_full_vars properly.
	(get_constraint_for_1): Factor common code, handle POINTER_PLUS_EXPR.
	(handle_ptr_arith): Remove.
	(find_func_aliases): Simplify assignment handling.
	(create_function_info_for): For parameter and result varinfos set
	is_full_var flag.
	(create_variable_info_for): Set is_full_var flag whenever we
	just created a single varinfo for a decl.
	(init_alias_vars): Initialize use_field_sensitive from
	max-fields-for-field-sensitive parameter.

	* gcc.dg/torture/pta-ptrarith-1.c: New testcase.
	* gcc.dg/torture/pta-ptrarith-2.c: Likewise.
	* gcc.dg/torture/ipa-pta-1.c: Likewise.

From-SVN: r137573
2008-07-07 15:48:23 +00:00
Richard Guenther
ee7d4b57a5 tree-ssa-structalias.c (struct variable_info): Remove has_union.
2008-07-06  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (struct variable_info): Remove has_union.
	(new_var_info): Deal with it.
	(solution_set_add): Likewise.
	(bitpos_of_field): Make signed, fix.
	(struct fieldoff): Remove type and decl fields.  Make size field
	unsigned HOST_WIDE_INT.  Add has_unknown_size and may_have_pointers
	flags.
	(fieldoff_compare): Deal with it.
	(push_fields_onto_fieldstack): Remove has_union argument, glob
	adjacent non-pointer fields together.
	(create_function_info_for): Do not set has_union.
	(create_variable_info_for): Simplify.

	* gcc.dg/tree-ssa/pta-callused.c: Adjust testcase.

From-SVN: r137530
2008-07-06 18:38:15 +00:00
Richard Guenther
0e1f4c6b6f tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
2008-07-04  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (lookup_vi_for_tree): Declare.
	(do_sd_constraint): Handle a dereference of ESCAPED and CALLUSED
	properly to compute the reachability set if we do field-sensitive PTA.
	* invoke.texi (max-fields-for-field-sensitive): Document default.
	* opts.c (decode_options): Set max-fields-for-field-sensitive to
	100 for optimize >= 2.

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

From-SVN: r137453
2008-07-04 09:34:36 +00:00
Richard Guenther
795a337af6 tree-ssa-structalias.c (struct variable_info): Reorder to fill padding on 64bit hosts.
2008-07-02  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (struct variable_info): Reorder
	to fill padding on 64bit hosts.  Make collapsed_to an int.
	(get_varinfo_fc): Deal with that.
	(new_var_info): Likewise.
	(collapse_rest_of_var): Likewise.

From-SVN: r137354
2008-07-02 14:19:15 +00:00
Richard Guenther
5f0d975b0d bitmap.h (bitmap_set_bit): Return bool.
2008-07-02  Richard Guenther  <rguenther@suse.de>

	* bitmap.h (bitmap_set_bit): Return bool.
	(bitmap_clear_bit): Likewise.
	* bitmap.c (bitmap_set_bit): Return if the bit changed.  Only
	write to the bitmap if it would.
	(bitmap_clear_bit): Likewise.
	* tree-ssa-structalias.c (add_implicit_graph_edge): Use
	bitmap_set_bit return value.
	(add_pred_graph_edge): Likewise.
	(add_graph_edge): Likewise.
	(do_sd_constraint): Likewise.
	(do_ds_constraint): Likewise.

From-SVN: r137345
2008-07-02 08:07:41 +00:00
Richard Guenther
c0d459f0e6 re PR tree-optimization/36666 (ICE in process_constraint, at tree-ssa-structalias.c:2573)
2008-07-01  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/36666
	* tree-ssa-structalias.c (get_constraint_for_1): Declare.
	(get_constraint_exp_from_ssa_var): Split into ...
	(get_constraint_exp_for_temp): ... this ...
	(get_constraint_for_ssa_var): ... and that.
	Return constraint expressions for all touched sub-fields
	if the results address is not taken.
	(process_constraint): Remove assertion that aggregate
	assignments do not happen at this place.
	(get_constraint_for_component_ref): Add address_p argument.
	Return constraint expressions for all touched sub-fields
	if the results address is not taken.
	(do_deref): Use get_constraint_exp_for_temp.
	(get_constraint_for_1): Rename from ...
	(get_constraint_for): ... this.  Add the old function as
	wrapper.
	(do_structure_copy): Use get_constraint_for_1.

	* gcc.c-torture/compile/pr36666.c: New testcase.

From-SVN: r137315
2008-07-01 11:05:17 +00:00
Richard Guenther
183ae5958e re PR middle-end/36671 (gfortran.dg/associated_1.f90)
2008-06-30  Richard Guenther  <rguenther@suse.de>

	PR middle-end/36671
	* tree-ssa-structalias.c (handle_lhs_call): Add flags argument,
	handle calls from ECF_MALLOC functions.
	(handle_pure_call): ECF_MALLOC functions do not return
	call-used memory.
	(find_func_aliases): Handle all calls, adjust calls to handle_lhs_call.

From-SVN: r137271
2008-06-30 11:39:53 +00:00
Richard Guenther
faf2ecc57e tree-ssa-structalias.h (compute_points_to_sets): Adjust prototype.
2008-06-29  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.h (compute_points_to_sets): Adjust
	prototype.
	(struct alias_info): Move ...
	* tree-ssa-alias.c: ... here.
	(update_alias_info): Declare.
	(compute_may_aliases): Call it.
	(update_alias_info): New function.
	* tree-ssa-structalias.c (update_alias_info): Move ...
	* tree-ssa-alias.c (update_alias_info_1): ... here.
	* tree-ssa-structalias.c (process_constraint_1): Remove
	unused from_call argument.  Rename to ...
	(process_constraint): ... this.  Delete old wrapper.
	(make_constraint_to): Adjust callers.
	(handle_const_call): Likewise.
	(handle_pure_call): Likewise.
	(init_base_vars): Likewise.
	(handle_lhs_call): Likewise.  Remove unnecessary constraint.
	(find_func_aliases): We don't need structure copies for
	complex types.
	(make_constraint_from_anything): Remove.
	(create_variable_info_for): For globals make constraints
	from escaped, not from anything.
	(compute_points_to_sets): Do not call update_alias_info.
	(ipa_pta_execute): Use make_constraint_from.

From-SVN: r137252
2008-06-29 15:44:00 +00:00
Richard Guenther
15c151967d tree-ssa-structalias.c (callused_id, [...]): Add.
2008-06-28  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (callused_id, var_callused,
	callused_tree): Add.
	(handle_pure_call): New function.
	(find_func_aliases): Call it.
	(find_what_p_points_to): Handle the call-used set.
	(clobber_what_escaped): Likewise.
	(compute_call_used_vars): New function.
	(init_base_vars): Init the call-used variable.
	(do_sd_constraint): Do not propagate the solution from CALLUSED
	but use CALLUSED as a placeholder.
	(solve_graph): Likewise.
	* tree-flow-inline.h (gimple_call_used_vars): New function.
	* tree-flow.h (struct gimple_df): Add call_used_vars bitmap.
	(compute_call_used_vars): Declare.
	* tree-ssa-alias.c (set_initial_properties): Call
	compute_call_used_vars.
	(reset_alias_info): Clear call-used variables.
	(add_call_clobber_ops): Assert we are not called for const/pure
	functions.  Remove handling of them.
	(add_call_read_ops): Handle pure functions by adding the
	call-used set of variables as VUSEs.
	* tree-ssa.c (init_tree_ssa): Allocate call-used bitmap.
	(delete_tree_ssa): Free it.
	* tree-dfa.c (remove_referenced_var): Clear the var from the
	call-used bitmap.

	* gcc.dg/tree-ssa/pr24287.c: Remove XFAIL.

From-SVN: r137222
2008-06-28 13:17:20 +00:00
Richard Guenther
b7091901cd re PR tree-optimization/36400 (points-to results wrong)
2008-06-27  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/36400
	PR tree-optimization/36373
	PR tree-optimization/36344
	* tree-ssa-structalias.c (var_escaped, escaped_tree, escaped_id,
	var_nonlocal, nonlocal_tree, nonlocal_id): New globals
	(update_alias_info): Remove call clobbering code.
	(make_constraint_to): New helper function.
	(make_escape_constraint): Likewise.
	(handle_rhs_call): Use it on all pointer containing arguments.
	Also mark the static chain escaped.
	(handle_lhs_call): Make constraints from NONLOCAL and ESCAPED
	instead of ANYTHING.
	(make_constraint_from): New helper split out from ...
	(make_constraint_from_anything): ... here.
	(find_func_aliases): Add constraints for escape sites.
	(intra_create_variable_infos): Make constraints from NONLOCAL
	for parameters.
	(find_what_p_points_to): Interpret NONLOCAL and ESCAPED the same
	as ANYTHING.
	(clobber_what_p_points_to): Remove.
	(clobber_what_escaped): New function.
	(init_base_vars): Init NONLOCAL and ESCAPED.
	(do_sd_constraint): Do not propagate the solution from ESCAPED
	but use ESCAPED as a placeholder.
	(solve_graph): Likewise.
	* tree-flow.h (clobber_what_p_points_to): Remove.
	(clobber_what_escaped): Declare.
	* tree-ssa-alias.c (set_initial_properties): Call it.
	Remove code clobbering escaped pointers.

	* gcc.dg/torture/pr36373-1.c: New testcase.
	* gcc.dg/torture/pr36373-2.c: Likewise.
	* gcc.dg/torture/pr36373-3.c: Likewise.
	* gcc.dg/torture/pr36373-4.c: Likewise.
	* gcc.dg/torture/pr36373-5.c: Likewise.
	* gcc.dg/torture/pr36373-6.c: Likewise.
	* gcc.dg/torture/pr36373-7.c: Likewise.
	* gcc.dg/torture/pr36373-8.c: Likewise.
	* gcc.dg/torture/pr36373-9.c: Likewise.
	* gcc.dg/torture/pr36373-10.c: Likewise.
	* gcc.dg/torture/pr36400.c: Likewise.
	* gcc.c-torture/execute/pta-field-1.c: Likewise.
	* gcc.c-torture/execute/pta-field-2.c: Likewise.
	* gcc.dg/tree-ssa/loadpre8.c: Remove XFAIL.
	* gcc.dg/tree-ssa/pr24287.c: XFAIL.

From-SVN: r137197
2008-06-27 18:53:43 +00:00
Daniel Berlin
d1caaa7618 Don't mark statements modified when we are in ipa mode
From-SVN: r137189
2008-06-27 16:11:35 +00:00
Richard Guenther
185ab3b677 tree-ssa-structalias.c (fieldoff_compare): Make sure to not overflow the result type.
2008-06-25  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (fieldoff_compare): Make sure to
	not overflow the result type.

	* gcc.c-torture/compile/20080625-1.c: New testcase.

From-SVN: r137104
2008-06-25 11:13:44 +00:00
Richard Guenther
b377855627 re PR tree-optimization/36345 (TBAA-pruning of points-to sets ineffective)
2008-06-12  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/36345
	* tree-flow.h (struct ptr_info_def): Align escape_mask,
	add memory_tag_needed flag.
	(may_alias_p): Declare.
	* tree-ssa-alias.c (may_alias_p): Export.
	(set_initial_properties): Use memory_tag_needed flag.
	(update_reference_counts): Likewise.
	(reset_alias_info): Reset memory_tag_needed flag.
	(create_name_tags): Check memory_tag_needed flag.
	(dump_points_to_info_for): Dump it.
	* tree-ssa-structalias.c (struct variable_info): Remove
	directly_dereferenced flag.
	(new_var_info): Do not initialize it.
	(process_constraint_1): Do not set it.
	(update_alias_info): Set is_dereferenced flag.
	(set_uids_in_ptset): Use may_alias_p.
	(set_used_smts): Check memory_tag_needed flag.
	(find_what_p_points_to): Likewise.  Pass is_dereferenced flag.
	* tree-ssa-alias.c (verify_flow_sensitive_alias_info): Check
	memory_tag_needed flag.
	* tree-ssa-alias-warnings.c (dsa_named_for): Try to recover
	from broken design.

	* gcc.c-torture/execute/20020619-1.c: Remove broken part of
	the testcase.

From-SVN: r136695
2008-06-12 10:21:45 +00:00
Richard Guenther
9f09b13fd4 tree-ssa-structalias.c (merge_smts_into): Remove.
2008-06-06  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (merge_smts_into): Remove.
	(find_what_p_points_to): Do not bother to compute the
	points-to set for pt_anything pointers.
	* tree-ssa-operands.c (get_addr_dereference_operands): No NMT
	for pt_anything pointers is ok.

	* gcc.dg/tree-ssa/alias-18.c: XFAIL some sub-tests.

From-SVN: r136428
2008-06-06 10:11:44 +00:00
Richard Guenther
0e19bf429e tree-ssa-structalias.c (handle_ptr_arith): Correctly handle negative or non-representable offsets.
2008-06-04  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (handle_ptr_arith): Correctly handle
	negative or non-representable offsets.

	* gcc.c-torture/execute/20080604-1.c: New testcase.

From-SVN: r136351
2008-06-04 08:28:20 +00:00
Richard Guenther
db73680033 tree-ssa-structalias.c (find_func_aliases): Add constraints for the lhs of calls if the return type contains pointers.
2008-06-03  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (find_func_aliases): Add constraints
	for the lhs of calls if the return type contains pointers.

From-SVN: r136315
2008-06-03 10:55:00 +00:00
Richard Guenther
2f571334ff re PR tree-optimization/36343 (Wrong code due to bad TBAA pruning of points-to-sets and use in call clobbering)
2008-05-29  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/36343
	PR tree-optimization/36346
	PR tree-optimization/36347
	* tree-flow.h (clobber_what_p_points_to): Declare.
	* tree-ssa-structalias.c (set_uids_in_ptset): Whether the
	pointed-to variable is dereferenced is irrelevant to whether
	the pointer can access the pointed-to variable.
	(clobber_what_p_points_to): New function.
	* tree-ssa-alias.c (set_initial_properties): Use it.
	* tree-ssa.c (verify_flow_sensitive_alias_info): Adjust
	call clobber check for NMTs.

	* gcc.c-torture/execute/pr36343.c: New testcase.

From-SVN: r136152
2008-05-29 10:31:58 +00:00
Tomas Bily
1043771b10 pa.c (reloc_needed): Use CASE_CONVERT.
* config/pa/pa.c (reloc_needed): Use CASE_CONVERT.

        * tree-cfg.c (verify_expr, verify_gimple_expr): Likewise.

        * tree-ssa-structalias.c (get_constraint_for): Likewise.

        * c-common.c (c_common_truthvalue_conversion): Likewise.

        * tree-object-size.c (compute_object_offset): Likewise.

        * tree-inline.c (estimate_num_insns_1): Likewise.

        * varasm.c (const_hash_1, compare_constant, copy_constant)
        (compute_reloc_for_constant, output_addressed_constants)
        (initializer_constant_valid_p): Likewise.

        * c-omp.c (check_omp_for_incr_expr): Likewise.

        * gimplify.c (gimplify_expr): Likewise.

        * c-typeck.c (c_finish_return): Likewise.

        * tree-vectorizer.c (supportable_widening_operation)
        (supportable_narrowing_operation): Likewise.

        * c-pretty-print.c (pp_c_cast_expression, pp_c_expression):
        Likewise.

        * matrix-reorg.c (can_calculate_expr_before_stmt): Likewise.

        * expr.c (highest_pow2_factor, expand_expr_real_1): Likewise.

        * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info)
        (descr_info_loc): Likewise.

        * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.

        * fold-const.c (operand_equal_p, make_range, extract_muldiv_1)
        (fold_unary): Likewise.

        * builtins.c (get_pointer_alignment): Likewise.

        * tree-scalar-evolution.c (interpret_rhs_modify_stmt)
        (instantiate_parameters_1): Likewise.

        * tree.c (expr_align, stabilize_reference): Likewise.

        * tree-pretty-print.c (dump_generic_node, op_prio): Likewise.

        * tree-ssa-loop-niter.c (derive_constant_upper_bound): Likewise.

        * convert.c (strip_float_extensions): Use CONVERT_EXPR_P.

        * tree-ssa-threadedge.c (simplify_control_stmt_condition):
        Likewise.

        * config/alpha/alpha.c (va_list_skip_additions): Likewise.

        * c-common.c (c_alignof_expr, check_function_arguments_recurse):
        Likewise.

        * tree-ssa.c (tree_ssa_useless_type_conversion): Likewise.

        * varasm.c (initializer_constant_valid_p, output_constant):
        Likewise.

        * tree-ssa-forwprop.c (get_prop_source_stmt, can_propagate_from)
        (forward_propagate_addr_expr_1, forward_propagate_addr_expr)
        (forward_propagate_comparison)
        (tree_ssa_forward_propagate_single_use_vars): Likewise.

        * cfgexpand.c (discover_nonconstant_array_refs_r): Likewise.

        * emit-rtl.c (component_ref_for_mem_expr)
        (set_mem_attributes_minus_bitpos): Likewise.

        * tree-ssa-phiopt.c (conditional_replacement): Likewise.

        * gimplify.c (gimplify_conversion, goa_lhs_expr_p,
        gimplify_expr): Likewise.

        * c-typeck.c (default_function_array_conversion,
        build_indirect_ref)
        (build_function_call, pointer_diff, build_compound_expr)
        (c_finish_return): Likewise.

        * tree-vect-analyze.c (vect_determine_vectorization_factor):
        Likewise.

        * matrix-reorg.c (get_inner_of_cast_expr,
        may_flatten_matrices_1): Likewise.

        * tree-ssa-ifcombine.c (recognize_single_bit_test): Likewise.

        * expr.c (is_aligning_offset): Likewise.

        * tree-ssa-alias.c (is_escape_site): Likewise.

        * tree-stdarg.c (va_list_counter_bump, check_va_list_escapes)
        (check_all_va_list_escapes): Likewise.

        * tree-ssa-loop-ivopts.c (determine_base_object)
        (determine_common_wider_type): Likewise.

        * dojump.c (do_jump): Likewise.

        * tree-ssa-sccvn.c (simplify_unary_expression): Likewise.

        * tree-gimple.c (is_gimple_cast): Likewise.

        * fold-const.c (decode_field_reference, )
        (fold_sign_changed_comparison, fold_unary, fold_comparison)
        (fold_binary): Likewise.

        * tree-ssa-alias-warnings.c (find_alias_site_helper)
        (already_warned_in_frontend_p): Likewise.

        * builtins.c (get_memory_rtx, fold_builtin_next_arg): Likewise.

        * tree.c (really_constant_p, get_unwidened): Likewise.

        * tree-ssa-loop-niter.c (expand_simple_operations): Likewise.

        * tree-ssa-loop-im.c (rewrite_bittest): Likewise.

        * tree-vrp.c (register_edge_assert_for_2,
        register_edge_assert_for_1): Likewise.

        * tree.h (STRIP_NOPS, STRIP_SIGN_NOPS, STRIP_TYPE_NOPS): Use
        CONVERT_EXPR_P.
        (CONVERT_EXPR_P): Define.
        (CASE_CONVERT): Define.

From-SVN: r135114
2008-05-09 16:57:39 +02:00
Richard Guenther
31de5b771a tree-flow-inline.h (var_can_have_subvars): Move ...
2008-05-08  Richard Guenther  <rguenther@suse.de>

	* tree-flow-inline.h (var_can_have_subvars): Move ...
	* tree-ssa-structalias.c (var_can_have_subvars): ... here.
	* tree-flow.h (var_can_have_subvars): Remove.
	(push_fields_onto_fieldstack): Remove.
	(sort_fieldstack): Likewise.
	(struct fieldoff): Move ...
	* tree-ssa-structalias.c (struct fieldoff): ... here.  Remove
	alias_set and base_for_components fields.
	(sort_fieldstack): Make static.
	(push_fields_onto_fieldstack): Likewise.  Remove code that
	handles anything but RECORD_TYPEs.  Remove alias_set and
	base_for_components handling.
	(create_variable_info_for): Adjust.

From-SVN: r135110
2008-05-09 09:32:51 +00:00
Richard Guenther
5611cf0bf5 tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
2008-05-08  Richard Guenther  <rguenther@suse.de>

	* tree-data-ref.c (dr_analyze_alias): Do not set DR_SUBVARS.
	* tree-data-ref.h (struct dr_alias): Remove subvars field.
	(DR_SUBVARS): Remove.
	* tree-dfa.c (dump_subvars_for): Remove.
	(debug_subvars_for): Likewise.
	(dump_variable): Do not dump subvars.
	(remove_referenced_var): Do not remove subvars.
	* tree-flow-inline.h (clear_call_clobbered): SFTs no longer exist.
	(lookup_subvars_for_var): Remove.
	(get_subvars_for_var): Likewise.
	(get_subvars_at): Likewise.
	(get_first_overlapping_subvar): Likewise.
	(overlap_subvar): Likewise.
	* tree-flow.h (subvar_t): Remove.
	(struct var_ann_d): Remove subvars field.
	* tree-ssa-alias.c (mark_aliases_call_clobbered): Remove queued
	argument.  Remove special handling of SFTs.
	(compute_tag_properties): Likewise.
	(set_initial_properties): Likewise.
	(compute_call_clobbered): Likewise.
	(count_mem_refs): Likewise.
	(compute_memory_partitions): Likewise.
	(compute_flow_insensitive_aliasing): Likewise.
	(setup_pointers_and_addressables): Likewise.
	(new_type_alias): Likewise.
	(struct used_part): Remove.
	(used_portions): Likewise.
	(struct used_part_map): Likewise.
	(used_part_map_eq): Likewise.
	(used_part_map_hash): Likewise.
	(free_used_part_map): Likewise.
	(up_lookup): Likewise.
	(up_insert): Likewise.
	(get_or_create_used_part_for): Likewise.
	(create_sft): Likewise.
	(create_overlap_variables_for): Likewise.
	(find_used_portions): Likewise.
	(create_structure_vars): Likewise.
	* tree.def (STRUCT_FIELD_TAG): Remove.
	* tree.h (MTAG_P): Adjust.
	(struct tree_memory_tag): Remove base_for_components and
	unpartitionable flags.
	(struct tree_struct_field_tag): Remove.
	(SFT_PARENT_VAR): Likewise.
	(SFT_OFFSET): Likewise.
	(SFT_SIZE): Likewise.
	(SFT_NONADDRESSABLE_P): Likewise.
	(SFT_ALIAS_SET): Likewise.
	(SFT_UNPARTITIONABLE_P): Likewise.
	(SFT_BASE_FOR_COMPONENTS_P): Likewise.
	(union tree_node): Remove sft field.
	* alias.c (get_alias_set): Remove special handling of SFTs.
	* print-tree.c (print_node): Remove handling of SFTs.
	* tree-dump.c (dequeue_and_dump): Likewise.
	* tree-into-ssa.c (mark_sym_for_renaming): Likewise.
	* tree-nrv.c (dest_safe_for_nrv_p): Remove special handling of SFTs.
	* tree-predcom.c (set_alias_info): Do not set subvars.
	* tree-pretty-print.c (dump_generic_node): Do not handle SFTs.
	* tree-ssa-loop-ivopts.c (get_ref_tag): Likewise.
	* tree-ssa-operands.c (access_can_touch_variable): Likewise.
	(add_vars_for_offset): Remove.
	(add_virtual_operand): Remove special handling of SFTs.
	(add_call_clobber_ops): Likewise.
	(add_call_read_ops): Likewise.
	(get_asm_expr_operands): Likewise.
	(get_modify_stmt_operands): Likewise.
	(get_expr_operands): Likewise.
	(add_to_addressable_set): Likewise.
	* tree-ssa.c (verify_ssa_name): Do not handle SFTs.
	* tree-tailcall.c (suitable_for_tail_opt_p): Likewise.
	* tree-vect-transform.c (vect_create_data_ref_ptr): Do not
	set subvars.
	* tree.c (init_ttree): Remove STRUCT_FIELD_TAG initialization.
	(tree_code_size): Remove STRUCT_FIELD_TAG handling.
	(tree_node_structure): Likewise.
	* tree-ssa-structalias.c (set_uids_in_ptset): Remove special
	handling of SFTs.
	(find_what_p_points_to): Likewise.

From-SVN: r135077
2008-05-08 09:27:29 +00:00
Richard Guenther
1b674de053 re PR middle-end/36154 (internal compiler error: in get_constraint_for_component_ref, at tree-ssa-structalias.c:2727)
2008-05-08  Richard Guenther  <rguenther@suse.de>

	PR middle-end/36154
	* tree-ssa-structalias.c (push_fields_onto_fieldstack): Make
	sure to create a representative for trailing arrays for PTA.

	* gcc.c-torture/compile/pr36154.c: New testcase.

From-SVN: r135071
2008-05-08 08:20:45 +00:00
Richard Guenther
59e6913ad1 tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
2008-04-29  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-alias.c (finalize_ref_all_pointers): Remove.
	(compute_may_aliases): Do not call finalize_ref_all_pointers.
	(compute_flow_insensitive_aliasing): Do not treat
	PTR_IS_REF_ALL pointers special.
	(get_smt_for): Likewise.
	(may_alias_p): Re-structure.
	(is_escape_site): A ref-all pointer conversion is not an escape site.
	* tree-ssa-structalias.c (find_what_p_points_to): Do not treat
	PTR_IS_REF_ALL pointers special.
	* tree-ssa-structalias.h (struct alias_info): Remove
	ref_all_symbol_mem_tag field.
	(PTR_IS_REF_ALL): Remove.

From-SVN: r134797
2008-04-29 15:56:12 +00:00
Richard Guenther
17d2c090a1 re PR tree-optimization/27799 (adding unused char field inhibits optimization)
2008-04-23  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/27799
	PR tree-optimization/32921
	PR tree-optimization/32624
	* tree-ssa-structalias.c (merge_smts_into): Only merge the
	SMTs aliases and the tag itself into the solution.
	* tree-ssa-alias.c (compute_flow_sensitive_aliasing): Do not
	merge the points-to solution back into the SMT aliases.
	(may_alias_p): Use alias_set_subset_of instead of
	aliases_conflict_p.  A pointer which points to
	memory with alias set zero may access any variable.

	* gcc.dg/tree-ssa/pr27799.c: New testcase.
	* gcc.dg/tree-ssa/20030807-7.c: Remove xfail, scan vrp dump.

From-SVN: r134598
2008-04-23 14:08:25 +00:00
Tomas Bily
a134e5f370 tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as unreachable case.
* tree-cfg.c (verify_expr): Check for NON_LVALUE_EXPR as
        unreachable case.

        * tree-vrp.c (extract_range_from_unary_expr): Removed unused
        NON_LVALUE_EXPR.

        * tree-ssa-threadedge.c (simplify_control_stmt_condition):
        Likewise.
        
        * tree-ssa-structalias.c (get_constraint_for): Likewise.

        * tree-inline.c (estimate_num_insns_1): Likewise.

        * varasm.c (const_hash_1, compare_constant, copy_constant)
        (compute_reloc_for_constant, output_addressed_constants):
        Likewise.

        * emit-rtl.c (component_ref_for_mem_expr)
        (set_mem_attributes_minus_bitpos): Likewise.

        * expr.c (highest_pow2_factor, expand_expr_real_1, )
        (is_aligning_offset): Likewise.

        * dwarf2out.c (loc_descriptor_from_tree_1, add_bound_info):
        Likewise.

        * tree-ssa-loop-ivopts.c (may_be_nonaddressable_p): Likewise.

        * dojump.c (do_jump): Likewise.

        * builtins.c (get_pointer_alignment, get_memory_rtx)
        (integer_valued_real_p, fold_builtin_next_arg): Likewise.

        * tree-scalar-evolution.c (instantiate_parameters_1): Likewise.

From-SVN: r134591
2008-04-23 14:50:17 +02:00
Eric Botcazou
bd1f29d927 tree-ssa-structalias.c (get_constraint_for_component_ref): Do not punt for STRING_CST.
* tree-ssa-structalias.c (get_constraint_for_component_ref): Do not
	punt for STRING_CST.
	(get_constraint_for): Deal with STRING_CST here instead.

From-SVN: r134325
2008-04-15 18:22:51 +00:00
Ben Elliston
609023fff0 expmed.c (extract_split_bit_field): Remove if (0) code.
* expmed.c (extract_split_bit_field): Remove if (0) code.
	* tree-ssa-structalias.c (do_sd_constraint): Likewise.
	(do_ds_constraint): Likewise.

From-SVN: r133848
2008-04-03 06:56:03 +11:00