1. 18 Jan, 2013 1 commit
  2. 10 Jan, 2013 1 commit
  3. 09 Jan, 2013 1 commit
  4. 02 Jan, 2013 1 commit
  5. 16 Dec, 2012 1 commit
  6. 15 Dec, 2012 1 commit
  7. 18 Nov, 2012 2 commits
    • expr.c (expand_assignment): Don't set MEM_KEEP_ALIAS_SET_P here. · a787ccc3
      gcc/
      	* expr.c (expand_assignment): Don't set MEM_KEEP_ALIAS_SET_P here.
      	* emit-rtl.c (set_mem_attributes_minus_bitpos): Handle DECL_BIT_FIELDs,
      	using their size instead of the COMPONENT_REF's.
      
      From-SVN: r193599
      Richard Sandiford committed
    • 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
  8. 15 Nov, 2012 1 commit
  9. 10 Nov, 2012 1 commit
    • expr.c (store_field): Remove TYPE parameter. · 3467ad5c
      	* expr.c (store_field): Remove TYPE parameter.  Remove block of code
      	dealing with BLKmode in registers.  Reimplement this support using
      	pseudo-registers and bit-field techniques.
      	(store_constructor_field): Remove TYPE parameter and adjust calls to
      	store_field.
      	(expand_assignment): Adjust calls to store_field.  Add comment.
      	(store_expr): Add comment.
      	(store_constructor): Adjust calls to store_constructor_field.
      	(expand_expr_real_2): Adjust call to store_field.
      
      From-SVN: r193391
      Eric Botcazou committed
  10. 07 Nov, 2012 1 commit
  11. 04 Nov, 2012 1 commit
  12. 01 Nov, 2012 1 commit
    • tree-eh.c (do_return_redirection): Set location for jump statement. · 29f5bccb
      gcc:
      2012-10-31  Dehao Chen  <dehao@google.com>
      
      	* tree-eh.c (do_return_redirection): Set location for jump statement.
      	(do_goto_redirection): Likewise.
      	(frob_into_branch_around): Likewise.
      	(lower_try_finally_nofallthru): Likewise.
      	(lower_try_finally_copy): Likewise.
      	(lower_try_finally_switch): Likewise.
      	* expr.c (store_expr): Use current insn location instead of expr
      	location.
      	(expand_expr_real): Likewise.
      	(expand_expr_real_1): Likewise.
      
      gcc/testsuite:
      2012-10-31  Dehao Chen  <dehao@google.com>
      
      	* g++.dg/debug/dwarf2/block.C: New testcase.
      
      From-SVN: r193053
      Dehao Chen committed
  13. 31 Oct, 2012 1 commit
  14. 30 Oct, 2012 1 commit
  15. 25 Oct, 2012 1 commit
  16. 23 Oct, 2012 1 commit
    • dbxout.c (dbxout_symbol_location): Pass new argument to alter_subreg. · 55a2c322
      2012-10-23  Vladimir Makarov  <vmakarov@redhat.com>
      
      	* dbxout.c (dbxout_symbol_location): Pass new argument to
      	alter_subreg.
      	* dwarf2out.c: Include ira.h and lra.h.
      	(based_loc_descr, compute_frame_pointer_to_fb_displacement): Use
      	lra_eliminate_regs for LRA instead of eliminate_regs.
      	* expr.c (emit_move_insn_1): Pass an additional argument to
      	emit_move_via_integer.  Use emit_move_via_integer for LRA only if
      	the insn is recognized.
      	* emit-rtl.c (gen_rtx_REG): Add lra_in_progress.
      	(validate_subreg): Don't check offset for LRA and floating point
      	modes.
      	* final.c (final_scan_insn, cleanup_subreg_operands): Pass new
      	argument to alter_subreg.
      	(walk_alter_subreg, output_operand): Ditto.
      	(alter_subreg): Add new argument.
      	* gcse.c (calculate_bb_reg_pressure): Add parameter to
      	ira_setup_eliminable_regset call.
      	* ira.c: Include lra.h.
      	(ira_init_once, ira_init, ira_finish_once): Call lra_start_once,
      	lra_init, lra_finish_once in anyway.
      	(ira_setup_eliminable_regset): Add parameter.  Remove need_fp.
      	Call lra_init_elimination and mark HARD_FRAME_POINTER_REGNUM as
      	living forever if frame_pointer_needed.
      	(setup_reg_class_relations): Set up ira_reg_class_subset.
      	(ira_reg_equiv_invariant_p, ira_reg_equiv_const): Remove.
      	(find_reg_equiv_invariant_const): Ditto.
      	(setup_reg_renumber): Use ira_equiv_no_lvalue_p instead of
      	ira_reg_equiv_invariant_p.  Skip caps for LRA.
      	(setup_reg_equiv_init, ira_update_equiv_info_by_shuffle_insn): New
      	functions.
      	(ira_reg_equiv_len, ira_reg_equiv): New externals.
      	(ira_reg_equiv): New.
      	(ira_expand_reg_equiv, init_reg_equiv, finish_reg_equiv): New
      	functions.
      	(no_equiv, update_equiv_regs): Use ira_reg_equiv instead of
      	reg_equiv_init.
      	(setup_reg_equiv): New function.
      	(ira_use_lra_p): New global.
      	(ira): Set up lra_simple_p and ira_conflicts_p.  Set up and
      	restore flag_caller_saves and flag_ira_region.  Move
      	initialization of ira_obstack and ira_bitmap_obstack upper.  Call
      	init_reg_equiv, setup_reg_equiv, and setup_reg_equiv_init instead
      	of initialization of ira_reg_equiv_len, ira_reg_equiv_invariant_p,
      	and ira_reg_equiv_const.  Call ira_setup_eliminable_regset with a
      	new argument.  Don't flatten IRA IRA for LRA.  Don't reassign
      	conflict allocnos for LRA. Call finish_reg_equiv.
              (do_reload): Prepare code for LRA call.  Call LRA.
      	* ira.h (ira_use_lra_p): New external.
      	(struct target_ira): Add members x_ira_class_subset_p
      	x_ira_reg_class_subset, and x_ira_reg_classes_intersect_p.
      	(ira_class_subset_p, ira_reg_class_subset): New macros.
      	(ira_reg_classes_intersect_p): New macro.
      	(struct ira_reg_equiv): New.
      	(ira_setup_eliminable_regset): Add an argument.
      	(ira_expand_reg_equiv, ira_update_equiv_info_by_shuffle_insn): New
      	prototypes.
      	* ira-color.c (color_pass, move_spill_restore, coalesce_allocnos):
      	Use ira_equiv_no_lvalue_p.
      	(coalesce_spill_slots, ira_sort_regnos_for_alter_reg): Ditto.
      	* ira-emit.c (ira_create_new_reg): Call ira_expand_reg_equiv.
      	(generate_edge_moves, change_loop) Use ira_equiv_no_lvalue_p.
      	(emit_move_list): Simplify code.  Call
      	ira_update_equiv_info_by_shuffle_insn.  Use ira_reg_equiv instead
      	of ira_reg_equiv_invariant_p and ira_reg_equiv_const.  Change
      	assert.
      	* ira-int.h (struct target_ira_int): Remove x_ira_class_subset_p
      	and x_ira_reg_classes_intersect_p.
      	(ira_class_subset_p, ira_reg_classes_intersect_p): Remove.
      	(ira_reg_equiv_len, ira_reg_equiv_invariant_p): Ditto.
      	(ira_reg_equiv_const): Ditto.
      	(ira_equiv_no_lvalue_p): New function.
      	* jump.c (true_regnum): Always use hard_regno for subreg_get_info
      	when lra is in progress.
      	* haifa-sched.c (sched_init): Pass new argument to
      	ira_setup_eliminable_regset.
      	* loop-invariant.c (calculate_loop_reg_pressure): Pass new
      	argument to ira_setup_eliminable_regset.
      	* lra.h: New.
      	* lra-int.h: Ditto.
      	* lra.c: Ditto.
      	* lra-assigns.c: Ditto.
      	* lra-constraints.c: Ditto.
      	* lra-coalesce.c: Ditto.
      	* lra-eliminations.c: Ditto.
      	* lra-lives.c: Ditto.
      	* lra-spills.c: Ditto.
      	* Makefile.in (LRA_INT_H): New.
      	(OBJS): Add lra.o, lra-assigns.o, lra-coalesce.o,
      	lra-constraints.o, lra-eliminations.o, lra-lives.o, and
      	lra-spills.o.
      	(dwarf2out.o): Add dependence on ira.h and lra.h.
      	(ira.o): Add dependence on lra.h.
      	(lra.o, lra-assigns.o, lra-coalesce.o, lra-constraints.o): New
      	entries.
      	(lra-eliminations.o, lra-lives.o, lra-spills.o): Ditto.
      	* output.h (alter_subreg): Add new argument.
      	* rtlanal.c (simplify_subreg_regno): Permit mode changes for LRA.
      	Permit ARG_POINTER_REGNUM and STACK_POINTER_REGNUM for LRA.
      	* recog.c (general_operand, register_operand): Accept paradoxical
      	FLOAT_MODE subregs for LRA.
      	(scratch_operand): Accept pseudos for LRA.
      	* rtl.h (lra_in_progress): New external.
      	(debug_bb_n_slim, debug_bb_slim, print_value_slim): New
      	prototypes.
      	(debug_rtl_slim, debug_insn_slim): Ditto.
      	* sdbout.c (sdbout_symbol): Pass new argument to alter_subreg.
      	* sched-vis.c (print_value_slim): New.
      	* target.def (lra_p): New hook.
      	(register_priority): Ditto.
      	(different_addr_displacement_p): Ditto.
      	(spill_class): Ditto.
      	* target-globals.h (this_target_lra_int): New external.
      	(target_globals): New member lra_int.
      	(restore_target_globals): Restore this_target_lra_int.
      	* target-globals.c: Include lra-int.h.
      	(default_target_globals): Add &default_target_lra_int.
      	* targhooks.c (default_lra_p): New function.
      	(default_register_priority): Ditto.
      	(default_different_addr_displacement_p): Ditto.
      	* targhooks.h (default_lra_p): Declare.
      	(default_register_priority): Ditto.
      	(default_different_addr_displacement_p): Ditto.
      	* timevar.def (TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE): New.
      	(TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE): New.
      	* config/arm/arm.c (load_multiple_sequence): Pass new argument toOB
      	alter_subreg.
      	(store_multiple_sequence): Ditto.
      	* config/i386/i386.h (enum ix86_tune_indices): Add
      	X86_TUNE_GENERAL_REGS_SSE_SPILL.
      	(TARGET_GENERAL_REGS_SSE_SPILL): New macro.
      	* config/i386/i386.c (initial_ix86_tune_features): Set up
      	X86_TUNE_GENERAL_REGS_SSE_SPILL for m_COREI7 and m_CORE2I7.
      	(ix86_lra_p, ix86_register_priority): New functions.
      	(ix86_secondary_reload): Add NON_Q_REGS, SIREG, DIREG.
      	(inline_secondary_memory_needed): Change assert.
      	(ix86_spill_class): New function.
      	(TARGET_LRA_P, TARGET_REGISTER_BANK, TARGET_SPILL_CLASS): New
      	macros.
      	* config/m68k/m68k.c (emit_move_sequence): Pass new argument to
      	alter_subreg.
      	* config/m32r/m32r.c (gen_split_move_double): Ditto.
      	* config/pa/pa.c (pa_emit_move_sequence): Ditto.
      	* config/sh/sh.md: Ditto.
      	* config/v850/v850.c (v850_reorg): Ditto.
      	* config/xtensa/xtensa.c (fixup_subreg_mem): Ditto.
      	* doc/md.texi: Add new interpretation of hint * for LRA.
      	* doc/passes.texi: Describe LRA pass.
      	* doc/tm.texi.in: Add TARGET_LRA_P, TARGET_REGISTER_PRIORITY,
      	TARGET_DIFFERENT_ADDR_DISPLACEMENT_P, and TARGET_SPILL_CLASS.
      	* doc/tm.texi: Update.
      
      From-SVN: r192719
      Vladimir Makarov committed
  17. 20 Oct, 2012 1 commit
    • re PR middle-end/54315 (unnecessary copy of return value for union) · 929634d8
      	PR rtl-optimization/54315
      	* calls.c (expand_call): Don't deal specifically with BLKmode values
      	returned in naked registers.
      	* expr.h (copy_blkmode_from_reg): Adjust prototype.
      	* expr.c (copy_blkmode_from_reg): Rename first parameter into TARGET and
      	make it required.  Assert that SRCREG hasn't BLKmode.  Add a couple of 
      	short-circuits for common cases and be prepared for sub-word registers.
      	(expand_assignment): Call copy_blkmode_from_reg for BLKmode values
      	returned in naked registers.
      	(store_expr): Likewise.
      	(store_field): Likewise.
      
      From-SVN: r192641
      Eric Botcazou committed
  18. 16 Oct, 2012 2 commits
    • 2012-10-16 Tom de Vries <tom@codesourcery.com> · f841b683
      	* expr.c (move_by_pieces, move_by_pieces_ninsns, can_store_by_pieces)
      	(store_by_pieces_1): Don't enter loop when no more data is left.
      
      From-SVN: r192514
      Tom de Vries committed
    • [multiple changes] · a4da41e1
      2012-10-15   Easwaran Raman  <eraman@google.com>
      
              * optabs.c (emit_cmp_and_jump_insn_1): Add a new parameter to
              specificy the probability of taking the jump.
              (emit_cmp_and_jump_insns): Likewise.
              (expand_compare_and_swap_loop): Make the jump predicted not taken.
              * dojump.c (do_compare_rtx_and_jump): Remove the code attaching
              REG_BR_PROB note and pass probability to emit_cmp_and_jump_insns.
              * cfgbuild.c (compute_outgoing_frequencies): Do not guess outgoing
              probabilities for branches with more than two successors.
              * expr.c (emit_block_move_via_loop): Predict the loop backedge loop
              to be highly taken.
              (try_casesi): Pass the probability of jumping to the default label.
              (try_tablejump): Likewise.
              (do_tablejump): Likewise.
              * expr.h (try_tablejump): Add a new parameter.
              (try_casesi): Likewise.
              (emit_cmp_and_jump_insns): Add probability as default parameter with a
              default value of -1.
              * except.c (sjlj_emit_function_enter): Pass probability to
              emit_cmp_and_jump_insns.
              * stmt.c (case_node): Add new fields PROB and SUBTREE_PROB.
              (do_jump_if_equal): Pass probability for REG_BR_PROB note.
              (add_case_node): Pass estimated probability of jumping to the case
              label.
              (emit_case_decision_tree): Pass default_prob to emit_case_nodes.
              (get_outgoing_edge_probs): New function.
              (conditional_probability): Likewise.
              (reset_out_edges_aux): Likewise.
              (compute_cases_per_edge): Likewise.
              (emit_case_dispatch_table): Update probabilities of edges coming out
              of the switch statement.
              (expand_case): Compute and propagate default edge probability to
              emit_case_dispatch_table.
              (expand_sjlj_dispatch_table): Update calls to add_case_node and
              emit_case_dispatch_table.
              (balance_case_nodes): Update subtree_prob values.
              (emit_case_nodes): Compute edge probabilities and add pass them to
              emit_cmp_and_jump_insns.
      
      testsuite/ChangeLog:
      2012-10-15   Easwaran Raman  <eraman@google.com> 
              * gcc.dg/tree-prof/switch-case-1.c: New test case.
              * gcc.dg/tree-prof/switch-case-2.c: New test case.
      
      From-SVN: r192488
      Easwaran Raman committed
  19. 15 Oct, 2012 1 commit
  20. 02 Oct, 2012 1 commit
    • re PR tree-optimization/54713 (error: non-trivial conversion at assignment in… · 13396b6e
      re PR tree-optimization/54713 (error: non-trivial conversion at assignment in gcc.c-torture/compile/pr53410-2.c)
      
      	PR tree-optimization/54713
      	* expr.c (categorize_ctor_elements_1): Don't assume purpose is
      	non-NULL.
      	* tree-cfg.c (verify_gimple_assign_single): Add verification of
      	vector CONSTRUCTORs.
      	* tree-ssa-sccvn.c (vn_reference_lookup_3): For VECTOR_TYPE
      	CONSTRUCTORs, don't do anything if element type is VECTOR_TYPE,
      	and don't check index.
      	* tree-vect-slp.c (vect_get_constant_vectors): VIEW_CONVERT_EXPR
      	ctor elements first if their type isn't compatible with vector
      	element type.
      
      From-SVN: r191983
      Jakub Jelinek committed
  21. 26 Sep, 2012 1 commit
    • re PR middle-end/54635 (Add addr_space_t argument to TARGET_MODE_DEPENDENT_ADDRESS_P) · 5bfed9a9
      	PR middle-end/54635
      	* doc/tm.texi.in (TARGET_MODE_DEPENDENT_ADDRESS_P): Document new
      	parameter addrspace.
      	* doc/tm.texi: Regenerate.
      	* target.def (mode_dependent_address_p): Add addr_space_t parameter.
      	* targhooks.h (default_mode_dependent_address_p): Ditto.
      	* targhooks.c (default_mode_dependent_address_p): Ditto.
      	* expr.c (convert_move): Pass address space to mode_dependent_address_p.
      	* combine.c (combine_simplify_rtx): Ditto.
      	(make_extraction): Ditto.
      	(simplify_shift_const_1): Ditto.
      	(gen_lowpart_for_combine): Ditto.
      	* lower-subreg.c (simple_move_operand): Ditto.
      	* recog.c (simplify_while_replacing): Ditto.
      	(offsettable_address_addr_space_p): Ditto.
      	(mode_dependent_address_p): Ditto.
      	* simplify-rtx.c (simplify_unary_operation_1): Ditto.
      	(simplify_subreg): Ditto.
      	* config/m68k/m68k.md: Ditto.
      	* config/vax/vax.md: Ditto.
      	* config/vax/constraints.md (Q): Ditto.
      	* config/vax/predicates.md (indexed_memory_operand): Ditto.
      	* config/alpha/alpha.c (alpha_mode_dependent_address_p): Add
      	unused addr_space_t parameter.
      	* config/avr/avr.c (avr_mode_dependent_address_p): Ditto.
      	* config/h8300/h8300.c (h8300_mode_dependent_address_p): Ditto.
      	* config/m32r/m32r.c (m32r_mode_dependent_address_p): Ditto.
      	* config/rs6000/rs6000.c (rs6000_mode_dependent_address_p): Ditto.
      	* config/rx/rx.c (rx_mode_dependent_address_p): Ditto.
      	* config/sparc/sparc.c (sparc_mode_dependent_address_p): Ditto.
      	* config/stormy16/stormy16.c (xstormy16_mode_dependent_address_p):
      	Ditto.
      	* config/vax/vax.c (vax_mode_dependent_address_p): Ditto.
      	* config/xtensa/xtensa.c (xtensa_mode_dependent_address_p): Ditto.
      
      From-SVN: r191761
      Georg-Johann Lay committed
  22. 23 Sep, 2012 1 commit
  23. 19 Sep, 2012 1 commit
    • Integrate lexical block into source_location. · 5368224f
      gcc:
      	2012-09-19  Dehao Chen  <dehao@google.com>
      
      	* toplev.c (general_init): Init block_locations.
      	* tree.c (tree_set_block): New.
      	(tree_block): Change to use LOCATION_BLOCK.
      	* tree.h (TREE_SET_BLOCK): New.
      	* final.c (reemit_insn_block_notes): Change to use LOCATION_BLOCK.
      	(final_start_function): Likewise.
      	* input.c (expand_location_1): Likewise.
      	* input.h (LOCATION_LOCUS): New.
      	(LOCATION_BLOCK): New.
      	(IS_UNKNOWN_LOCATION): New.
      	* fold-const.c (expr_location_or): Change to use new location.
      	* reorg.c (emit_delay_sequence): Likewise.
      	(try_merge_delay_insns): Likewise.
      	* modulo-sched.c (dump_insn_location): Likewise.
      	* lto-streamer-out.c (lto_output_location_bitpack): Likewise.
      	* lto-cgraph.c (output_node_opt_summary): Likewise.
      	* jump.c (rtx_renumbered_equal_p): Likewise.
      	* ifcvt.c (noce_try_move): Likewise.
      	(noce_try_store_flag): Likewise.
      	(noce_try_store_flag_constants): Likewise.
      	(noce_try_addcc): Likewise.
      	(noce_try_store_flag_mask): Likewise.
      	(noce_try_cmove): Likewise.
      	(noce_try_cmove_arith): Likewise.
      	(noce_try_minmax): Likewise.
      	(noce_try_abs): Likewise.
      	(noce_try_sign_mask): Likewise.
      	(noce_try_bitop): Likewise.
      	(noce_process_if_block): Likewise.
      	(cond_move_process_if_block): Likewise.
      	(find_cond_trap): Likewise.
      	* ipa-prop.c (ipa_set_jf_constant): Likewise.
      	(ipa_write_jump_function): Likewise.
      	* dwarf2out.c (add_src_coords_attributes): Likewise.
      	* expr.c (expand_expr_real): Likewise.
      	* tree-parloops.c (create_loop_fn): Likewise.
      	* recog.c (peep2_attempt): Likewise.
      	* function.c (free_after_compilation): Likewise.
      	(expand_function_end): Likewise.
      	(set_insn_locations): Likewise.
      	(thread_prologue_and_epilogue_insns): Likewise.
      	* print-rtl.c (print_rtx): Likewise.
      	* profile.c (branch_prob): Likewise.
      	* trans-mem.c (ipa_tm_scan_irr_block): Likewise.
      	* gimplify.c (gimplify_call_expr): Likewise.
      	* except.c (duplicate_eh_regions_1): Likewise.
      	* emit-rtl.c (try_split): Likewise.
      	(make_insn_raw): Likewise.
      	(make_debug_insn_raw): Likewise.
      	(make_jump_insn_raw): Likewise.
      	(make_call_insn_raw): Likewise.
      	(emit_pattern_after_setloc): Likewise.
      	(emit_pattern_after): Likewise.
      	(emit_debug_insn_after): Likewise.
      	(emit_pattern_before): Likewise.
      	(emit_insn_before_setloc): Likewise.
      	(emit_jump_insn_before): Likewise.
      	(emit_call_insn_before_setloc): Likewise.
      	(emit_call_insn_before): Likeise.
      	(emit_debug_insn_before_setloc): Likewise.
      	(emit_copy_of_insn_after): Likewise.
      	(insn_locators_alloc): Remove.
      	(insn_locators_finalize): Remove.
      	(insn_locators_free): Remove.
      	(set_curr_insn_source_location): Remove.
      	(get_curr_insn_source_location): Remove.
      	(set_curr_insn_block): Remove.
      	(get_curr_insn_block): Remove.
      	(locator_scope): Remove.
      	(insn_scope): Change to use new location.
      	(locator_location): Remove.
      	(insn_line): Change to use new location.
      	(locator_file): Remove.
      	(insn_file): Change to use new location.
      	(locator_eq): Remove.
      	(insn_locations_init): New.
      	(insn_locations_finalize): New.
      	(set_curr_insn_location): New.
      	(curr_insn_location): New.
      	* cfgexpand.c (gimple_assign_rhs_to_tree): Change to use new location.
      	(expand_gimple_cond): Likewise.
      	(expand_call_stmt): Likewise.
      	(expand_gimple_stmt_1): Likewise.
      	(expand_gimple_basic_block): Likewise.
      	(construct_exit_block): Likewise.
      	(gimple_expand_cfg): Likewise.
      	* cfgcleanup.c (try_forward_edges): Likewise.
      	* tree-ssa-live.c (remove_unused_scope_block_p): Likewise.
      	(dump_scope_block): Likewise.
      	(remove_unused_locals): Likewise.
      	* rtl.c (rtx_equal_p_cb): Likewise.
      	(rtx_equal_p): Likewise.
      	* rtl.h (XUINT): New.
      	(INSN_LOCATOR): Remove.
      	(CURR_INSN_LOCATION): Remove.
      	(INSN_LOCATION): New.
      	(INSN_HAS_LOCATION): New.
      	* tree-inline.c (remap_gimple_op_r): Change to use new location.
      	(copy_tree_body_r): Likewise.
      	(copy_phis_for_bb): Likewise.
      	(expand_call_inline): Likewise.
      	* tree-streamer-in.c (lto_input_ts_exp_tree_pointers): Likewise.
      	* tree-streamer-out.c (write_ts_decl_minimal_tree_pointers): Likewise.
      	* gimple-streamer-out.c (output_gimple_stmt): Likewise.
      	* combine.c (try_combine): Likewise.
      	* tree-outof-ssa.c (set_location_for_edge): Likewise.
      	(insert_partition_copy_on_edge): Likewise.
      	(insert_value_copy_on_edge): Likewise.
      	(insert_rtx_to_part_on_edge): Likewise.
      	(insert_part_to_rtx_on_edge): Likewise.
      	* basic-block.h (edge_def): Remove field.
      	* gimple.h (gimple_statement_base): Remove field.
      	(gimple_bb): Change to use new location.
      	(gimple_set_block): Likewise.
      	(gimple_has_location): Likewise.
      	* tree-cfg.c (make_cond_expr_edges): Likewise.
      	(make_goto_expr_edges): Likewise.
      	(gimple_can_merge_blocks_p): Likewise.
      	(move_stmt_op): Likewise.
      	(move_block_to_fn): Likewise.
      	* config/alpha/alpha.c (alpha_output_mi_thunk_osf): Likewise.
      	* config/sparc/sparc.c (sparc_output_mi_thunk): Likewise.
      	* config/i386/i386.c (x86_output_mi_thunk): Likewise.
      	* config/tilegx/tilegx.c (tilegx_output_mi_thunk): Likewise.
      	* config/sh/sh.c (sh_output_mi_thunk): Likewise.
      	* config/ia64/ia64.c (ia64_output_mi_thunk): Likewise.
      	* config/rs6000/rs6000.c (rs6000_output_mi_thunk): Likewise.
      	* config/score/score.c (score_output_mi_thunk): Likewise.
      	* config/tilepro/tilepro.c (tilepro_asm_output_mi_thunk): Likewise.
      	* config/mips/mips.c (mips_output_mi_thunk): Likewise.
      	* cfgrtl.c (unique_locus_on_edge_between_p): Likewise.
      	(unique_locus_on_edge_between_p): Likewise.
      	(emit_nop_for_unique_locus_between): Likewise.
      	(force_nonfallthru_and_redirect): Likewise.
      	(fixup_reorder_chain): Likewise.
      	(cfg_layout_merge_blocks): Likewise.
      	* stmt.c (emit_case_nodes): Likewise.
      
      gcc/lto:
      	2012-09-19  Dehao Chen  <dehao@google.com>
      
      	* lto/lto.c (lto_fixup_prevailing_decls): Remove tree.exp.block field.
      
      libcpp:
      	2012-09-19  Dehao Chen  <dehao@google.com>
      
      	* include/line-map.h (MAX_SOURCE_LOCATION): New value.
      	(location_adhoc_data_fini): New.
      	(get_combined_adhoc_loc): New.
      	(get_data_from_adhoc_loc): New.
      	(get_location_from_adhoc_loc): New.
      	(location_adhoc_data_map): New.
      	(COMBINE_LOCATION_DATA): New.
      	(IS_ADHOC_LOC): New.
      	(expanded_location): New field.
      	(line_maps): New field.
      	* line-map.c (location_adhoc_data): New.
      	(location_adhoc_data_hash): New.
      	(location_adhoc_data_eq): New.
      	(location_adhoc_data_update): New.
      	(get_combined_adhoc_loc): New.
      	(get_data_from_adhoc_loc): New.
      	(get_location_from_adhoc_loc): New.
      	(location_adhoc_data_init): New.
      	(location_adhoc_data_fini): New.
      	(linemap_init): Initialize location_adhoc_data.
      	(linemap_lookup): Change to use new location.
      	(linemap_ordinary_map_lookup): Likewise.
      	(linemap_macro_map_lookup): Likewise.
      	(linemap_macro_map_loc_to_def_point): Likewise.
      	(linemap_macro_map_loc_unwind_toward_spel): Likewise.
      	(linemap_get_expansion_line): Likewise.
      	(linemap_get_expansion_filename): Likewise.
      	(linemap_location_in_system_header_p): Likewise.
      	(linemap_location_from_macro_expansion_p): Likewise.
      	(linemap_macro_loc_to_spelling_point): Likewise.
      	(linemap_macro_loc_to_def_point): Likewise.
      	(linemap_macro_loc_to_exp_point): Likewise.
      	(linemap_resolve_location): Likewise.
      	(linemap_unwind_toward_expansion): Likewise.
      	(linemap_unwind_to_first_non_reserved_loc): Likewise.
      	(linemap_expand_location): Likewise.
      	(linemap_dump_location): Likewise.
      	(linemap_line_start): Likewise.
      
      From-SVN: r191494
      Dehao Chen committed
  24. 18 Sep, 2012 1 commit
  25. 14 Sep, 2012 1 commit
    • re PR rtl-optimization/44194 (struct returned by value generates useless stores) · 5ef0b50d
      	PR rtl-optimization/44194
      	* calls.c (expand_call): In the PARALLEL case, copy the return value
      	into pseudos instead of spilling it onto the stack.
      	* emit-rtl.c (adjust_address_1): Rename ADJUST into ADJUST_ADDRESS and
      	add new ADJUST_OBJECT parameter.
      	If ADJUST_OBJECT is set, drop the underlying object if it cannot be
      	proved that the adjusted memory access is still within its bounds.
      	(adjust_automodify_address_1): Adjust call to adjust_address_1.
      	(widen_memory_access): Likewise.
      	* expmed.c (store_bit_field_1): Call adjust_bitfield_address instead
      	of adjust_address.  Do not drop the underlying object of a MEM.
      	(store_fixed_bit_field): Likewise.
      	(extract_bit_field_1): Likewise.  Fix oversight in recursion.
      	(extract_fixed_bit_field): Likewise.
      	* expr.h (adjust_address_1): Adjust prototype.
      	(adjust_address): Adjust call to adjust_address_1.
      	(adjust_address_nv): Likewise.
      	(adjust_bitfield_address): New macro.
      	(adjust_bitfield_address_nv): Likewise.
      	* expr.c (expand_assignment): Handle a PARALLEL in more cases.
      	(store_expr): Likewise.
      	(store_field): Likewise.
      
      	* dse.c: Fix typos in the head comment.
      
      From-SVN: r191302
      Eric Botcazou committed
  26. 07 Sep, 2012 1 commit
    • Modify gcc/*.[hc] double_int call sites to use the new interface. · 27bcd47c
      This change entailed adding a few new methods to double_int.
      
      The change results in a 0.163% time improvement with a 70% confidence.
      
      Tested on x86_64.
      
      
      Index: gcc/ChangeLog
      
      2012-09-06  Lawrence Crowl  <crowl@google.com>
      
      	* double-int.h (double_int::operator &=): New.
      	(double_int::operator ^=): New.
      	(double_int::operator |=): New.
      	(double_int::mul_with_sign): Modify overflow parameter to bool*.
      	(double_int::add_with_sign): New.
      	(double_int::ule): New.
      	(double_int::sle): New.
      	(binary double_int::operator *): Remove parameter name.
      	(binary double_int::operator +): Likewise.
      	(binary double_int::operator -): Likewise.
      	(binary double_int::operator &): Likewise.
      	(double_int::operator |): Likewise.
      	(double_int::operator ^): Likewise.
      	(double_int::and_not): Likewise.
      	(double_int::from_shwi): Tidy formatting.
      	(double_int::from_uhwi): Likewise.
      	(double_int::from_uhwi): Likewise.
      	* double-int.c (double_int::mul_with_sign): Modify overflow parameter
      	to bool*.
      	(double_int::add_with_sign): New.
      	(double_int::ule): New.
      	(double_int::sle): New.
      	* builtins.c: Modify to use the new double_int interface.
      	* cgraph.c: Likewise.
      	* combine.c: Likewise.
      	* dwarf2out.c: Likewise.
      	* emit-rtl.c: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* fixed-value.c: Likewise.
      	* fold-const.c: Likewise.
      	* gimple-fold.c: Likewise.
      	* gimple-ssa-strength-reduction.c: Likewise.
      	* gimplify-rtx.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* loop-iv.c: Likewise.
      	* optabs.c: Likewise.
      	* stor-layout.c: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-cfg.c: Likewise.
      	* tree-dfa.c: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-sra.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-loop-ivopts.c: Likewise.
      	* tree-ssa-loop-niter.c: Likewise.
      	* tree-ssa-phiopt.c: Likewise.
      	* tree-ssa-pre.c: Likewise.
      	* tree-ssa-sccvn: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-vect-loop-manip.c: Likewise.
      	* tree-vrp.c: Likewise.
      	* tree.h: Likewise.
      	* tree.c: Likewise.
      	* varasm.c: Likewise.
      
      From-SVN: r191047
      Lawrence Crowl committed
  27. 06 Sep, 2012 1 commit
  28. 13 Aug, 2012 1 commit
    • re PR c/53968 (integer undefined behaviors in GCC) · eb87c7c4
      	PR c/53968
      	* tree.c (integer_pow2p): Avoid undefined signed overflows.
      	* simplify-rtx.c (neg_const_int): Likewise.
      	* expr.c (fixup_args_size_notes): Likewise.
      	* stor-layout.c (set_min_and_max_values_for_integral_type): Likewise.
      	* double-int.c (mul_double_wide_with_sign): Likewise.
      	(double_int_mask): Likewise.
      	* tree-ssa-loop-ivopts.c (get_address_cost): Likewise.
      
      From-SVN: r190342
      Jakub Jelinek committed
  29. 10 Aug, 2012 1 commit
    • tree.h (SSA_NAME_VAR): Return NULL_TREE if an IDENTIFIER_NODE is recorded as var. · 70b5e7dc
      2012-08-10  Richard Guenther  <rguenther@suse.de>
      
      	* tree.h (SSA_NAME_VAR): Return NULL_TREE if an IDENTIFIER_NODE
      	is recorded as var.
      	(SSA_NAME_IDENTIFIER): Return the IDENTIFIER_NODE of the SSA_NAME
      	or its SSA_NAME_VAR.
      	(SET_SSA_NAME_VAR_OR_IDENTIFIER): New setter.
      	* tree-ssanames.c (make_ssa_name_fn): Handle creating anonymous
      	SSA names by passing a type instead of a variable decl.
      	(release_ssa_name): Use SET_SSA_NAME_VAR_OR_IDENTIFIER.
      	(copy_ssa_name_fn): Handle anonymous SSA names.
      	(replace_ssa_name_symbol): Use SET_SSA_NAME_VAR_OR_IDENTIFIER.
      	* tree-flow-inline.h (make_temp_ssa_name): New inline function.
      	* tree-pretty-print.c (dump_generic_node): Use SSA_NAME_IDENTIFIER,
      	dump SSA names without a name as <anon>.
      	* cfgexpand.c (expand_used_vars): Assing anonymous SSA names we are
      	going to expand a decl.
      	(gimple_expand_cfg): Assign all SSA names of a partition the
      	decl we created for its leader.
      	* tree-ssa.c (target_for_debug_bind): Handle SSA_NAMEs.
      	(verify_ssa_name): Handle anonymous SSA names.
      	(verify_def): Likewise.
      	* tree-predcom.c (eliminate_temp_copies): Likewise.
      	* tree-ssa-copyrename.c (copy_rename_partition_coalesce): Likewise.
      	* tree-ssa-live.c (var_map_base_init): Compute conflicts for
      	anonymous SSA names with the same type.
      	(mark_all_vars_used_1): Handle anonymous SSA names.
      	(verify_live_on_entry): Likewise.
      	* tree-ssa-coalesce.c (abnormal_corrupt): Remove.
      	(create_outofssa_var_map): Adjust with respect to conflicts we
      	compute for anonymous SSA names.  Do not restrict abnormal
      	coalescing.
      	(coalesce_partitions): Do not restrict abnormal coalescing.
      	Assert we only ever coalesce variables we computed conflicts for.
      	* tree-ssa-ter.c (process_replaceable): Do not restrict TER
      	of anonymous names.
      	* expr.c (expand_expr_real_1): Handle anonymous SSA names
      	expanded from IVOPTs by creating a raw REG here.
      	* tree-cfg.c (replace_ssa_name): Handle anonymous SSA names.
      	(dump_function_to_file): Dump anonymous SSA names alongside
      	with their types in the variable list.
      	(verify_gimple_return): Guard use of SSA_NAME_VAR.
      	* tree-into-ssa.c (mark_for_renaming): Handle a NULL symbol.
      	(rewrite_into_ssa): Make SSA names anonymous.
      	* tree-ssa-structalias.c (alias_get_name): Rewrite.
      	* tree-ssa-uninit.c (ssa_undefined_value_p): Handle anonymous
      	SSA names.
      	(warn_uninitialized_phi): Likewise.
      	* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Defer expanding
      	anonymous SSA names to the expander.
      	(determine_iv_cost): Anonymous SSA names are artificial.
      	* tree-ssa-loop-manip.c (tree_transform_and_unroll_loop):
      	Handle anonymous SSA names.
      	* lto-streamer-out.c (output_ssa_names): Stream SSA_NAME_VAR
      	or if NULL, the type of the SSA name.
      	* tree-inline.c (remap_ssa_name): Handle anonymous SSA names,
      	remap names as anonymous where appropriate.
      	(insert_init_stmt): Pass SSA names down to insert_init_debug_bind.
      	* tree-ssa-uncprop.c (uncprop_into_successor_phis): Adjust
      	according to what we create conflicts for in out-of-SSA
      	coalescing.
      	* tree-parloops.c (separate_decls_in_region_name): Handle
      	anonymous SSA names.
      	(add_field_for_name): Likewise.
      	* tree.c (get_name): Handle SSA names.
      	* tree-ssa-loop-im.c (gen_lsm_tmp_name): Defer to get_name for
      	SSA_NAMEs.
      	* tree-vect-loop-manip.c (adjust_debug_stmts): Use
      	virtual_operand_p.
      	* tree-sra.c (create_access_replacement): Give up generating
      	a DECL_DEBUG_EXPR for SSA names in the memory reference.
      	(replace_removed_params_ssa_names): Guard use of SSA_NAME_VAR.
      	* tree-complex.c (get_component_ssa_name): Handle anonymous
      	SSA names.
      	(set_component_ssa_name): Likewise.
      	* tree-ssa-sccvn.c (visit_reference_op_load): Likewise.
      	* tree-object-size.c (collect_object_sizes_for): Handle
      	uninitialized SSA names properly.
      	* ipa-inline-analysis.c (eliminated_by_inlining_prob): Guard use of
      	SSA_NAME_VAR.
      	* ipa-split.c (test_nonssa_use): Likewise.
      	(consider_split): Likewise.
      	(mark_nonssa_use): Likewise.
      
      	c-family/
      	* c-pretty-print.c (pp_c_expression): Handle anonymous SSA names.
      
      	cp/
      	* error.c (dump_expr): Likewise.
      
      	* g++.dg/plugin/selfassign.c: Adjust.
      	* gcc.dg/plugin/selfassign.c: Likewise.
      	* gcc.dg/strlenopt-11.c: Likewise.
      	* gcc.dg/strlenopt-13.c: Likewise.
      	* gcc.dg/no-strict-overflow-4.c: Likewise.
      	* gcc.dg/strict-overflow-4.c: Likewise.
      	* gcc.dg/tree-ssa/alias-11.c: Likewise.
      	* gcc.dg/tree-ssa/alias-6.c: Likewise.
      	* gcc.dg/tree-ssa/asm-3.c: Likewise.
      	* gcc.dg/tree-ssa/pr18908.c: Likewise.
      	* gcc.dg/tree-ssa/pr19431.c: Likewise.
      	* gcc.dg/tree-ssa/ssa-pre-21.c: Likewise.
      	* gcc.dg/tree-ssa/phi-opt-10.c: Likewise.
      	* gcc.dg/tree-ssa/phi-opt-7.c: Likewise.
      	* gcc.dg/tree-ssa/slsr-27.c: Likewise.
      	* gcc.dg/tree-ssa/slsr-28.c: Likewise.
      	* gcc.dg/tree-ssa/slsr-29.c: Likewise.
      	* gcc.dg/pr46309.c: Likewise.
      	* gcc.dg/tree-ssa/loop-5.c: Likewise.
      
      From-SVN: r190284
      Richard Guenther committed
  30. 02 Aug, 2012 1 commit
    • cfgexpand.c (expand_debug_locations): Encapsulate test for CONST_DOUBLE in macro. · 48175537
      2012-08-02  Kenneth Zadeck <zadeck@naturalbridge.com>
      
      	* cfgexpand.c (expand_debug_locations):  Encapsulate test for
      	CONST_DOUBLE in macro.
      	* combine.c (try_combine, gen_lowpart_for_combine): Ditto.
      	* cprop.c (implicit_set_cond_p): Ditto.
      	* cselib.c (rtx_equal_for_cselib_1): Ditto.
      	* expmed.c (expand_mult): Ditto.
      	* expr.c (convert_modes): Ditto.
      	* ira-costs.c (record_reg_classes): Ditto.
      	* ira-lives.c (single_reg_class): Ditto.
      	* optabs.c (expand_copysign_absneg, expand_copysign): Ditto.
      	* print-rtl.c (print_rtx): Ditto.
      	* recog.c (simplify_while_replacing, const_double_operand)
      	(asm_operand_ok, constrain_operands): Ditto.
      	* reg-stack.c (subst_stack_regs_pat): Ditto.
      	* reload.c (find_reloads, find_equiv_reg): Ditto.
      	* rtlanal.c (replace_rtx): Remove test.
      	* rtlanal.c (constant_pool_constant_p, split_double): Encapsulate test for
      	CONST_DOUBLE in macro.
      	* simplify-rtx.c (mode_signbit_p, avoid_constant_pool_reference)
      	(simplify_unary_operation_1, simplify_const_unary_operation)
      	(simplify_binary_operation_1, simplify_const_binary_operation)
      	(simplify_relational_operation_1)
      	(simplify_const_relational_operations)
      	(implify_subreg): Ditto.
      	* varasm.c (output_constant_pool_2): Ditto.
      	* rtl.h (CONST_DOUBLE_AS_INT_P, CONST_DOUBLE_AS_FLOAT_P): New
      	macros.
      	* rtl.def (CONST_DOUBLE):  Updated comments.
      
      From-SVN: r190105
      Kenneth Zadeck committed
  31. 25 Jul, 2012 1 commit
    • expr.c (expand_expr_real_1): Do not expand operand #1 and #2 of BIT_FIELD_REF for ignored results. · ea814c66
      	* expr.c (expand_expr_real_1): Do not expand operand #1 and #2
      	of BIT_FIELD_REF for ignored results.
      	* fold-const.c (fold_ternary_loc) <BIT_FIELD_REF>: Check that the
      	CONSTRUCTOR has vector type before using vector accessors on it.
      	* gimplify.c (gimplify_compound_lval): Do not gimplify operand #1 and
      	#2 of BIT_FIELD_REF.
      	(gimplify_expr) <BIT_FIELD_REF>: Likewise.
      	* tree-nested.c (convert_nonlocal_reference_op) <BIT_FIELD_REF>: Do
      	not process operand #1 and #2.
      	(convert_local_reference_op): Likewise.
      	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Remove superfluous
      	breaks throughout.
      	<BIT_FIELD_REF>: Reuse operand #1 and #2 directly.
      	* tree.c (stabilize_reference) <BIT_FIELD_REF>: Do not stabilize
      	operand #1 and #2.
      	(UPDATE_FLAGS): Do not consider operand #2 of BIT_FIELD_REF.
      	(build6_stat): Delete.
      	* tree.h (build6_stat, build6, build6_stat_loc, build6_loc): Likewise.
      ada/
      	* gcc-interface/utils2.c (gnat_stabilize_reference) <BIT_FIELD_REF>: Do
      	not stabilize operand #1 and #2.
      
      From-SVN: r189864
      Eric Botcazou committed
  32. 19 Jul, 2012 2 commits
    • Fix 0 != CODE_FOR_nothing thinko · dee54b6e
              * expr.c (store_constructor): Initialize icode with CODE_FOR_nothing.
              * tree-vect-stmts.c (vectorizable_operation): Use LAST_INSN_CODE for
              dummy != CODE_FOR_nothing value.
      
      From-SVN: r189672
      Richard Henderson committed
    • eh_personality.cc (__gxx_personality_seh0): New function. · bf1431e3
      libstdc++-v3/
      	* libsupc++/eh_personality.cc (__gxx_personality_seh0): New function.
      	Adjust for SEH.
      	* config/abi/pre/gnu.ver: Add __gxx_personality_seh0.
      
      libobjc/
      	* exception.c (__gnu_objc_personality_seh0): New function.
      
      libjava/
      	* libgcj.ver: Add __gcj_personality_seh0.
      	* exception.cc (__gcj_personality_seh0): New function.
      	Adjust for SEH.
      
      libgcc/
      	* unwind-seh.c: New file.
      	* unwind-generic.h: Include windows.h for SEH.
      	(_Unwind_Exception): Use 6 private fields for SEH.
      	(_GCC_specific_handler): Declare.
      	* unwind-c.c (__gcc_personality_seh0): New function.
      	Adjust for SEH.
      	* config/i386/libgcc-cygming.ver: New file.
      	* config/i386/t-seh-eh: New file.
      	* config.host (x86_64-*-mingw*): Default to seh.
      
      gcc/
      	* opts.c (finish_options): Handle UI_SEH.
      	* expr.c (build_personality_function): Handle UI_SEH.
      	* dwarf2out.c (dwarf2out_begin_prologue): Handle UI_SEH.
      	* coretypes.h (unwind_info_type): Add UI_SEH.
      	* config/i386/winnt.c (i386_pe_seh_emit_except_personality):
      	New function.
      	(i386_pe_seh_init_sections): Likewise.
      	* config/i386/cygming.h (TARGET_ASM_EMIT_EXCEPT_PERSONALITY): Define.
      	(TARGET_ASM_INIT_SECTIONS): Define.
      	* common/config/i386/i386-common.c (TARGET_EXCEPT_UNWIND_INFO): Define.
      	(i386_except_unwind_info): New function.
      
      
      Co-Authored-By: Richard Henderson <rth@redhat.com>
      
      From-SVN: r189644
      Tristan Gingold committed
  33. 18 Jul, 2012 2 commits
    • re PR tree-optimization/53970 (-ftree-vectorization does not handle well unaligned data) · 4c9bcf89
      2012-07-18  Richard Guenther  <rguenther@suse.de>
      
      	PR tree-optimization/53970
      	* tree.h (contains_packed_reference): Remove.
      	* expr.c (contains_packed_reference): Likewise.
      	* tree-vect-data-refs.c (not_size_aligned): New function.
      	(vector_alignment_reachable_p): Use it.
      	(vect_supportable_dr_alignment): Likewise.
      
      	* g++.dg/torture/pr53970.C: New testcase.
      
      From-SVN: r189609
      Richard Guenther committed
    • tree.h (get_object_or_type_alignment): Remove. · b0f4a35f
      2012-07-18  Richard Guenther  <rguenther@suse.de>
      
      	* tree.h (get_object_or_type_alignment): Remove.
      	* builtins.c (get_object_alignment_2): New function copied from
      	get_object_alignment_1.  Take extra argument to indicate whether
      	we take the address of EXP.  Rework to use type alignment information
      	if not, and return whether the result is an approximation or not.
      	(get_object_alignment_1): Wrap around get_object_alignment_2.
      	(get_pointer_alignment_1): Call get_object_alignment_2 indicating
      	we take the address.
      	(get_object_or_type_alignment): Remove.
      	* expr.c (expand_assignment): Call get_object_alignment.
      	(expand_expr_real_1): Likewise.
      
      From-SVN: r189607
      Richard Guenther committed
  34. 16 Jul, 2012 1 commit
    • system.h (dump_file): Do not define. · 7ee2468b
      gcc/
      	* system.h (dump_file): Do not define.
      	* tree-pass.h: Include dumpfile.h, which is a new file containing...
      	(enum tree_dump_index, TDF_*, get_dump_file_name, dump_enabled_p,
      	dump_initialized_p, dump_begin, dump_end, dump_node, dump_switch_p,
      	dump_flag_name, dump_file, dump_flags, dump_file_name,
      	get_dump_file_info, struct dump_file_info): all of this, moved to...
      	* dumpfile.h: Here, new file.
      	* tree-dump.h: Include dumpfile.h, but not tree-pass.h.
      	(dump_stmt): Remove prototype for C++ specific function.
      	(dump_enumerated_decls): Move prototype from here...
      	* tree-flow.h (dump_enumerated_decls): ... to here.
      	(get_ref_base_and_extent) Move prototype from here ...
      	* tree.h (get_ref_base_and_extent) ... to here.
      	* tree-ssa-live.c: Do not inclde tree-pretty-print.h, because
      	gimple-pretty-print.h is enough.  Do not include tree-dump.h,
      	include timevar.h and dumpfile.h instead.
      	(struct numbered_tree_d, compare_decls_by_uid,
      	dump_enumerated_decls_push, dump_enumerated_decls): Move from here ...
      	* tree-dfa.c:(struct numbered_tree_d, compare_decls_by_uid,
      	dump_enumerated_decls_push, dump_enumerated_decls):... to here.
      	Do not include timevar.h.
      	* tree.c: Do not include timevar.h.
      	* tree-cfg.c: Do not include langhooks.h, tree-pretty-print.h, and
      	timevar.h.
      	(dump_cfg_stats): Use current_function_name.
      	(gimple_cfg2vcg): Likewise.
      	(dump_function_to_file): Likewise.
      	* df-scan.c: Do not include tree-pass.h and timevar.h.
      	Include dumpfile.h.
      	(df_entry_block_bitmap_verify, df_exit_block_bitmap_verify): Do not
      	use print_current_pass.
      	* df-problems.c: Include dumpfile.h.
      	Always define REG_DEAD_DEBUGGING, avoid #ifdef code, because it
      	leads to errors in the code not selected.
      	(df_note_compute): Do not print_rtl_with_bb here.  Fix compilation
      	bug if REG_DEAD_DEBUGGING is not 0, get_insns is not available here.
      	* lcm.c: Include dumpfile.h.
      	Remove obsolete include of insn-attr.h.
      	* dojump.c (do_compare_rtx_and_jump): Remove failure printing for
      	missing probability notes.
      	* stmt.c: Include dumpfile.h.
      	(emit_case_decision_tree): Re-enable printing expand details only
      	if TDF_DETAILS.
      	* alias.c, auto-inc-dec.c, bb-reorder.c, caller-save.c, cfg.c, 
      	cfgcleanup.c, cfgexpand.c, cfgloop.c, cfgloopmanip.c, cgraph.c, 
      	cgraphclones.c, cgraphunit.c, combine.c, combine-stack-adj.c, 
      	coverage.c, cprop.c, cse.c, cselib.c, dbgcnt.c, dce.c, df-core.c, 
      	dse.c, dwarf2out.c, emit-rtl.c, except.c, expr.c, final.c, 
      	function.c, fwprop.c, gcse.c, gimple-fold.c, 
      	gimple-pretty-print.c, gimple-ssa-strength-reduction.c, 
      	gimplify.c, graphite-blocking.c, graphite-clast-to-gimple.c, 
      	graphite-dependences.c, graphite-interchange.c, 
      	graphite-optimize-isl.c, graphite-poly.c, 
      	graphite-sese-to-poly.c, haifa-sched.c, hw-doloop.c, ifcvt.c, 
      	ipa.c, ipa-cp.c, ipa-inline-analysis.c, ipa-inline.c, 
      	ipa-inline-transform.c, ipa-prop.c, ipa-pure-const.c, 
      	ipa-reference.c, ipa-split.c, ipa-utils.c, ira.c, ira-emit.c, 
      	jump.c, loop-doloop.c, loop-init.c, loop-invariant.c, loop-iv.c, 
      	loop-unroll.c, loop-unswitch.c, lower-subreg.c, 
      	lto-section-out.c, lto-streamer-in.c, matrix-reorg.c, mcf.c, 
      	mode-switching.c, modulo-sched.c, omega.c, omp-low.c, passes.c, 
      	plugin.c, postreload.c, postreload-gcse.c, predict.c, print-rtl.c, 
      	print-tree.c, profile.c, recog.c, ree.c, regcprop.c, reginfo.c, 
      	regmove.c, regrename.c, reg-stack.c, reload1.c, reorg.c, 
      	sched-rgn.c, sched-vis.c, sel-sched.c, sel-sched-ir.c, 
      	store-motion.c, tracer.c, trans-mem.c, tree-affine.c, 
      	tree-call-cdce.c, tree-cfgcleanup.c, tree-chrec.c, 
      	tree-data-ref.c, tree-diagnostic.c, tree-dump.c,
      	tree-eh.c, tree-flow-inline.h, tree-if-conv.c, tree-into-ssa.c, 
      	tree-mudflap.c, tree-nrv.c, tree-object-size.c, 
      	tree-optimize.c, tree-outof-ssa.c, tree-predcom.c, 
      	tree-pretty-print.c, tree-profile.c, tree-scalar-evolution.c, 
      	tree-sra.c, tree-ssa-address.c, tree-ssa-alias.c, tree-ssa.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-loop.c, tree-ssa-loop-ch.c, tree-ssa-loop-im.c, 
      	tree-ssa-loop-ivcanon.c, tree-ssa-loop-ivopts.c, 
      	tree-ssa-loop-manip.c, tree-ssa-loop-niter.c, 
      	tree-ssa-loop-prefetch.c, tree-ssa-loop-unswitch.c, 
      	tree-ssa-math-opts.c, tree-ssa-operands.c, tree-ssa-phiopt.c, 
      	tree-ssa-phiprop.c, tree-ssa-pre.c, tree-ssa-propagate.c, 
      	tree-ssa-reassoc.c, tree-ssa-sccvn.c, tree-ssa-sink.c, 
      	tree-ssa-structalias.c, tree-ssa-tail-merge.c, tree-ssa-ter.c, 
      	tree-ssa-threadedge.c, tree-ssa-threadupdate.c, 
      	tree-ssa-uncprop.c, tree-ssa-uninit.c, 
      	tree-switch-conversion.c, tree-tailcall.c, 
      	tree-vect-data-refs.c, tree-vect-loop.c, 
      	tree-vect-loop-manip.c, tree-vectorizer.c, 
      	tree-vect-patterns.c, tree-vect-slp.c, tree-vect-stmts.c, 
      	tree-vrp.c, value-prof.c, var-tracking.c, web.c: Include tree-pass.h
      	only if needed.  If tree-pass.h is included, do not include timevar.h
      	and dumpfile.h.  If tree-pass.h is not included but dump_file, or
      	dump_flags, or the TDF_* flags are used, include dumpfile.h.
      	If gimple-pretty-print.h is included, don't include tree-pretty-print.h.
      	Remove assorted unnecessary includes.
      
      	* config/mn10300/mn10300.c, config/c6x/c6x.c, config/ia64/ia64.c,
      	config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
      	config/spu/spu.c, config/mep/mep.c, config/i386/i386.c:
      	Include dumpfile.h.
      	* config/rl78/rl78.c: Include dumpfile.h instead of tree-pass.h.
      	* arm/t-arm, avr/t-avr, i386/t-i386, ia64/t-ia64, mep/t-mep,
      	spu/t-spu-elf: Fix dependencies.
      
      c-family/
      	* c-gimplify.c: Include dumpfile.h instead of tree-dump.h.
      	* c-ada-spec.c: Likewise.
      	* c-dump.c (dump_stmt): Move to cp/dump.c, the only user.
      
      c/
      	* c-decl.c: Include dumpfile.h instead of tree-dump.h.
      	* Make-lang.in: Fix dependencies.
      
      cp/
      	* dump.c (dump_stmt): Moved here from c-dump.c.
      	* optimize.c: Include dumpfile.h instead of tree-dump.h.
      	* class.c: Likewise.
      	* decl2.c: Likewise.
      	* Make-lang.in: Fix dependencies.
      
      fortran/
      	* f95-lang.c: Include dumpfile.h instead of tree-dump.h.
      	* Make-lang.in: Fix dependencies.
      
      java/
      	* java-gimplify.c Include dumpfile.h instead of tree-dump.h
      	* Make-lang.in: Fix dependencies.
      
      lto/
      	* lto.c: Do not include timevar.h.
      	* Make-lang.in: Fix dependencies.
      
      ada/
      	* gcc-interface/utils.c: Include timevar.h.
      	* Make-lang.in: Fix dependencies.
      
      From-SVN: r189519
      Steven Bosscher committed
  35. 10 Jul, 2012 2 commits
    • Move vector highpart emulation to the optabs layer · 00f07b86
              * expmed.c (expmed_mult_highpart): Rename from expand_mult_highpart.
              (expmed_mult_highpart_optab): Rename from expand_mult_highpart_optab.
              * optabs.c (can_mult_highpart_p): New.
              (expand_mult_highpart): New.
              * expr.c (expand_expr_real_2) [MULT_HIGHPART_EXPR): Use it.
              * tree-vect-generic.c (expand_vector_operations_1): Don't expand
              by pieces if can_mult_highpart_p.
              (expand_vector_divmod): Use can_mult_highpart_p and always
              generate MULT_HIGHPART_EXPR.
              * tree-vect-patterns.c (vect_recog_divmod_pattern): Likewise.
              * tree-vect-stmts.c (vectorizable_operation): Likewise.
      
      From-SVN: r189407
      Richard Henderson committed
    • Add VEC_WIDEN_MULT_EVEN/ODD_EXPR · 3f30a9a6
              * tree.def (VEC_WIDEN_MULT_EVEN_EXPR, VEC_WIDEN_MULT_ODD_EXPR): New.
              * cfgexpand.c (expand_debug_expr): Handle them.
              * expr.c (expand_expr_real_2): Likewise.
              * fold-const.c (fold_binary_loc): Likewise.
              * gimple-pretty-print.c (dump_binary_rhs): Likewise.
              * optabs.c (optab_for_tree_code): Likewise.
              * tree-cfg.c (verify_gimple_assign_binary): Likewise.
              * tree-inline.c (estimate_operator_cost): Likewise.
              * tree-pretty-print.c (dump_generic_node): Likewise.
              * tree.c (commutative_tree_code): Likewise.
              * tree-vect-generic.c (expand_vector_operations_1): Likewise.
              Handle type change before looking up optab.
              * optabs.h (OTI_vec_widen_umult_even, OTI_vec_widen_umult_odd): New.
              (OTI_vec_widen_smult_even, OTI_vec_widen_smult_odd): New.
              (vec_widen_umult_even_optab, vec_widen_umult_odd_optab): New.
              (vec_widen_smult_even_optab, vec_widen_smult_odd_optab): New.
              * genopinit.c (optabs): Initialize them.
              * doc/md.texi: Document them.
      
      From-SVN: r189403
      Richard Henderson committed