1. 28 Sep, 2013 1 commit
    • alloc-pool.c, [...]: Add missing whitespace before "(". · c3284718
      gcc/
      	* alloc-pool.c, asan.c, auto-inc-dec.c, basic-block.h, bb-reorder.c,
      	bitmap.c, bitmap.h, bt-load.c, builtins.c, calls.c, cfgcleanup.c,
      	cfgexpand.c, cfghooks.c, cfgloop.c, cfgloopmanip.c, cfgrtl.c, cgraph.c,
      	cgraph.h, cgraphbuild.c, cgraphclones.c, cgraphunit.c, collect2.c,
      	combine-stack-adj.c, combine.c, compare-elim.c, context.c, context.h,
      	cprop.c, cse.c, cselib.c, dbxout.c, dce.c, defaults.h, df-core.c,
      	df-problems.c, df-scan.c, df.h, diagnostic.c, double-int.c, dse.c,
      	dumpfile.c, dwarf2asm.c, dwarf2cfi.c, dwarf2out.c, emit-rtl.c,
      	errors.c, except.c, expmed.c, expr.c, file-find.c, final.c,
      	fixed-value.c, fold-const.c, function.c, fwprop.c, gcc-ar.c, gcc.c,
      	gcov-io.c, gcov-io.h, gcov.c, gcse.c, genattr-common.c, genattr.c,
      	genattrtab.c, genautomata.c, genconfig.c, genemit.c, genextract.c,
      	genflags.c, gengenrtl.c, gengtype-state.c, gengtype.c, genmodes.c,
      	genopinit.c, genoutput.c, genpeep.c, genpreds.c, genrecog.c,
      	gensupport.c, ggc-common.c, ggc-page.c, gimple-fold.c, gimple-low.c,
      	gimple-pretty-print.c, gimple-ssa-strength-reduction.c, gimple.c,
      	gimple.h, godump.c, graphite-clast-to-gimple.c,
      	graphite-optimize-isl.c, graphite-poly.h, graphite-sese-to-poly.c,
      	graphite.c, haifa-sched.c, hash-table.c, hash-table.h, hwint.c,
      	hwint.h, ifcvt.c, incpath.c, init-regs.c, input.h, intl.c, intl.h,
      	ipa-cp.c, ipa-devirt.c, ipa-inline-analysis.c, ipa-inline.c,
      	ipa-profile.c, ipa-pure-const.c, ipa-reference.c, ipa-split.c,
      	ipa-utils.c, ipa.c, ira-build.c, ira.c, jump.c, loop-doloop.c,
      	loop-init.c, loop-invariant.c, loop-iv.c, lower-subreg.c, lto-cgraph.c,
      	lto-streamer-in.c, lto-streamer-out.c, lto-wrapper.c, mcf.c,
      	mode-switching.c, modulo-sched.c, omp-low.c, optabs.c, opts.c,
      	pass_manager.h, passes.c, plugin.c, postreload-gcse.c, postreload.c,
      	predict.c, prefix.c, pretty-print.c, print-rtl.c, print-tree.c,
      	profile.c, read-md.c, real.c, real.h, recog.c, ree.c, reg-stack.c,
      	regcprop.c, reginfo.c, regmove.c, regrename.c, regs.h, regstat.c,
      	reload1.c, reorg.c, rtl.c, rtl.h, rtlanal.c, sbitmap.c, sched-rgn.c,
      	sdbout.c, sel-sched-ir.c, sel-sched.c, sparseset.c, stack-ptr-mod.c,
      	statistics.c, stmt.c, stor-layout.c, store-motion.c, streamer-hooks.h,
      	system.h, target-hooks-macros.h, targhooks.c, targhooks.h, toplev.c,
      	tracer.c, trans-mem.c, tree-browser.c, tree-call-cdce.c, tree-cfg.c,
      	tree-cfgcleanup.c, tree-complex.c, tree-data-ref.c, tree-data-ref.h,
      	tree-eh.c, tree-emutls.c, tree-flow.h, tree-if-conv.c, tree-into-ssa.c,
      	tree-iterator.c, tree-loop-distribution.c, tree-mudflap.c,
      	tree-nested.c, tree-nomudflap.c, tree-nrv.c, tree-object-size.c,
      	tree-optimize.c, tree-pass.h, tree-pretty-print.c, tree-profile.c,
      	tree-scalar-evolution.c, tree-sra.c, tree-ssa-ccp.c,
      	tree-ssa-coalesce.c, tree-ssa-copy.c, tree-ssa-copyrename.c,
      	tree-ssa-dce.c, tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c,
      	tree-ssa-ifcombine.c, tree-ssa-live.c, tree-ssa-loop-ch.c,
      	tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c, tree-ssa-loop-prefetch.c,
      	tree-ssa-loop.c, tree-ssa-math-opts.c, tree-ssa-operands.c,
      	tree-ssa-phiopt.c, tree-ssa-phiprop.c, tree-ssa-pre.c,
      	tree-ssa-reassoc.c, tree-ssa-sink.c, tree-ssa-strlen.c,
      	tree-ssa-structalias.c, tree-ssa-threadedge.c, tree-ssa-threadupdate.c,
      	tree-ssa-uncprop.c, tree-ssa-uninit.c, tree-ssa.c, tree-ssanames.c,
      	tree-stdarg.c, tree-switch-conversion.c, tree-tailcall.c,
      	tree-vect-data-refs.c, tree-vect-generic.c, tree-vect-loop-manip.c,
      	tree-vect-stmts.c, tree-vectorizer.c, tree-vectorizer.h, tree-vrp.c,
      	tree.c, tree.h, tsan.c, tsystem.h, value-prof.c, var-tracking.c,
      	varasm.c, vec.h, vmsdbgout.c, vtable-verify.c, web.c: Add missing
      	whitespace before "(".
      
      From-SVN: r203004
      Richard Sandiford committed
  2. 14 Sep, 2013 1 commit
    • tree-into-ssa.c (gate_into_ssa): New. · afdec9bd
      	* tree-into-ssa.c (gate_into_ssa): New.
      	(pass_data_build_ssa): Use it.
      	* cgraph.h (expand_thunk): Update prototype.
      	* cgraphunit.c (analyze_function): Expand thunks early.
      	(expand_thunk): Fix DECL_CONTEXT of reust_decl;
      	build proper cgraph; set in_ssa_p; clear bogus TREE_ASM_WRITTEN;
      	set lowered flag; do not add new function.
      	(assemble_thunks_and_aliases): Update.
      	* tree-ssa.c (gate_init_datastructures): New gate.
      	(pass_data_init_datastructures): Use it.
      
      From-SVN: r202592
      Jan Hubicka committed
  3. 08 Sep, 2013 1 commit
    • cgraph.h (varpool_node_hook, [...]): Declare. · 26e5b0fd
      	* cgraph.h (varpool_node_hook, varpool_node_hook_list,
      	varpool_add_node_removal_hook, varpool_add_variable_insertion_hook,
      	varpool_remove_variable_insertion_hook): Declare.
      	* varpool.c (varpool_node_hook_list): New structure.
      	(first_varpool_node_removal_hook,
      	first_varpool_variable_insertion_hook): New variables.
      	(varpool_add_node_removal_hook, varpool_remove_node_removal_hook,
      	varpool_call_node_removal_hooks, varpool_add_variable_insertion_hook,
      	varpool_remove_variable_insertion_hook,
      	varpool_call_variable_insertion_hooks): New functions.
      	(varpool_remove_node): Use it.
      
      From-SVN: r202367
      Jan Hubicka committed
  4. 06 Sep, 2013 1 commit
    • re PR middle-end/58094 (IPA devirt testsuite errors) · fc11f321
      	PR middle-end/58094
      	* cgraph.h (symtab_semantically_equivalent_p): Declare.
      	* tree-tailcall.c: Include ipa-utils.h.
      	(find_tail_calls): Use it.
      	* ipa-pure-const.c (check_call): Likewise.
      	* ipa-utils.c (recursive_call_p): New function.
      	* ipa-utils.h (recursive_call_p): Dclare.
      	* symtab.c (symtab_nonoverwritable_alias): Fix formatting.
      	(symtab_semantically_equivalent_p): New function.
      	* Makefile.in (tree-tailcall.o): Update dependencies.
      
      From-SVN: r202316
      Jan Hubicka committed
  5. 01 Sep, 2013 1 commit
    • Makefile.in: Add ipa-profile.o · 08f835dc
      	* Makefile.in: Add ipa-profile.o
      	(ipa.o, ipa-devrit.o, ipa-inline-analysis.o): Adjust dependencies.
      	* cgraph.c (struct cgraph_propagate_frequency_data,
      	cgraph_propagate_frequency_1, cgraph_propagate_frequency): Move to
      	ipa-profile.c; replace cgraph_ by ipa_ prefix.
      	* cgraph.h (cgraph_propagate_frequency): Remove.
      	* ipa-inline-analysis.c: Include ipa-utils.h; drop duplicated cfgloop.h.
      	(inline_update_callee_summaries): Update.
      	* ipa-profile.c: New file.
      	* ipa-utils.h (ipa_propagate_frequency): Declare.
      	* ipa.c: Do not include pointer-set.h, hash-table.h, lto-streamer.h,
      	data-streamer.h, value-prof.h
      	(symtab_remove_unreachable_nodes): Update profile.
      	(struct histogram_entry, histogram, histogram_pool, histogram_hash,
      	account_time_size, cmp_counts, dump_histogram,
      	ipa_profile_generate_summary, ipa_profile_write_summary,
      	ipa_profile_read_summary, ipa_profile, gate_ipa_profile,
      	pass_data_ipa_profile, pass_ipa_profile, make_pass_ipa_profile):
      	Move to ipa-profile.c
      
      From-SVN: r202154
      Jan Hubicka committed
  6. 13 Aug, 2013 1 commit
    • cgraph.c (cgraph_turn_edge_to_speculative): Return newly introduced edge; fix typo in sanity check. · 09ce3660
      	* cgraph.c (cgraph_turn_edge_to_speculative): Return newly
      	introduced edge; fix typo in sanity check.
      	(cgraph_resolve_speculation): Export; improve diagnostic.
      	(cgraph_redirect_edge_call_stmt_to_callee): Better diagnostic; cancel
      	speculation at type mismatch.
      	* cgraph.h (cgraph_turn_edge_to_speculative): Update.
      	(cgraph_resolve_speculation): Declare.
      	(symtab_can_be_discarded): New function.
      	* value-prof.c (gimple_ic_transform): Remove actual transform code.
      	* ipa-inline-transform.c (speculation_removed): New global var.
      	(clone_inlined_nodes): See if speculation can be removed.
      	(inline_call): If speculations was removed, we growths may not match.
      	* ipa-inline.c (can_inline_edge_p): Add DISREGARD_LIMITS parameter.
      	(speculation_useful_p): New function.
      	(resolve_noninline_speculation): New function.
      	(inline_small_functions): Resolve useless speculations.
      	* ipa-inline.h (speculation_useful_p): Declare
      	* ipa.c (can_replace_by_local_alias): Simplify.
      	(ipa_profile): Produce speculative calls in non-lto, too;
      	add simple cost model; produce local aliases.
      
      From-SVN: r201683
      Jan Hubicka committed
  7. 09 Aug, 2013 3 commits
    • cgraph.c (cgraph_resolve_speculation): Cut frequency to CGRAPH_FREQ_MAX. · 634ab819
      	* cgraph.c (cgraph_resolve_speculation): Cut frequency to
      	CGRAPH_FREQ_MAX.
      	(dump_cgraph_node): Dump profile-id.
      	* cgraph.h (cgraph_indirect_call_info): Add common_target_id
      	and common_target_probability.
      	* lto-cgraph.c (lto_output_edge): Stream common targets.
      	(lto_output_node): Stream profile ids.
      	(input_node): Stream profile ids.
      	(input_edge): Stream common targets.
      	* lto-streamer-in.c (fixup_call_stmt_edges_1): Fix formatting.
      	* ipa.c: Include value-prof.h
      	(ipa_profile_generate_summary): Turn indirect call statement histograms
      	into common targets.
      	(ipa_profile): Turn common targets into speculative edges.
      
      	* gcc.dg/tree-prof/crossmodule-indircall-1.c: New testcase.
      	* gcc.dg/tree-prof/crossmodule-indircall-1a.c: New testcase.
      
      From-SVN: r201639
      Jan Hubicka committed
    • cgraph.h (cgraph_node): Add profile_id. · 2fa3d31b
      	* cgraph.h (cgraph_node): Add profile_id.
      	* value-prof.c (cgraph_node_map): Turn into pointer_map.
      	(init_node_map): Rewrite to handle hashes increas of incremental
      	IDs.
      	(del_node_map): Update.
      	(find_func_by_funcdef_no): Replace by ...
      	(find_func_by_profile_id): ... this one.
      	(gimple_ic_transform): Do not remove useful histograms when
      	speculation is not done; dump info when indirect call removal
      	can happen at LTO.
      	* value-prof.h (find_func_by_profile_id, gimple_ic): Declare.
      	* gcov-io.h (__gcov_indirect_call_profiler): Replace by ...
      	(__gcov_indirect_call_profiler_v2): .. this one.
      	* profile.h (init_node_map): Update.
      	* coverage.c (coverage_compute_profile_id): New function.
      	* coverage.h (coverage_compute_profile_id): Declare.
      	* tree-profile.c (init_ic_make_global_vars): Make
      	__gcov_indirect_call_callee and  __gcov_indirect_call_counters global.
      	(gimple_init_edge_profiler): Update prototype of
      	__gcov_indirect_call_profiler.
      	(gimple_gen_ic_func_profiler): Simplify.
      	(tree_profiling): Use init_node_map
      
      From-SVN: r201634
      Jan Hubicka committed
    • cgraphbuild.c (cgraph_rebuild_references): Rebuild only non-speculative refs. · 042ae7d2
      	* cgraphbuild.c (cgraph_rebuild_references): Rebuild only non-speculative
      	refs.
      	* cgraph.c (cgraph_update_edge_in_call_site_hash): New function.
      	(cgraph_add_edge_to_call_site_hash): Deal with speculative calls.
      	(cgraph_set_call_stmt): Likewise.
      	(cgraph_create_edge_1): Fix release checking compilatoin;
      	clear lto_stmt_uid.
      	(cgraph_free_edge): Free indirect info.
      	(cgraph_turn_edge_to_speculative): New function.
      	(cgraph_speculative_call_info): New function.
      	(cgraph_make_edge_direct): Return direct edge; handle speculation.
      	(cgraph_redirect_edge_call_stmt_to_callee): Expand speculative
      	edges.
      	(dump_cgraph_node): Dump speculation.
      	(verify_edge_count_and_frequency): Accept speculative edges.
      	(verify_edge_corresponds_to_fndecl): Handle partitioned cgraph.
      	(verify_cgraph_node): Handle speculation.
      	* cgraph.h (cgraph_edge): Add SPECULATIVE flag.
      	(cgraph_set_call_stmt): Update prototype.
      	(cgraph_make_edge_direct): Update prototype.
      	(cgraph_speculative_call_info): Declare.
      	* ipa-cp.c (ipcp_discover_new_direct_edges): Be ready for edge
      	to change; update call of ipa_find_references.
      	* ipa-ref.c (ipa_record_reference): Fix return value; clear
      	lto_stmt_uid and speculative flags.
      	(ipa_dump_references): Dump speculation.
      	(ipa_clone_references): Clone speculative flag.
      	(ipa_clone_referring): Likewise.
      	(ipa_clone_ref): New function.
      	(ipa_find_reference): Look into lto_stmt_uids
      	(ipa_clear_stmts_in_references): Do not clear speculative calls.
      	* ipa-ref.h (ipa_ref): Add lto_stmt_uid and speculative flags.
      	(ipa_find_reference): Update declaration.
      	(ipa_clone_ref): Declare.
      	* lto-cgraph.c (lto_output_edge): Make lto_stmt_uids start from 0;
      	stream speculative flag.
      	(lto_output_ref): Stream statements uids and speculation.
      	(input_ref): Likewise.
      	(input_edge): Stream speuclation.
      	* cgraphclones.c (cgraph_clone_edge): Clone speculation.
      	(cgraph_set_call_stmt_including_clones): Handle speculation.
      	* ipa-inline.c (heap_edge_removal_hook): New function.
      	(inline_small_functions): Register it.
      	* lto-streamer-in.c (fixup_call_stmt_edges_1): Bounds checking;
      	also initialize refs.
      	* ipa-prop.c (ipa_make_edge_direct_to_target): Be ready for
      	edge to change.
      	(try_make_edge_direct_simple_call): Likewise.
      	(try_make_edge_direct_simple_call): Likewise.
      	(update_indirect_edges_after_inlining): Likewise.
      	(remove_described_reference): Look proper lto_stmt_uid.
      	(propagate_controlled_uses): Likewise.
      	(propagate_controlled_uses): Liekwise.
      	* tree-inline.c (copy_bb): Copy speculative edges.
      	(redirect_all_calls): New function.
      	(copy_cfg_body): Do redirection after loop info
      	is updated.
      	(delete_unreachable_blocks_update_callgraph): Updadte
      	speculation.
      
      From-SVN: r201632
      Jan Hubicka committed
  8. 06 Aug, 2013 1 commit
    • cgraph.c (cgraph_get_body): New function based on lto.c implementation. · a2e2a668
      	* cgraph.c (cgraph_get_body): New function based on lto.c
      	implementation.
      	* cgraph.h (cgraph_get_body): Declare.
      	* cgraphclones.c (cgraph_create_virtual_clone): Commonize WPA and LTO paths.
      	* cgraphunit.c (expand_function): Get body prior expanding.
      	* ipa.c (function_and_variable_visibility): Use gimple_has_body_p test.
      	* lto-cgraph.c (lto_output_node): Do not stream bodies we don't really need.
      	* passes.c (do_per_function_toporder): Get body.
      	* tree-inline.c (expand_call_inline): Get body prior inlining it.
      	* tree-ssa-structalias.c (ipa_pta_execute): Get body; skip clones.
      
      	* lto.c (lto_materialize_function): Do not read body anymore.
      
      From-SVN: r201537
      Jan Hubicka committed
  9. 03 Aug, 2013 1 commit
  10. 02 Aug, 2013 1 commit
    • cgraph.c (cgraph_function_body_availability): Do not check cgrpah flags. · af15184a
      	* cgraph.c (cgraph_function_body_availability): Do not check cgrpah flags.
      	* cgraph.h (symtab_for_node_and_aliases, symtab_nonoverwritable_alias,
      	symtab_node_availability): Declare.
      	* ipa.c (can_replace_by_local_alias): New.
      	(function_and_variable_visibility): Use it.
      	* symtab.c (symtab_for_node_and_aliases, symtab_nonoverwritable_alias_1,
      	symtab_nonoverwritable_alias): New.
      
      Co-Authored-By: Martin Liska <marxin.liska@gmail.com>
      
      From-SVN: r201439
      Jan Hubicka committed
  11. 01 Aug, 2013 2 commits
    • cgraph.h (release_function_body): Declare. · 12123452
      	* cgraph.h (release_function_body): Declare.
      	* tree.c (free_lang_data_in_decl): Free, parameters and return values
      	of unused delcarations.
      
      From-SVN: r201413
      Jan Hubicka committed
    • cgraph.c (cgraph_release_function_body): Use used_as_abstract_origin. · c0c123ef
      	* cgraph.c (cgraph_release_function_body): Use used_as_abstract_origin.
      	(cgraph_release_function_body): Likewise.
      	(cgraph_can_remove_if_no_direct_calls_p): Likewise.
      	* cgraph.h (cgrpah_node): Rename abstract_and_needed
      	to used_as_abstract_origin.
      	* tree-inline-transfrom.c (can_remove_node_now_p_1): Do not remove
      	symbols used as abstract origins.
      	* cgraphunit.c (analyze_functions): Update.
      	* ipa.c (symtab_remove_unreachable_nodes): Recompute used_as_abstract_origin.
      	* tree-inline.c (tree_function_versioning): Update
      	used_as_abstract_origin; be ready for DECL_RESULT and DECL_ARGUMENTS to be
      	NULL.
      
      	* lto-symtab.c (lto_symtab_merge_symbols): Merge duplicated nodes for abstract functions.
      	* cgraph.h (symtab_real_symbol_p): Abstract declarations are not real symbols.
      
      From-SVN: r201408
      Jan Hubicka committed
  12. 21 Jul, 2013 1 commit
  13. 25 Jun, 2013 1 commit
    • re PR middle-end/57670 (Member-pointer calls should not be redirected to builtin_unreachable) · c13bc3d9
      2013-06-25  Martin Jambor  <mjambor@suse.cz>
      
      	PR middle-end/57670
      	* cgraph.h (cgraph_indirect_call_info): New flag member_ptr.
      	* ipa-prop.c (ipa_print_node_jump_functions): Mark member pointer
      	calls in the dump.
      	(ipa_note_param_call): Initialize member_ptr flag.
      	(ipa_analyze_indirect_call_uses): Set member_ptr flag.
      	(ipa_make_edge_direct_to_target): Bail out if member_ptr is set.
      	(ipa_write_indirect_edge_info): Stream member_ptr flag.
      	(ipa_read_indirect_edge_info): Likewise.
      
      testsuite/
      	* g++.dg/ipa/pr57670.C (H): New test.
      
      From-SVN: r200393
      Martin Jambor committed
  14. 24 Jun, 2013 1 commit
    • re PR tree-optimization/57539 (ice in ipa_edge_duplication_hook) · 44a60244
      2013-06-24  Martin Jambor  <mjambor@suse.cz>
      
      	PR tree-optimization/57539
      	* cgraphclones.c (cgraph_clone_node): Add parameter new_inlined_to, set
      	global.inlined_to of the new node to it.  All callers changed.
      	* ipa-inline-transform.c (clone_inlined_nodes): New variable
      	inlining_into, pass it to cgraph_clone_node.
      	* ipa-prop.c (ipa_propagate_indirect_call_infos): Do not call
      	ipa_free_edge_args_substructures.
      	(ipa_edge_duplication_hook): Only add edges from inlined nodes to
      	rdesc linked list.  Do not assert rdesc edges have inlined caller.
      	Assert we have found an rdesc in the rdesc list.
      
      From-SVN: r200368
      Martin Jambor committed
  15. 19 Jun, 2013 1 commit
    • cgraph.h (const_value_known_p): Replace by ... · 6a6dac52
      	* cgraph.h (const_value_known_p): Replace by ...
      	(ctor_for_folding): .. this one.
      	* cgraphunit.c (process_function_and_variable_attributes): Use it.
      	* lto-cgraph.c (compute_ltrans_boundary): Use ctor_for_folding.
      	* expr.c (expand_expr_real_1): Likewise.
      	(string_constant): Likewise.
      	* tree-ssa-loop-ivcanon.c (constant_after_peeling): Likewise.
      	* ipa.c (process_references): Likewise.
      	(symtab_remove_unreachable_nodes): Likewise.
      	* ipa-inline-analysis.c (param_change_prob): Likewise.
      	* gimple-fold.c (canonicalize_constructor_val): Likewise.
      	(get_base_constructor): Likwise.
      	* varpool.c (varpool_remove_node): Likewise.
      	(varpool_remove_initializer): LIkewise.
      	(dump_varpool_node): LIkwise.
      	(const_value_known_p): Rewrite to ...
      	(ctor_for_folding): ... this one.
      
      	* lto-partition.c (add_references_to_partition): Use
      	ctor_for_folding.
      
      	* gcc.dg/tree-ssa/attr-alias-2.c: New testcase.
      
      From-SVN: r200211
      Jan Hubicka committed
  16. 12 Jun, 2013 2 commits
    • cgraph.c (verify_edge_corresponds_to_fndecl): Be lax about decl has when in streaming stage. · ca0f62a8
      	* cgraph.c (verify_edge_corresponds_to_fndecl): Be lax about
      	decl has when in streaming stage.
      	* lto-symtab.c (lto_symtab_merge_symbols): Likewise.
      	* cgraph.h (cgraph_state): Add CGRAPH_LTO_STREAMING.
      
      	* lto.c (read_cgraph_and_symbols): Set cgraph into streaming state.
      
      From-SVN: r200018
      Jan Hubicka committed
    • lto-symtab.c (lto_symtab_merge_symbols): Populate symtab hashtable. · bbf9ad07
      	* lto-symtab.c (lto_symtab_merge_symbols): Populate symtab hashtable.
      	* cgraph.h (varpool_create_empty_node): Declare.
      	* lto-cgraph.c (input_node, input_varpool_node): Forcingly create
      	duplicated nodes.
      	* symtab.c (symtab_unregister_node): Be lax about missin entries
      	in node hash.
      	(symtab_get_node): Update comment.
      	* varpool.c (varpool_create_empty_node): Break out from ...
      	(varpool_node_for_decl): ... here.
      	* lto-streamer.h (lto_file_decl_data): Add RESOLUTION_MAP.
      
      	* lto.c (register_resolution): Take lto_file_data argument.
      	(lto_register_var_decl_in_symtab,
      	lto_register_function_decl_in_symtab): Update.
      	(read_cgraph_and_symbols): Update resolution_map handling.
      
      From-SVN: r199990
      Jan Hubicka committed
  17. 11 Jun, 2013 1 commit
    • c-common.c (handle_alias_ifunc_attribute): Do not set DECL_EXTERNAL for weakref variables. · 08346abd
      	* c-family/c-common.c (handle_alias_ifunc_attribute): Do not set
      	DECL_EXTERNAL for weakref variables.
      	* c-family/c-pragma.c (handle_pragma_weak): Make sure aliases
      	are not declared as external.
      	* cgraph.c (cgraph_create_function_alias): Set weakref flag.
      	* cgraph.h (symtab_node_base): Add weakref flag.
      	* cgraphunit.c (cgraph_reset_node): Clear weakref flag.
      	(handle_alias_pairs): Set weakref flag, do not set DECL_EXTERNAL.
      	(output_weakrefs): Use weakref flag.
      	* fold-const.c (simple_operand_p): Handle WEAK.
      	* gimple-fold.c (can_refer_decl_in_current_unit_p): Drop weakref.
      	* ipa.c (varpool_externally_visible_p): Drop weakref.
      	(function_and_variable_visibility): Update comment; fix weakref
      	sanity checks; do not clear DECL_WEAK on them.
      	* lto-cgraph.c (lto_output_node): update.
      	(lto_output_varpool_node): Update.
      	(input_overwrite_node): Update.
      	(input_node): Update.
      	(input_varpool_node): Update.
      	* lto-symtab.c (lto_symtab_symbol_p): Do not special case weakrefs.
      	(lto_symtab_merge_symbols): Add sanity check.
      	(lto_symtab_prevailing_decl): Do not special case weakrefs.
      	* passes.c (rest_of_decl_compilation): Set static flag, too.
      	* symtab.c (dump_symtab_base): Dump weakref.
      	(verify_symtab_base): Sanity check weakrefs.
      	(symtab_make_decl_local): Remove duplicated code.
      	(symtab_alias_ultimate_target): Simplify.
      	* varpool.c (varpool_create_variable_alias): Set weakref flag.
      
      	* lto-partition.c (get_symbol_class): Simplify weakref handling.
      	(add_symbol_to_partition_1): Likewise.
      	(contained_in_symbol): Likewise.
      	(lto_balanced_map): Likewise.
      	(rename_statics): Drop weakref.
      
      From-SVN: r199971
      Jan Hubicka committed
  18. 05 Jun, 2013 1 commit
    • class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P instead of… · edb983b2
      class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P instead of mark_decl_referenced.
      
      
      	* class.c (emit_register_classes_in_jcr_section): Use DECL_PRESERVE_P
      	instead of mark_decl_referenced.
      
      	* decl2.c (maybe_make_one_only): Use forced_by_abi instad of
      	mark_decl_referenced.
      	(mark_needed): Likewise.
      
      	* cgraph.c (cgraph_remove_node): Clear forced_by_abi.
      	(cgraph_node_cannot_be_local_p_1): Honnor symbol.forced_by_abi
      	and symtab_used_from_object_file_p.
      	(cgraph_make_node_local_1): Clear forced_by_abi.
      	(cgraph_can_remove_if_no_direct_calls_and): Use forced_by_abi
      	* cgraph.h (symtab_node_base): Add forced_by_abi.
      	(decide_is_variable_needed): Remove.
      	(varpool_can_remove_if_no_refs): Honnor symbol.forced_by_abi.
      	* cgraphunit.c (cgraph_decide_is_function_needed): Rename to ..
      	(decide_is_symbol_needed): ... this one; handle symbols in general;
      	always analyze virtuals; honnor forced_by_abi.
      	(cgraph_finalize_function): Update.
      	(varpool_finalize_decl): Update.
      	(symbol_defined_and_needed): Remove.
      	(analyze_functions): Update.
      	* lto-cgraph.c (lto_output_node, lto_output_varpool_node,
      	output_refs, input_overwrite_node): Handle forced_by_abi.
      	* ipa.c (cgraph_address_taken_from_non_vtable_p): Rename to ...
      	(address_taken_from_non_vtable_p): ... this one.
      	(comdat_can_be_unshared_p_1): New function.
      	(cgraph_comdat_can_be_unshared_p): Rename to ...
      	(comdat_can_be_unshared_p): ... this one; handle symbols in general.
      	(varpool_externally_visible_p): Use comdat_can_be_unshared_p.
      	(function_and_variable_visibility): Clear forced_by_abi as needed.
      	* trans-mem.c (ipa_tm_mark_forced_by_abi_node): New functoin.
      	(ipa_tm_create_version_alias, ipa_tm_create_version): Update.
      	* varasm.c (mark_decl_referenced): Remove.
      	* symtab.c (dump_symtab_base): Dump forced_by_abi.
      	* varpool.c (decide_is_variable_needed): Remove.
      
      From-SVN: r199695
      Jan Hubicka committed
  19. 01 Jun, 2013 1 commit
    • lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Rename to ... · 40a7fe1e
      	* lto-symtab.c (lto_symtab_merge_cgraph_nodes_1): Rename to ...
      	(lto_symtab_merge_symbols_1): ... this one.
      	(lto_symtab_merge_cgraph_nodes): Rename to ...
      	(lto_symtab_merge_symbols): ... this one; simplify.
      	* cgraph.c (same_body_aliases_done): Rename to ...
      	(cpp_implicit_aliases_done): ... this one.
      	(cgraph_create_function_alias): Update.
      	(cgraph_same_body_alias): Update.
      	(dump_cgraph_node): Remove alias dumping; simplify
      	thunk dumping.
      	(verify_edge_corresponds_to_fndecl): Simplify.
      	* cgraph.h (symtab_node_base): Add cpp_implicit_alias,
      	alias_target.
      	(cgraph_node): Remove same_body_alias.
      	(varpool_node): Remove alias_of and extra_name_alias.
      	(same_body_aliases_done): Rename to ..
      	(cpp_implicit_aliases_done): ... this one.
      	(symtab_alias_ultimate_target): Add default parameter.
      	(symtab_resolve_alias): New function.
      	(fixup_same_cpp_alias_visibility): Declare.
      	(cgraph_function_node): Add default parameter.
      	(cgraph_node_asm_name): Likewise.
      	(cgraph_function_or_thunk_node): Add default parameter; do
      	not ICE when it is NULL.
      	(varpool_variable_node): Likewise.
      	* tree-emutls.c (create_emultls_var): Update.
      	(ipa_lower_emutls): Update.
      	* cgraphunit.c (cgraph_decide_is_function_needed): Update.
      	(cgraph_reset_node): Reset alias info.
      	(cgraph_finalize_function): Update.
      	(fixup_same_cpp_alias_visibility): Move to symtab.c.
      	(analyze_function): Simplify.
      	(cgraph_process_same_body_aliases): Simplify.
      	(analyze_functions): Fixup same body aliases.
      	(handle_alias_pairs): Simplify.
      	(assemble_thunk): Update.
      	(assemble_thunks_and_aliases): Update.
      	(output_weakrefs): Rewrite.
      	* lto-cgraph.c (lto_output_node): Rewrite alias handling.
      	(lto_output_varpool_node): Likewise.
      	(compute_ltrans_boundary): Remve assert.
      	(get_alias_symbol): New functoin.
      	(input_node): Rewrite alias handling.
      	(input_varpool_node): Likewise.
      	* ipa-pure-const.c (propagate_pure_const): Fix formating.
      	* ipa.c (process_references): Handle weakrefs correctly.
      	(symtab_remove_unreachable_nodes): Likewise.
      	* trans-mem.c (get_cg_data): Update.
      	(ipa_tm_create_version_alias): Update.
      	(ipa_tm_execute): Update.
      	* symtab.c (dump_symtab_base): Dump aliases.
      	(verify_symtab_base): Verify aliases.
      	(symtab_node_availability): New function.
      	(symtab_alias_ultimate_target): Simplify.
      	(fixup_same_cpp_alias_visibility): Move here from cgraphunit.c;
      	handle all the fixup cases.
      	(symtab_resolve_alias): New function.
      	* passes.c (ipa_write_summaries): Handle weakrefs.
      	* varpool.c (varpool_analyze_node): Simplify.
      	(assemble_aliases): Update.
      	(varpool_create_variable_alias): Simplify.
      	(varpool_extra_name_alias): Simplify.
      	* lto-streamer.h (lto_symtab_merge_cgraph_nodes): Rename to...
      	(lto_symtab_merge_symbols): ... this one.
      
      	* decl2.c (cp_write_global_declarations): Replace same_body_alias
      	by symbol.cpp_implicit_alias.
      
      	* lto.c (read_cgraph_and_symbols): Simplify dumping; Replace
      	lto_symtab_merge_cgraph_nodes by lto_symtab_merge_symbols.
      	(do_whole_program_analysis): Update dumping.
      
      From-SVN: r199577
      Jan Hubicka committed
  20. 29 May, 2013 1 commit
    • cgraph.h (symtab_node_base): Add definition, alias and analyzed flags... · e70670cf
      	* cgraph.h (symtab_node_base): Add definition, alias and analyzed
      	flags; reorder rest of fields in more consistent way.
      	(varpool_node): Remove analyzed, finalized and alias.
      	(cgraph_ndoe): Likewise.
      	(symtab_alias_ultimate_target): New function.
      	(cgraph_function_node): Move offline.
      	(cgraph_reset_node): Declare.
      	(cgraph_comdat_can_be_unshared_p): Remove.
      	(varpool_remove_initializer): Declare.
      	(varpool_first_defined_variable, varpool_next_defined_variable
      	cgraph_first_defined_function, cgraph_next_defined_function): Update.
      	(cgraph_function_with_gimple_body_p): Update.
      	(varpool_all_refs_explicit_p): Update.
      	(symtab_alias_target): New function.
      	(cgraph_alias_aliased_node, varpool_alias_aliased_node): Rename to ...
      	(cgraph_alias_target, varpool_alias_target): .. this one; simplify.
      	(cgraph_function_or_thunk_node): Simplify using symtab_alias_ultimate_target.
      	(varpool_variable_node): Likewise.
      	* cgraph.c (cgraph_create_function_alias): Update.
      	(cgraph_add_thunk): Update.
      	(cgraph_remove_node): Update.
      	(dump_cgraph_node): Do not dump removed flags.
      	(cgraph_function_body_availability): Update.
      	(cgraph_propagate_frequency): Update.
      	(verify_cgraph_node): Check sanity of local flag.
      	(cgraph_function_node): Move here from cgraph.h; revamp for
      	cgraph_function_or_thunk_node.
      	* lto-symtab.c (lto_varpool_replace_node): Update.
      	(lto_symtab_resolve_can_prevail_p): Update.
      	(lto_symtab_merge_cgraph_nodes): Update.
      	* ipa-cp.c (determine_versionability, initialize_node_lattices,
      	propagate_constants_accross_call, devirtualization_time_bonus,
      	ipcp_propagate_stage): Update.
      	* tree-emutls.c (create_emultls_var, ipa_lower_emutls): Update.
      	* ipa-inline-transform.c (clone_inlined_nodes, preserve_function_body_p): Update.
      	* ipa-reference.c (propagate): Update.
      	(write_node_summary_p): Update.
      	* toplev.c (wrapup_global_declaration_2): Update.
      	* cgraphunit.c (cgraph_analyze_function): Rename to ...
      	(analyze_function) ... this one.
      	(cgraph_process_new_functions): Update.
      	(cgraph_reset_node): Export.
      	(cgraph_finalize_function): Update.
      	(cgraph_add_new_function): Update.
      	(process_function_and_variable_attributes): Update.
      	(varpool_finalize_decl): Update.
      	(symbol_finalized): Remove.
      	(symbol_finalized_and_needed): Rename to ...
      	(symbol_defined_and_needed): ... update.
      	(cgraph_analyze_functions): Update.
      	(handle_alias_pairs): Update.
      	(mark_functions_to_output): Update.
      	(assemble_thunk): Update.
      	(output_in_order): Update.
      	(output_weakrefs): Update.
      	(finalize_compilation_unit): Update.
      	* lto-cgraph.c (reachable_from_other_partition_p, lto_output_node,
      	lto_output_varpool_node, compute_ltrans_boundary, input_overwrite_node,
      	input_node, input_varpool_node): Update.
      	* dbxout.c (dbxout_expand_expr): Update.
      	* cgraphclones.c (cgraph_clone_node): Update.
      	(cgraph_copy_node_for_versioning): Update.
      	(cgraph_materialize_clone): Update.
      	(cgraph_materialize_all_clones): Update.
      	* ipa-pure-const.c (analyze_function, pure_const_write_summary,
      	propagate_pure_const, propagate_nothrow): Update.
      	* lto-streamer-out.c (lto_output, write_symbol): Update.
      	* ipa-utils.c (ipa_reverse_postorder): Update.
      	* ipa-inline.c (can_inline_edge_p): Update.
      	(update_caller_keys, ipa_inline): Update.
      	* dwarf2out.c (reference_to_unused,
      	premark_types_used_by_global_vars_helper): Update.
      	* tree-eh.c (tree_could_trap_p): Update.
      	* ipa-split.c (consider_split, execute_split_functions): Update.
      	* ipa.c (cgraph_non_local_node_p_1, cgraph_local_node_p,
      	 has_addr_references_p): Update;
      	move ahead in file for better readability.
      	(process_references): Simplify.
      	(symtab_remove_unreachable_nodes): Update; cleanup way function/var
      	bodies are removed.
      	(cgraph_comdat_can_be_unshared_p): Make static.
      	(cgraph_externally_visible_p): Update.
      	(varpool_externally_visible_p): Update.
      	(function_and_variable_visibility): Update.
      	* trans-mem.c (get_cg_data, ipa_tm_mayenterirr_function,
      	ipa_tm_mark_force_output_node): Update.
      	* ipa-inline-analysis.c (dump_inline_summary, initialize_inline_failed,
      	estimate_edge_devirt_benefit, inline_generate_summary,
      	inline_write_summary): Update.
      	* gimple-fold.c (can_refer_decl_in_current_unit_p): Update.
      	* ipa-prop.c (ipa_compute_jump_functions): Update.
      	(ipa_print_node_params, ipa_prop_read_section, ipa_update_after_lto_read,
      	read_replacements_section): Update.
      	* varasm.c (mark_decl_referenced): Update.
      	(assemble_alias, dump_tm_clone_pairs): Update.
      	* tree-inline.c (copy_bb): Update.
      	(estimate_num_insns, optimize_inline_calls, tree_function_versioning):
      	Update.
      	* symtab.c (dump_symtab_base): Print new flags.
      	(verify_symtab_base): Verify new flags.
      	(symtab_alias_ultimate_target): New function.
      	* tree-ssa-structalias.c (get_constraint_for_ssa_var,
      	create_variable_info_for, associate_varinfo_to_alias, ipa_pta_execute):
      	Update.
      	* passes.c (ipa_write_summaries, ipa_write_optimization_summaries): Update.
      	* i386.c (ix86_get_function_versions_dispatcher,
      	ix86_generate_version_dispatcher_body): Update.
      	(fold_builtin_cpu): Use varpool_add_new_variable.
      	* varpool.c (varpool_remove_initializer): Break out from ...
      	(varpool_remove_node): ... this one.
      	(dump_varpool_node, varpool_node_for_asm,
      	cgraph_variable_initializer_availability, varpool_analyze_node,
      	varpool_assemble_decl, varpool_remove_unreferenced_decls,
      	varpool_finalize_named_section_flags, varpool_create_variable_alias): Update
      
      	* decl.c (java_mark_decl_local): Update for new symtab flags.
      
      	* tree.c (cp_fix_function_decl_p): Update for new symtab flags.
      	* decl2.c )var_finalized_p, cp_write_global_declarations): Likewise.
      
      	* lto.c (has_analyzed_clone_p, lto_materialize_function): Update for new symtab
      	flags.
      	* lto-partition.c (get_symbol_class, lto_balanced_map): Likewise.
      
      From-SVN: r199422
      Jan Hubicka committed
  21. 24 May, 2013 1 commit
    • re PR tree-optimization/57294 (ice in remove_described_reference) · 82338059
      2013-05-24  Martin Jambor  <mjambor@suse.cz>
      
      	PR tree-optimization/57294
      	* cgraph.h (ipa_record_stmt_references): Declare.
      	* cgraphbuild.c (ipa_record_stmt_references): New function.
      	(build_cgraph_edges): Use ipa_record_stmt_references.
      	(rebuild_cgraph_edges): Likewise.
      	(cgraph_rebuild_references): Likewise.
      	* ipa-prop.c (ipa_modify_call_arguments): Discard references
      	associated with the old statement and build references from the
      	newly built statements.
      	* ipa-ref.c (ipa_remove_stmt_references): New function.
      	* ipa-ref.h (ipa_remove_stmt_references): Declare.
      
      testsuite/
      	* gcc.dg/ipa/pr57294.c: New test.
      
      From-SVN: r199299
      Martin Jambor committed
  22. 08 May, 2013 1 commit
    • re PR lto/54095 (Unnecessary static variable renaming) · 702d8703
      	PR lto/54095
      	* cgraph.c (cgraph_make_node_local_1): Se unique_name.
      	* cgraph.h (symtab_node_base): Add unique_name.
      	* lto-cgraph.c (lto_output_node, lto_output_varpool_node,
      	input_overwrite_node, input_varpool_node): Stream unique_name.
      	* cgraphclones.c (cgraph_create_virtual_clone,
      	cgraph_function_versioning): Set unique_name.
      	* ipa.c (function_and_variable_visibility): Set unique_name.
      
      From-SVN: r198710
      Jan Hubicka committed
  23. 09 Apr, 2013 1 commit
  24. 17 Mar, 2013 1 commit
  25. 17 Jan, 2013 1 commit
    • re PR tree-optimization/55264 (ICE: in ipa_make_edge_direct_to_target, at… · 8222c37e
      re PR tree-optimization/55264 (ICE: in ipa_make_edge_direct_to_target, at ipa-prop.c:2141 with -O2 -fno-early-inlining -fno-weak)
      
      2013-01-17  Martin Jambor  <mjambor@suse.cz>
      
      	PR tree-optimizations/55264
      	* ipa-inline-transform.c (can_remove_node_now_p_1): Never return true
      	for virtual methods.
      	* ipa.c (symtab_remove_unreachable_nodes): Never return true for
      	virtual methods before inlining is over.
      	* cgraph.h (cgraph_only_called_directly_or_aliased_p): Return false for
      	virtual functions.
      	* cgraphclones.c (cgraph_create_virtual_clone): Mark clones as
      	non-virtual.
      
      testsuite/
      	* g++.dg/ipa/pr55264.C: New test.
      
      From-SVN: r195262
      Martin Jambor committed
  26. 10 Jan, 2013 1 commit
  27. 22 Dec, 2012 1 commit
  28. 18 Nov, 2012 1 commit
    • This patch rewrites the old VEC macro-based interface into a new one based on… · 9771b263
      This patch rewrites the old VEC macro-based interface into a new one based on the template class 'vec'.
      
      This patch rewrites the old VEC macro-based interface into a new one
      based on the template class 'vec'.  The user-visible changes are
      described in http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec.
      
      I have tested the patch pretty extensively:
      
      - Regular bootstraps on x86_64, ppc, ia64, sparc and hppa.
      - Bootstraps with --enable-checking=release
      - Bootstraps with --enable-checking=gc,gcac
      - Basic builds on all targets (using contrib/config-list.mk).
      
      We no longer access the vectors via VEC_* macros.  The pattern is
      "VEC_operation (T, A, V, args)" becomes "V.operation (args)".
      
      The only thing I could not do is create proper ctors and dtors for the
      vec class.  Since these vectors are stored in unions, we
      have to keep them as PODs (C++03 does not allow non-PODs in unions).
      
      This means that creation and destruction must be explicit.  There is a
      new method vec<type, allocation, layout>::create() and another vec<type,
      allocation, layout>::destroy() to allocate the internal vector.
      
      For vectors that must be pointers, there is a family of free functions
      that implement the operations that need to tolerate NULL vectors.
      These functions all start with the prefix 'vec_safe_'.  See the wiki
      page for details.
      
      The gengtype change removes the special handling for VEC() that used
      to exist in gengtype. Additionally, it allows gengtype to recognize
      templates of more than one argument and introduces the concept of an
      undefined type (useful for template arguments that may or may not be
      types).
      
      When a TYPE_UNDEFINED is reached, gengtype will ignore it if it
      happens inside a type marked with GTY((user)).  Otherwise, it will
      emit an error.
      
      Finally, gengtype rejects root types marked GTY((user)) that are not
      first class pointers.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	VEC API overhaul (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
      
      	* vec.c (register_overhead): Convert it into
      	member function of vec_prefix.
      	(release_overhead): Likewise.
      	(calculate_allocation): Likewise.
      	(vec_heap_free): Remove.
      	(vec_gc_o_reserve_1): Remove.
      	(vec_heap_o_reserve_1): Remove.
      	(vec_stack_o_reserve_1): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(register_stack_vec): New.
      	(stack_vec_register_index): New.
      	(unregister_stack_vec): New.
      	(vec_assert_fail): Remove.
      	* vec.h: Conditionally include ggc.h.  Document conditional
      	hackery.
      	Update top-level documentation.
      	(ALONE_VEC_CHECK_INFO): Remove.
      	(VEC_CHECK_INFO): Remove.
      	(ALONE_VEC_CHECK_DECL): Remove.
      	(VEC_CHECK_DECL): Remove.
      	(ALONE_VEC_CHECK_PASS): Remove.
      	(VEC_CHECK_PASS): Remove.
      	(VEC_ASSERT): Remove.
      	(vec_prefix): Add friends va_gc, va_gc_atomic, va_heap and
      	va_stack.
      	Mark fields alloc_ and num_ as protected.
      	(struct vec_t): Remove.  Remove all function members.
      	(struct vl_embed): Declare.
      	(struct vl_ptr): Declare.
      	(free): Remove.
      	(reserve_exact): Remove.
      	(reserve): Remove.
      	(safe_splice): Remove.
      	(safe_push): Remove.
      	(safe_grow): Remove.
      	(safe_grow_cleared): Remove.
      	(safe_insert): Remove.
      	(DEF_VEC_I): Remove.
      	(DEF_VEC_ALLOC_I): Remove.
      	(DEF_VEC_P): Remove.
      	(DEF_VEC_ALLOC_P): Remove.
      	(DEF_VEC_O): Remove.
      	(DEF_VEC_ALLOC_O): Remove.
      	(DEF_VEC_ALLOC_P_STACK): Remove.
      	(DEF_VEC_ALLOC_O_STACK): Remove.
      	(DEF_VEC_ALLOC_I_STACK): Remove.
      	(DEF_VEC_A): Remove.
      	(DEF_VEC_ALLOC_A): Remove.
      	(vec_stack_p_reserve_exact_1): Remove.
      	(vec_stack_o_reserve): Remove.
      	(vec_stack_o_reserve_exact): Remove.
      	(VEC_length): Remove.
      	(VEC_empty): Remove.
      	(VEC_address): Remove.
      	(vec_address): Remove.
      	(VEC_last): Remove.
      	(VEC_index): Remove.
      	(VEC_iterate): Remove.
      	(VEC_embedded_size): Remove.
      	(VEC_embedded_init): Remove.
      	(VEC_free): Remove.
      	(VEC_copy): Remove.
      	(VEC_space): Remove.
      	(VEC_reserve): Remove.
      	(VEC_reserve_exact): Remove.
      	(VEC_splice): Remove.
      	(VEC_safe_splice): Remove.
      	(VEC_quick_push): Remove.
      	(VEC_safe_push): Remove.
      	(VEC_pop): Remove.
      	(VEC_truncate): Remove.
      	(VEC_safe_grow): Remove.
      	(VEC_replace): Remove.
      	(VEC_quick_insert): Remove.
      	(VEC_safe_insert): Remove.
      	(VEC_ordered_remove): Remove.
      	(VEC_unordered_remove): Remove.
      	(VEC_block_remove): Remove.
      	(VEC_lower_bound): Remove.
      	(VEC_alloc): Remove.
      	(VEC_qsort): Remove.
      
      	(va_heap): Declare.
      	(va_heap::default_layout): New typedef to vl_ptr.
      	(va_heap::reserve): New.
      	(va_heap::release): New.
      	(va_gc): Declare.
      	(va_gc::default_layout): New typedef to vl_embed.
      	(va_gc::reserve): New.
      	(va_gc::release): New.
      	(va_gc_atomic): Declare.  Inherit from va_gc.
      	(va_stack): Declare.
      	(va_stack::default_layout): New typedef to vl_ptr.
      	(va_stack::alloc): New.
      	(va_stack::reserve): New.
      	(va_stack::release): New.
      	(register_stack_vec): Declare.
      	(stack_vec_register_index): Declare.
      	(unregister_stack_vec): Declare.
      
      	(vec<T, A = va_heap, L = typename A::default_layout>): Declare
      	empty vec template.
      	(vec<T, A, vl_embed>): Partial specialization for embedded
      	layout.
      	(vec<T, A, vl_embed>::allocated): New.
      	(vec<T, A, vl_embed>::length): New.
      	(vec<T, A, vl_embed>::is_empty): New.
      	(vec<T, A, vl_embed>::address): New.
      	(vec<T, A, vl_embed>::operator[]): New.
      	(vec<T, A, vl_embed>::last New.
      	(vec<T, A, vl_embed>::space): New.
      	(vec<T, A, vl_embed>::iterate): New.
      	(vec<T, A, vl_embed>::iterate): New.
      	(vec<T, A, vl_embed>::copy): New.
      	(vec<T, A, vl_embed>::splice): New.
      	(vec<T, A, vl_embed>::quick_push New.
      	(vec<T, A, vl_embed>::pop New.
      	(vec<T, A, vl_embed>::truncate): New.
      	(vec<T, A, vl_embed>::quick_insert): New.
      	(vec<T, A, vl_embed>::ordered_remove): New.
      	(vec<T, A, vl_embed>::unordered_remove): New.
      	(vec<T, A, vl_embed>::block_remove): New.
      	(vec<T, A, vl_embed>::qsort): New.
      	(vec<T, A, vl_embed>::lower_bound): New.
      	(vec<T, A, vl_embed>::embedded_size): New.
      	(vec<T, A, vl_embed>::embedded_init): New.
      	(vec<T, A, vl_embed>::quick_grow): New.
      	(vec<T, A, vl_embed>::quick_grow_cleared): New.
      	(vec_safe_space): New.
      	(vec_safe_length): New.
      	(vec_safe_address): New.
      	(vec_safe_is_empty): New.
      	(vec_safe_reserve): New.
      	(vec_safe_reserve_exact): New.
      	(vec_alloc): New.
      	(vec_free): New.
      	(vec_safe_grow): New.
      	(vec_safe_grow_cleared): New.
      	(vec_safe_iterate): New.
      	(vec_safe_push): New.
      	(vec_safe_insert): New.
      	(vec_safe_truncate): New.
      	(vec_safe_copy): New.
      	(vec_safe_splice): New.
      
      	(vec<T, A, vl_ptr>): New partial specialization for the space
      	efficient layout.
      	(vec<T, A, vl_ptr>::exists): New.
      	(vec<T, A, vl_ptr>::is_empty): New.
      	(vec<T, A, vl_ptr>::length): New.
      	(vec<T, A, vl_ptr>::address): New.
      	(vec<T, A, vl_ptr>::operator[]): New.
      	(vec<T, A, vl_ptr>::operator!=): New.
      	(vec<T, A, vl_ptr>::operator==): New.
      	(vec<T, A, vl_ptr>::last): New.
      	(vec<T, A, vl_ptr>::space): New.
      	(vec<T, A, vl_ptr>::iterate): New.
      	(vec<T, A, vl_ptr>::copy): New.
      	(vec<T, A, vl_ptr>::reserve): New.
      	(vec<T, A, vl_ptr>::reserve_exact): New.
      	(vec<T, A, vl_ptr>::splice): New.
      	(vec<T, A, vl_ptr>::safe_splice): New.
      	(vec<T, A, vl_ptr>::quick_push): New.
      	(vec<T, A, vl_ptr>::safe_push): New.
      	(vec<T, A, vl_ptr>::pop): New.
      	(vec<T, A, vl_ptr>::truncate): New.
      	(vec<T, A, vl_ptr>::safe_grow): New.
      	(vec<T, A, vl_ptr>::safe_grow_cleared): New.
      	(vec<T, A, vl_ptr>::quick_grow): New.
      	(vec<T, A, vl_ptr>::quick_grow_cleared): New.
      	(vec<T, A, vl_ptr>::quick_insert): New.
      	(vec<T, A, vl_ptr>::safe_insert): New.
      	(vec<T, A, vl_ptr>::ordered_remove): New.
      	(vec<T, A, vl_ptr>::unordered_remove): New.
      	(vec<T, A, vl_ptr>::block_remove): New.
      	(vec<T, A, vl_ptr>::qsort): New.
      	(vec<T, A, vl_ptr>::lower_bound): New.
      	(vec_stack_alloc): Define.
      	(FOR_EACH_VEC_SAFE_ELT): Define.
      	* vecir.h: Remove.  Update all users.
      	* vecprim.h: Remove.  Update all users.
      	Move uchar to coretypes.h.
      
      	* Makefile.in (VEC_H): Add $(GGC_H).
      	Remove vecir.h and vecprim.h dependencies everywhere.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	* gengtype-lex.l (VEC): Remove.
      	Add characters in the set [\!\>\.-].
      	* gengtype-parse.c (token_names): Remove "VEC".
      	(require_template_declaration): Remove handling of VEC_TOKEN.
      	(type): Likewise.
      	Call create_user_defined_type when parsing GTY((user)).
      	* gengtype-state.c (type_lineloc): handle TYPE_UNDEFINED.
      	(write_state_undefined_type): New.
      	(write_state_type): Call write_state_undefined_type for
      	TYPE_UNDEFINED.
      	(read_state_type): Call read_state_undefined_type for
      	TYPE_UNDEFINED.
      	* gengtype.c (dbgprint_count_type_at): Handle TYPE_UNDEFINED.
      	(create_user_defined_type): Make extern.
      	(type_for_name): Factor out of resolve_typedef.
      	(create_undefined_type): New
      	(resolve_typedef): Call it when we cannot find a previous
      	typedef and the type is not a template.
      	(find_structure): Accept TYPE_UNDEFINED.
      	(set_gc_used_type): Add argument ALLOWED_UNDEFINED_TYPES,
      	default to false.
      	Emit an error for TYPE_UNDEFINED unless LEVEL is GC_UNUSED or
      	ALLOWED_UNDEFINED_TYPES is set.
      	Set ALLOWED_UNDEFINED_TYPES to true for TYPE_USER_STRUCT.
      	(filter_type_name): Accept templates with more than one
      	argument.
      	(output_mangled_typename): Handle TYPE_UNDEFINED
      	(walk_type): Likewise.
      	(write_types_process_field): Likewise.
      	(write_func_for_structure): If CHAIN_NEXT is set, ORIG_S
      	should not be a user-defined type.
      	(write_types_local_user_process_field): Handle TYPE_ARRAY,
      	TYPE_NONE and TYPE_UNDEFINED.
      	(write_types_local_process_field): Likewise.
      	(contains_scalar_p): Return 0 for TYPE_USER_STRUCT.
      	(write_root): Reject user-defined types that are not pointers.
      	Handle TYPE_NONE, TYPE_UNDEFINED, TYPE_UNION, TYPE_LANG_STRUCT
      	and TYPE_PARAM_STRUCT.
      	(output_typename): Handle TYPE_NONE, TYPE_UNDEFINED, and
      	TYPE_ARRAY.
      	(dump_typekind): Handle TYPE_UNDEFINED.
      	* gengtype.h (enum typekind): Add TYPE_UNDEFINED.
      	(create_user_defined_type): Declare.
      	(enum gty_token): Remove VEC_TOKEN.
      
      2012-11-16  Diego Novillo  <dnovillo@google.com>
      
      	Adjust for new vec API (http://gcc.gnu.org/wiki/cxx-conversion/cxx-vec)
      
      	* coretypes.h (uchar): Define.
      	* alias.c: Use new vec API in vec.h.
      	* asan.c: Likewise.
      	* attribs.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* builtins.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgcleanup.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopanal.c: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphclones.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* combine.c: Likewise.
      	* compare-elim.c: Likewise.
      	* coverage.c: Likewise.
      	* cprop.c: Likewise.
      	* data-streamer.h: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* domwalk.h: Likewise.
      	* dse.c: Likewise.
      	* dwarf2cfi.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* dwarf2out.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* expr.c: Likewise.
      	* expr.h: Likewise.
      	* final.c: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* function.h: Likewise.
      	* fwprop.c: Likewise.
      	* gcc.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genautomata.c: Likewise.
      	* genextract.c: Likewise.
      	* genopinit.c: Likewise
      	* ggc-common.c: Likewise.
      	* ggc.h: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-ssa-strength-reduction.c: Likewise.
      	* gimple-streamer-in.c: Likewise.
      	* gimple.c: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* graph.c: Likewise.
      	* graphds.c: Likewise.
      	* graphds.h: Likewise.
      	* graphite-blocking.c: Likewise.
      	* graphite-clast-to-gimple.c: Likewise.
      	* graphite-dependences.c: Likewise.
      	* graphite-interchange.c: Likewise.
      	* graphite-optimize-isl.c: Likewise.
      	* graphite-poly.c: Likewise.
      	* graphite-poly.h: Likewise.
      	* graphite-scop-detection.c: Likewise.
      	* graphite-scop-detection.h: Likewise.
      	* graphite-sese-to-poly.c: Likewise.
      	* graphite.c: Likewise.
      	* godump.c: Likewise.
      	* haifa-sched.c: Likewise.
      	* hw-doloop.c: Likewise.
      	* hw-doloop.h: Likewise.
      	* ifcvt.c: Likewise.
      	* insn-addr.h: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-inline-analysis.c: Likewise.
      	* ipa-inline-transform.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-inline.h: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-prop.h: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-ref-inline.h: Likewise.
      	* ipa-ref.c: Likewise.
      	* ipa-ref.h: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-split.c: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-utils.h: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lra-lives.c: Likewise.
      	* lra.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.h: Likewise.
      	* lto-symtab.c: Likewise.
      	* mcf.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omp-low.c: Likewise.
      	* opts-common.c: Likewise.
      	* opts-global.c: Likewise.
      	* opts.c: Likewise.
      	* opts.h: Likewise.
      	* passes.c: Likewise.
      	* predict.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* profile.h: Likewise.
      	* read-rtl.c: Likewise.
      	* ree.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regrename.c: Likewise.
      	* regrename.h: Likewise.
      	* reload.c: Likewise.
      	* reload.h: Likewise.
      	* reload1.c: Likewise.
      	* rtl.h: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-int.h: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched-ir.h: Likewise.
      	* sel-sched.c: Likewise.
      	* sese.c: Likewise.
      	* sese.h: Likewise.
      	* statistics.h: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* tlink.c: Likewise.
      	* toplev.c: Likewise.
      	* trans-mem.c: Likewise.
      	* tree-browser.c: Likewise.
      	* tree-call-cdce.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-cfgcleanup.c: Likewise.
      	* tree-chrec.c: Likewise.
      	* tree-chrec.h: Likewise.
      	* tree-complex.c: Likewise.
      	* tree-data-ref.c: Likewise.
      	* tree-data-ref.h: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-diagnostic.c: Likewise.
      	* tree-dump.c: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-emutls.c: Likewise.
      	* tree-flow.h: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-inline.h: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-iterator.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-mudflap.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-ssa-loop-im.c: Likewise.
      	* tree-ssa-loop-ivcanon.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-manip.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-loop-prefetch.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-phiprop.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-propagate.c: Likewise.
      	* tree-ssa-reassoc.c: Likewise.
      	* tree-ssa-sccvn.c: Likewise.
      	* tree-ssa-sccvn.h: Likewise.
      	* tree-ssa-strlen.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-tail-merge.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa-uninit.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-stdarg.c: Likewise.
      	* tree-streamer-in.c: Likewise.
      	* tree-streamer-out.c: Likewise.
      	* tree-streamer.c: Likewise.
      	* tree-streamer.h: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-vect-data-refs.c: Likewise.
      	* tree-vect-generic.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vect-loop.c: Likewise.
      	* tree-vect-patterns.c: Likewise.
      	* tree-vect-slp.c: Likewise.
      	* tree-vect-stmts.c: Likewise.
      	* tree-vectorizer.c: Likewise.
      	* tree-vectorizer.h: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.c: Likewise.
      	* tree.h: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vmsdbgout.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/c6x/c6x.c: Likewise.
      	* config/darwin.c: Likewise.
      	* config/i386/i386.c: Likewise.
      	* config/ia64/ia64.c: Likewise.
      	* config/mep/mep.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/pa/pa.c: Likewise.
      	* config/rs6000/rs6000-c.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/rx/rx.c: Likewise.
      	* config/spu/spu-c.c: Likewise.
      	* config/vms/vms.c: Likewise.
      	* config/vxworks.c: Likewise.
      	* config/epiphany/resolve-sw-modes.c: Likewise.
      
      From-SVN: r193595
      Diego Novillo committed
  29. 06 Nov, 2012 1 commit
    • Function Multiversioning · 3649b9b7
      ========================
      
      Sriraman Tallam, tmsriram@google.com
      
      Overview of the patch which adds support to specify function versions.  This is
      only enabled for target i386.
      
      Example:
      
      int foo ();  /* Default version */
      int foo () __attribute__ ((target("avx,popcnt")));/*Specialized for avx and popcnt */
      int foo () __attribute__ ((target("arch=core2,ssse3")));/*Specialized for core2 and ssse3*/
      
      int main ()
      {
       int (*p)() = &foo;
       return foo () + (*p)();
      }
      
      int foo ()
      {
       return 0;
      }
      
      int __attribute__ ((target("avx,popcnt")))
      foo ()
      {
       return 0;
      }
      
      int __attribute__ ((target("arch=core2,ssse3")))
      foo ()
      {
       return 0;
      }
      
      The above example has foo defined 3 times, but all 3 definitions of foo are
      different versions of the same function. The call to foo in main, directly and
      via a pointer, are calls to the multi-versioned function foo which is dispatched
      to the right foo at run-time.
      
      Front-end changes:
      
      The front-end changes are calls at appropriate places to target hooks that
      determine the following:
      
      * Determine if two function decls with the same signature are versions.
      * Determine the assembler name of a function version.
      * Generate the dispatcher function for a set of function versions.
      * Compare versions to see if one has a higher priority over the other.
      
      All the implementation happens in the target-specific config/i386/i386.c.
      
      What does the patch do?
      
      * Tracking decls that correspond to function versions of function
      name, say "foo":
      
      When the front-end sees more than one decl for "foo", it calls a target hook to
      determine if they are versions. To prevent duplicate definition errors with
      other versions of "foo", "decls_match" function in cp/decl.c is made to return
      false when 2 decls have are deemed versions by the target. This will make all
      function versions of "foo" to be added to the overload list of "foo".
      
      * Change the assembler names of the function versions.
      
      For i386, the target changes the assembler names of the function versions by
       suffixing the sorted list of args to "target" to the function name of "foo".
      For example, the assembler name of
       "void foo () __attribute__ ((target ("sse4")))" will
      become _Z3foov.sse4.  The target hook mangle_decl_assembler_name is used
      for this.
      
      * Overload resolution:
      
       Function "build_over_call" in cp/call.c sees a call to function
      "foo", which is multi-versioned. The overload resolution happens in
      function "joust" in "cp/call.c". Here, the call to "foo" has all
      possible versions of "foo" as candidates. All the candidates of "foo" are
      stored in the cgraph side data structure. Each version of foo is chained in a 
      doubly-linked list with the default function as the first element.  This allows
      any pass to access all the semantically identical versions. A call to a
      multi-versioned function will be replaced by a call to a dispatcher function,
      determined by a target hook, to execute the right function version at run-time.
      
      Optimization to directly call a version when possible:
      Also, in joust, where overload resolution happens, a multiversioned function
      resolution is made to return the most specialized version.  This is the version
      that will be checked for dispatching first and is determined by the target.
      Now, if the caller can inline this function version then a direct call is made
      to this function version rather than go through the dispatcher. When a direct
      call cannot be made, a call to the dispatcher function is created.
      
      * Creating the dispatcher body.
      
      The dispatcher body, called the resolver is made only when there is a call to a
      multiversioned function dispatcher or the address of a function is taken. This
      is generated during cgraph_analyze_function. This is done by another target hook.
      
      * Dispatch ordering.
      
      The order in which the function versions are checked during dispatch is based
      on a priority value assigned for the ISA that is catered. More specialized 
      versions are checked for dispatching first.  This is to mitigate the ambiguity
      that can arise when more than one function version is valid for execution on
      a particular platform.  This is not a perfect solution, and in future the user
      should be allowed to assign a dispatching priority value to each version.
      
      Function MV in the Intel compiler:
      
      The intel compiler supports function multiversioning and the syntax is
      similar to the patch proposed here.  Here is an example of how to
      generate multiple function versions with the intel compiler.
      
      /* Create a stub function to specify the various versions of function that
         will be created, using declspec attribute cpu_dispatch.  */
      __declspec (cpu_dispatch (core_i7_sse4_2, atom, generic))
      void foo () {};
      
      /* Bodies of each function version.  */
      
      /* Intel Corei7 processor + SSE4.2 version.  */
      __declspec (cpu_specific(core_i7_sse4_2))
      void foo ()
      {
        printf ("corei7 + sse4.2");
      }
      
      /* Atom processor.  */
      __declspec (cpu_specific(atom))
      void foo ()
      {
        printf ("atom");
      }
      
      /* The generic or the default version.  */
      __declspec (cpu_specific(generic))
      void foo ()
      {
        printf ("This is generic");
      }
      
      A new function version is generated by defining a new function with the same
      signature but with a different cpu_specific declspec attribute string.  The
      set of cpu_specific strings that are allowed is the following:
      
      "core_2nd_gen_avx"
      "core_aes_pclmulqdq"
      "core_i7_sse4_2"
      "core_2_duo_sse4_1"
      "core_2_duo_ssse3"
      "atom"
      "pentium_4_sse3"
      "pentium_4"
      "pentium_m"
      "pentium_iii"
      "generic"
      
      Comparison with the GCC MV implementation in this patch:
      
      * Version creation syntax:
      
      The implementation in this patch also has a similar syntax to specify function
      versions. The first stub function is not needed.  Here is the code to generate
      the function versions with this patch:
      
      /* Intel Corei7 processor + SSE4.2 version.  */
      __attribute__ ((target ("arch=corei7, sse4.2")))
      void foo ()
      {
        printf ("corei7 + sse4.2");
      }
      
      /* Atom processor.  */
      __attribute__ ((target ("arch=atom")))
      void foo ()
      {
        printf ("atom");
      }
      
      void foo ()
      {
      }
      
      The target attribute can have one of the following arch names:
      
      "amd"
      "intel"
      "atom"
      "core2"
      "corei7"
      "nehalem"
      "westmere"
      "sandybridge"
      "amdfam10h"
      "barcelona"
      "shanghai"
      "istanbul"
      "amdfam15h"
      "bdver1"
      "bdver2"
      
      and any number of the following ISA names:
      
      "cmov"
      "mmx"
      "popcnt"
      "sse"
      "sse2"
      "sse3"
      "ssse3"
      "sse4.1"
      "sse4.2"
      "avx"
      "avx2"
      
      
      
      	* doc/tm.texi.in (TARGET_OPTION_FUNCTION_VERSIONS): New hook
      	description.
      	* (TARGET_COMPARE_VERSION_PRIORITY): New hook description.
      	* (TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New hook description.
      	* (TARGET_GENERATE_VERSION_DISPATCHER_BODY): New hook description.
      	* doc/tm.texi: Regenerate.
      	* target.def (compare_version_priority): New target hook.
      	* (generate_version_dispatcher_body): New target hook.
      	* (get_function_versions_dispatcher): New target hook.
      	* (function_versions): New target hook.
      	* cgraph.c (cgraph_fnver_htab): New htab.
      	(cgraph_fn_ver_htab_hash): New function.
      	(cgraph_fn_ver_htab_eq): New function.
      	(version_info_node): New pointer.
      	(insert_new_cgraph_node_version): New function.
      	(get_cgraph_node_version): New function.
      	(delete_function_version): New function.
      	(record_function_versions): New function.
      	* cgraph.h (cgraph_node): New bitfield dispatcher_function.
      	(cgraph_function_version_info): New struct.
      	(get_cgraph_node_version): New function.
      	(insert_new_cgraph_node_version): New function.
      	(record_function_versions): New function.
      	(delete_function_version): New function.
      	(init_lowered_empty_function): Expose function.
      	* tree.h (DECL_FUNCTION_VERSIONED): New macro.
      	(tree_function_decl): New bit-field versioned_function.
      	* cgraphunit.c (cgraph_analyze_function): Generate body of multiversion
      	function dispatcher.
      	(cgraph_analyze_functions): Analyze dispatcher function.
      	(init_lowered_empty_function): Make non-static. New parameter in_ssa.
      	(assemble_thunk): Add parameter to call to init_lowered_empty_function.
      	* config/i386/i386.c (add_condition_to_bb): New function.
      	(get_builtin_code_for_version): New function.
      	(ix86_compare_version_priority): New function.
      	(feature_compare): New function.
      	(dispatch_function_versions): New function.
      	(ix86_function_versions): New function.
      	(attr_strcmp): New function.
      	(ix86_mangle_function_version_assembler_name): New function.
      	(ix86_mangle_decl_assembler_name): New function.
      	(make_name): New function.
      	(make_dispatcher_decl): New function.
      	(is_function_default_version): New function.
      	(ix86_get_function_versions_dispatcher): New function.
      	(make_attribute): New function.
      	(make_resolver_func): New function.
      	(ix86_generate_version_dispatcher_body): New function.
      	(fold_builtin_cpu): Return integer for cpu builtins.
      	(TARGET_MANGLE_DECL_ASSEMBLER_NAME): New macro.
      	(TARGET_COMPARE_VERSION_PRIORITY): New macro.
      	(TARGET_GENERATE_VERSION_DISPATCHER_BODY): New macro.
      	(TARGET_GET_FUNCTION_VERSIONS_DISPATCHER): New macro.
      	(TARGET_OPTION_FUNCTION_VERSIONS): New macro.
      
      	* class.c (add_method): Change assembler names of function versions.
      	(mark_versions_used): New static function.
      	(resolve_address_of_overloaded_function): Create dispatcher decl and
      	return address of dispatcher instead.
      	* decl.c (decls_match): Make decls unmatched for versioned
      	functions.
      	(duplicate_decls): Remove ambiguity for versioned functions.
      	Delete versioned function data for merged decls. 
      	* decl2.c (check_classfn): Check attributes of versioned functions
      	for match.
      	* call.c (get_function_version_dispatcher): New function.
      	(mark_versions_used): New static function.
      	(build_over_call): Make calls to multiversioned functions
      	to call the dispatcher.
      	(joust): For calls to multi-versioned functions, make the most
      	specialized function version win.
      
      	* testsuite/g++.dg/mv1.C: New test.
      	* testsuite/g++.dg/mv2.C: New test.
      	* testsuite/g++.dg/mv3.C: New test.
      	* testsuite/g++.dg/mv4.C: New test.
      	* testsuite/g++.dg/mv5.C: New test.
      	* testsuite/g++.dg/mv6.C: New test.
      
      From-SVN: r193204
      Sriraman Tallam committed
  30. 31 Oct, 2012 1 commit
    • This patch implements generic type query and conversion functions, · 5d59b5e1
      and applies them to the use of cgraph_node, varpool_node, and symtab_node.
      
      The functions are:
      
      bool is_a <TYPE> (pointer)
        Tests whether the pointer actually points to a more derived TYPE.
      
      TYPE *as_a <TYPE> (pointer)
        Converts pointer to a TYPE*.
      
      TYPE *dyn_cast <TYPE> (pointer)
        Converts pointer to TYPE* if and only if "is_a <TYPE> pointer".
        Otherwise, returns NULL.
        This function is essentially a checked down cast.
      
      These functions reduce compile time and increase type safety when treating a
      generic item as a more specific item.  In essence, the code change is from
      
        if (symtab_function_p (node))
          {
            struct cgraph_node *cnode = cgraph (node);
            ....
          }
      
      to
      
        if (cgraph_node *cnode = dyn_cast <cgraph_node> (node))
          {
            ....
          }
      
      The necessary conditional test defines a variable that holds a known good
      pointer to the specific item and avoids subsequent conversion calls and
      the assertion checks that may come with them.
      
      When, the property test is embedded within a larger condition, the variable
      declaration gets pulled out of the condition.  (This leaves some room for
      using the variable inappropriately.)
      
        if (symtab_variable_p (node)
            && varpool (node)->finalized)
          varpool_analyze_node (varpool (node));
      
      becomes
      
        varpool_node *vnode = dyn_cast <varpool_node> (node);
        if (vnode && vnode->finalized)
          varpool_analyze_node (vnode);
      
      Note that we have converted two sets of assertions in the calls to varpool
      into safe and efficient use of a variable.
      
      
      There are remaining calls to symtab_function_p and symtab_variable_p that
      do not involve a pointer to a more specific type.  These have been converted
      to calls to a functions is_a <cgraph_node> and is_a <varpool_node>.  The
      original predicate functions have been removed.
      
      The cgraph.h header defined both a struct and a function with the name
      varpool_node.  This name overloading can cause some unintuitive error messages
      when, as is common in C++, one omits the struct keyword when using the type.
      I have renamed the function to varpool_node_for_decl.
      
      Tested on x86_64.
      
      
      Index: gcc/ChangeLog
      
      2012-10-31  Lawrence Crowl  <crowl@google.com>
      
      	* is-a.h: New.
      	(is_a <T> (U*)): New.  Test for is-a relationship.
      	(as_a <T> (U*)): New.  Treat as a derived type.
      	(dyn_cast <T> (U*)): New.  Conditionally cast based on is_a.
      	* cgraph.h (varpool_node): Rename to varpool_node_for_decl.
      	Adjust callers to match.
      	(is_a_helper <cgraph_node>::test (symtab_node_def *)): New.
      	(is_a_helper <varpool_node>::test (symtab_node_def *)): New.
      	(symtab_node_def::try_function): New.  Change most calls to
      	symtab_function_p with calls to dyn_cast <cgraph_node> (p).
      	(symtab_node_def::try_variable): New.  Change most calls to
      	symtab_variable_p with calls to dyn_cast <varpool_node> (p).
      	(symtab_function_p): Remove.  Change callers to use
              is_a <cgraph_node> (p) instead.
      	(symtab_variable_p): Remove.  Change callers to use
              is_a <varpool_node> (p) instead.
      	* cgraph.c (cgraph_node_for_asm): Remove redundant call to
      	symtab_node_for_asm.
      	* cgraphunit.c (symbol_finalized_and_needed): New.
      	(symbol_finalized): New.
      	(cgraph_analyze_functions): Split complicated conditionals out into
      	above new functions.
      	* Makefile.in (CGRAPH_H): Add is-a.h as used by cgraph.h.
      
      From-SVN: r193051
      Lawrence Crowl committed
  31. 28 Sep, 2012 1 commit
  32. 19 Sep, 2012 1 commit
    • symtab.c (insert_to_assembler_name_hash): Do not insert register vars. · b5493fb2
      	* symtab.c (insert_to_assembler_name_hash): Do not insert
      	register vars.
      	(unlink_from_assembler_name_hash): NULL out pointers of unlinked
      	var.
      	(symtab_prevail_in_asm_name_hash): New.
      	(symtab_initialize_asm_name_hash): Break out from ...
      	(symtab_node_for_asm): ... here.
      	(dump_symtab_base): Dump LTO file data.
      	(verify_symtab_base): Register vars are not in symtab.
      	* cgraph.h (symtab_initialize_asm_name_hash,
      	symtab_prevail_in_asm_name_hash): New functions.
      	(symtab_real_symbol_p): New inline.
      	* lto-symtab.c: Do not include gt-lto-symtab.h.
      	(lto_symtab_entry_def): Remove.
      	(lto_symtab_entry_t): Remove.
      	(lto_symtab_identifiers): Remove.
      	(lto_symtab_free): Remove.
      	(lto_symtab_entry_hash): Remove.
      	(lto_symtab_entry_eq): Remove.
      	(lto_symtab_entry_marked_p): Remove.
      	(lto_symtab_maybe_init_hash_table): Remove.
      	(resolution_guessed_p, set_resolution_guessed): New functions.
      	(lto_symtab_register_decl): Only set resolution info.
      	(lto_symtab_get, lto_symtab_get_resolution): Remove.
      	(lto_symtab_merge): Reorg to work across symtab; do nothing if decls
      	are same.
      	(lto_symtab_resolve_replaceable_p): Reorg to work on symtab.
      	(lto_symtab_resolve_can_prevail_p): Likewise; only real symbols can
      	prevail.
      	(lto_symtab_resolve_symbols): Reorg to work on symtab.
      	(lto_symtab_merge_decls_2): Likewise.
      	(lto_symtab_merge_decls_1): Likewise; add debug dumps.
      	(lto_symtab_merge_decls): Likewise; do not merge at ltrans stage.
      	(lto_symtab_merge_cgraph_nodes_1): Reorg to work on symtab.
      	(lto_symtab_merge_cgraph_nodes): Likewise; do not merge at ltrans stage.
      	(lto_symtab_prevailing_decl): Rewrite to lookup into symtab.
      	* lto-streaer.h (lto_symtab_free): Remove.
      	* lto-cgraph.c (add_references): Cleanup.
      	* varpool.c (varpool_assemble_decl): Skip hard regs.
      
      	* lto.c (lto_materialize_function): Update confused comment.
      	(read_cgraph_and_symbols): Do not free symtab.
      
      From-SVN: r191466
      Jan Hubicka committed
  33. 11 Aug, 2012 1 commit
    • cgraph.h (vector types for symtab_node): Add. · 7380e6ef
      	* cgraph.h (vector types for symtab_node): Add.
      	* ipa-reference.c (ipa_reference_write_optimization_summary): Update
      	for new symtab encoder.
      	(ipa_reference_read_optimization_summary): Likewise.
      	* lto-cgraph.c (output_varpool): Remove.
      	(input_cgraph_opt_summary): Take symtab nodes vector as argument.
      	(LTO_cgraph_tags): Rename to ...
      	(LTO_symtab_tags): ... this one; add LTO_symtab_variable.
      	(lto_cgraph_encoder_new): Rename to ...
      	(lto_symtab_encoder_new): ... this on.
      	(lto_cgraph_encoder_encode): Rename to ...
      	(lto_symtab_encoder_encode): ... this one.
      	(lto_cgraph_encoder_delete): Rename to ...
      	(lto_symtab_encoder_delete): ... this one.
      	(lto_cgraph_encoder_deref): Rename to ...
      	(lto_symtab_encoder_deref): ... this one.
      	(lto_cgraph_encoder_encode_body_p): Rename to ...
      	(lto_symtab_encoder_encode_body_p): ... this one.
      	(lto_varpool_encoder_new, lto_varpool_encoder_delete,
      	lto_varpool_encoder_encode, lto_varpool_encoder_lookup,
      	lto_varpool_encoder_deref): Remove.
      	(lto_varpool_encoder_encode_initializer_p): Rename to ...
      	(lto_symtab_encoder_encode_initializer_p): ... this one.
      	(lto_set_varpool_encoder_encode_initializer): Rename to ...
      	(lto_set_symtab_encoder_encode_initializer): ... this one.
      	(lto_output_edge): Update.
      	(lto_output_node): Update.
      	(lto_output_varpool_node): Update; stream out LTO_symtab_variable tag.
      	(lto_output_ref): Drop varpool_encoder; update.
      	(add_node_to): Update.
      	(add_references): Update.
      	(output_outgoing_cgraph_edges): Update.
      	(output_refs): Update.	
      	(compute_ltrans_boundary): Update.
      	(output_cgraph): Update; output varpools too.
      	(input_overwrite_node): Update.
      	(output_varpool): Remove.
      	(input_node): Update.
      	(input_ref): Update.
      	(input_edge): Update.
      	(input_cgraph_1): Update; input varpool too; unify fixup code.
      	(input_varpool_1): Remove.
      	(input_refs): Update.
      	(input_cgraph): Update.
      	(output_node_opt_summary): Update.
      	(input_cgraph_opt_section): Update.
      	(input_cgraph_opt_summary): Update.
      	* ipa-pure-const.c (pure_const_write_summary): Update.
      	(pure_const_read_summary): Update.
      	* lto-streamer-out.c (lto_write_tree): Update.
      	(lto_output): Likewise.
      	(produce_symtab): Update.
      	(produce_asm_for_decls): Update.
      	* ipa-inline-analysis.c (inline_read_section): Update.
      	(inline_write_summary): Update.
      	* ipa-prop.c (ipa_write_node_info): Update.
      	(ipa_prop_read_section): Update.
      	* lto-streamer.h (lto_cgraph_encoder_d): Rename to ...
      	(lto_symtab_encoder_d): ... this one;  add initializer.
      	(lto_cgraph_encoder_t): Rename to ...
      	(lto_symtab_encoder_t): ... this one.
      	(lto_cgraph_encoder_size): Rename to ...
      	(lto_symtab_encoder_size): ... this one.
      	(lto_varpool_encoder_d): ... remove.
      	(lto_varpool_encoder_t): Remove.
      	(lto_out_decl_state): Remove cgraph_node_encoder, varpool_node_encoder
      	add symtab_node_encoder.
      	(lto_file_decl_data): Likewise.
      	(lto_cgraph_encoder_deref, lto_cgraph_encoder_lookup,
      	lto_cgraph_encoder_new, lto_cgraph_encoder_encode, lto_cgraph_encoder_delete,
      	lto_cgraph_encoder_encode_body_p, lto_varpool_encoder_encode_body_p,
      	lto_varpool_encoder_deref, lto_varpool_encoder_lookup, lto_varpool_encoder_new,
      	lto_varpool_encoder_encode, lto_varpool_encoder_delete,
      	lto_varpool_encoder_encode_initializer_p): Remove.
      	(lto_symtab_encoder_deref, lto_symtab_encoder_lookup,
      	lto_symtab_encoder_t, lto_symtab_encoder_encode, lto_symtab_encoder_delete,
      	lto_symtab_encoder_encode_body_p, lto_symtab_encoder_encode_initializer_p):
      	New.
      
      From-SVN: r190309
      Jan Hubicka committed
  34. 09 Aug, 2012 1 commit
    • cgraph.h (cgraph_indirect_call_info): Field anc_offse renamd to offset, updated all users. · 8b7773a4
      2012-08-09  Martin Jambor  <mjambor@suse.cz>
      
      	* cgraph.h (cgraph_indirect_call_info): Field anc_offse renamd to
      	offset, updated all users.  New field agg_contents.
      	* ipa-prop.h (jump_func_type): Removed IPA_JF_CONST_MEMBER_PTR.
      	(ipa_pass_through_data): New field agg_preserved.
      	(ipa_ancestor_jf_data): Likewise.
      	(ipa_member_ptr_cst): Removed.
      	(ipa_agg_jf_item): New type.
      	(ipa_agg_jump_function): Likewise.
      	(ipa_jump_func): New field agg.  Removed field member_cst.
      	(ipa_get_jf_pass_through_agg_preserved): New function.
      	(ipa_get_jf_ancestor_agg_preserved): Likewise.
      	(ipa_get_jf_member_ptr_pfn): Removed.
      	(ipa_find_agg_cst_for_param): Declare.
      	(ipa_load_from_parm_agg): Likewise.
      	* ipa-prop.c (param_analysis_info): Fields modified and
      	visited_statements rename to parm_modified and parm_visited_statements
      	respectively, added fields ref_modified, ref_visited_statements,
      	pt_modified and pt_visited_statements.
      	(ipa_print_node_jump_functions_for_edge): Do not dump const member
      	functions.  Dump agg_preserved flags and aggregate jump functions.
      	(ipa_set_jf_simple_pass_through): Set also agg_preserved.
      	(ipa_set_ancestor_jf): Likewise.
      	(ipa_set_jf_arith_pass_through): Clear agg_preserved.
      	(ipa_set_jf_member_ptr_cst): Removed.
      	(is_parm_modified_before_stmt): Logic reversed, renamed to
      	parm_preserved_before_stmt_p.  Cache visited bitmap only for
      	naked DECL parameters.  All callers updated.
      	(load_from_unmodified_param): Allow NULL parms_ainfo.
      	(parm_ref_data_preserved_p): New function.
      	(parm_ref_data_pass_through_p): Likewise.
      	(ipa_load_from_parm_agg_1): Likewise.
      	(ipa_load_from_parm_agg): Likewise.
      	(compute_complex_assign_jump_func): Check if aggregate contents are
      	preserved.
      	(compute_complex_ancestor_jump_func): Likewise.
      	(compute_scalar_jump_functions): Removed.
      	(type_like_member_ptr_p): Also check field position are known and
      	sane.
      	(compute_pass_through_member_ptrs): Removed.
      	(determine_cst_member_ptr): Likewise.
      	(ipa_known_agg_contents_list): New type.
      	(determine_known_aggregate_parts): New function.
      	(compute_cst_member_ptr_arguments): Removed.
      	(ipa_compute_jump_functions_for_edge): Compute all kinds of jump
      	functions (scalar, aggregate and member pointer).
      	(ipa_get_member_ptr_load_param): Incorporate into
      	ipa_get_stmt_member_ptr_load_param, also pass back an offset.
      	(ipa_note_param_call): Clear agg_contents.
      	(ipa_analyze_indirect_call_uses): Also look for simple pointers loaded
      	from aggregates.  In such cases, store offset of the called field.
      	(ipa_analyze_node): Initialize new fields of param_analysis_info.
      	(update_jump_functions_after_inlining): Handle aggregate contents.
      	(ipa_find_agg_cst_for_param): New function.
      	(try_make_edge_direct_simple_call): Handle called aggregate values.
      	(update_indirect_edges_after_inlining): Make sure aggregate preserving
      	jump functions comply with type compatibility requirements.
      	(ipa_edge_duplication_hook): Copy also aggregate jump functions.
      	(ipa_write_jump_function): Stream agg_preserved flags and aggregate
      	jump functions.  Do not stream member pointer constant jump functions.
      	(ipa_read_jump_function): Likewise.
      	(ipa_write_indirect_edge_info): Stream new cgraph_indirect_call_info
      	fields.
      	(ipa_read_indirect_edge_info): Likewise.
      
      	* testsuite/gcc.dg/ipa/iinline-4.c: New test.
      	* testsuite/gcc.dg/ipa/iinline-5.c: Likewise.
      	* testsuite/gcc.dg/ipa/iinline-6.c: Likewise.
      	* testsuite/gcc.dg/ipa/iinline-7.c: Likewise.
      	* testsuite/gcc.dg/lto/20120723_0.c: Likewise.
      	* testsuite/gcc.dg/lto/20120723_1.c: Likewise.
      
      From-SVN: r190260
      Martin Jambor committed
  35. 26 Jun, 2012 1 commit
  36. 29 May, 2012 1 commit
    • LANGUAGES: Fix typos. · 073a8998
      	* LANGUAGES: Fix typos.
      	* Makefile.in: Fix typos.
      	* alias.c: Fix typos.
      	* auto-inc-dec.c: Fix typos.
      	* bb-reorder.c: Fix typos.
      	* cfgcleanup.c: Fix typos.
      	* cgraph.c: Fix typos.
      	* cgraph.h: Fix typos.
      	* cgraphunit.c: Fix typos.
      	* collect2-aix.h: Fix typos.
      	* collect2.c: Fix typos.
      	* compare-elim.c: Fix typos.
      	* config/alpha/vms.h: Fix typos.
      	* config/arm/README-interworking: Fix typos.
      	* config/arm/arm.c: Fix typos.
      	* config/arm/iterators.md: Fix typos.
      	* config/arm/vxworks.h: Fix typos.
      	* config/avr/avr.c: Fix typos.
      	* config/avr/avr.h: Fix typos.
      	* config/avr/avr.md: Fix typos.
      	* config/avr/builtins.def: Fix typos.
      	* config/c6x/c6x.c: Fix typos.
      	* config/cr16/cr16.c: Fix typos.
      	* config/cr16/cr16.md: Fix typos.
      	* config/cris/cris.md: Fix typos.
      	* config/darwin.c: Fix typos.
      	* config/darwin.opt: Fix typos.
      	* config/i386/i386-c.c: Fix typos.
      	* config/i386/i386.c: Fix typos.
      	* config/ia64/ia64.c: Fix typos.
      	* config/m68k/cf.md: Fix typos.
      	* config/mep/mep.c: Fix typos.
      	* config/microblaze/microblaze.c: Fix typos.
      	* config/microblaze/microblaze.h: Fix typos.
      	* config/mn10300/mn10300.c: Fix typos.
      	* config/mn10300/mn10300.md: Fix typos.
      	* config/pa/pa.c: Fix typos.
      	* config/picochip/picochip.h: Fix typos.
      	* config/rs6000/a2.md: Fix typos.
      	* config/rs6000/rs6000.c: Fix typos.
      	* config/rs6000/vector.md: Fix typos.
      	* config/rx/rx.md: Fix typos.
      	* config/rx/rx.opt: Fix typos.
      	* config/s390/2097.md: Fix typos.
      	* config/s390/s390.c: Fix typos.
      	* config/s390/s390.h: Fix typos.
      	* config/sh/sh.c: Fix typos.
      	* config/sh/sh.md: Fix typos.
      	* config/sparc/sync.md: Fix typos.
      	* config/spu/spu.c: Fix typos.
      	* config/spu/spu.md: Fix typos.
      	* config/vms/vms.c: Fix typos.
      	* config/vxworks-dummy.h: Fix typos.
      	* config/vxworks.h: Fix typos.
      	* cselib.c: Fix typos.
      	* df-scan.c: Fix typos.
      	* df.h: Fix typos.
      	* doc/extend.texi: Fix typos.
      	* doc/install.texi: Fix typos.
      	* doc/invoke.texi: Fix typos.
      	* doc/md.texi: Fix typos.
      	* doc/plugins.texi: Fix typos.
      	* doc/rtl.texi: Fix typos.
      	* dse.c: Fix typos.
      	* dwarf2asm.c: Fix typos.
      	* dwarf2out.c: Fix typos.
      	* except.h: Fix typos.
      	* expr.c: Fix typos.
      	* fold-const.c: Fix typos.
      	* gcc.c: Fix typos.
      	* gcse.c: Fix typos.
      	* genautomata.c: Fix typos.
      	* gengtype-state.c: Fix typos.
      	* gengtype.c: Fix typos.
      	* genhooks.c: Fix typos.
      	* gimple-fold.c: Fix typos.
      	* gimple-pretty-print.c: Fix typos.
      	* gimple.c: Fix typos.
      	* gimple.h: Fix typos.
      	* gimplify.c: Fix typos.
      	* graphite-interchange.c: Fix typos.
      	* graphite-sese-to-poly.c: Fix typos.
      	* ifcvt.c: Fix typos.
      	* input.c: Fix typos.
      	* ipa-cp.c: Fix typos.
      	* ipa-inline-analysis.c: Fix typos.
      	* ipa-inline-transform.c: Fix typos.
      	* ipa-inline.c: Fix typos.
      	* ipa-pure-const.c: Fix typos.
      	* ipa-ref.h: Fix typos.
      	* ipa-reference.c: Fix typos.
      	* ipa-utils.c: Fix typos.
      	* ipa.c: Fix typos.
      	* ira-emit.c: Fix typos.
      	* ira-lives.c: Fix typos.
      	* lto-streamer.c: Fix typos.
      	* lto-streamer.h: Fix typos.
      	* lto-wrapper.c: Fix typos.
      	* mcf.c: Fix typos.
      	* mode-switching.c: Fix typos.
      	* modulo-sched.c: Fix typos.
      	* plugin.c: Fix typos.
      	* postreload.c: Fix typos.
      	* sched-deps.c: Fix typos.
      	* sel-sched-ir.c: Fix typos.
      	* sel-sched-ir.h: Fix typos.
      	* sel-sched.c: Fix typos.
      	* sese.c: Fix typos.
      	* stor-layout.c: Fix typos.
      	* target-hooks-macros.h: Fix typos.
      	* target.def: Fix typos.
      	* trans-mem.c: Fix typos.
      	* tree-eh.c: Fix typos.
      	* tree-predcom.c: Fix typos.
      	* tree-sra.c: Fix typos.
      	* tree-ssa-address.c: Fix typos.
      	* tree-ssa-loop-ivopts.c: Fix typos.
      	* tree-ssa-loop-niter.c: Fix typos.
      	* tree-ssa-math-opts.c: Fix typos.
      	* tree-ssa-pre.c: Fix typos.
      	* tree-ssa-propagate.c: Fix typos.
      	* tree-ssa-reassoc.c: Fix typos.
      	* tree-ssa-sccvn.c: Fix typos.
      	* tree-ssa-ter.c: Fix typos.
      	* tree-ssa-uninit.c: Fix typos.
      	* tree-ssanames.c: Fix typos.
      	* tree-vect-generic.c: Fix typos.
      	* tree-vect-slp.c: Fix typos.
      	* tree.c: Fix typos.
      	* tree.h: Fix typos.
      	* varasm.c: Fix typos.
      	* varpool.c: Fix typos.
      
      From-SVN: r187959
      Joseph Myers committed