1. 28 Sep, 2013 1 commit
    • expr.h (extract_bit_field): Remove packedp parameter. · c6285bd7
      2013-09-28  Sandra Loosemore  <sandra@codesourcery.com>
      
      	gcc/
      	* expr.h (extract_bit_field): Remove packedp parameter.
      	* expmed.c (extract_fixed_bit_field): Remove packedp parameter
      	from forward declaration.
      	(store_split_bit_field): Remove packedp arg from calls to
      	extract_fixed_bit_field.
      	(extract_bit_field_1): Remove packedp parameter and packedp
      	argument from recursive calls and calls to extract_fixed_bit_field.
      	(extract_bit_field): Remove packedp parameter and corresponding
      	arg to extract_bit_field_1.
      	(extract_fixed_bit_field): Remove packedp parameter.  Remove code
      	to issue warnings.
      	(extract_split_bit_field): Remove packedp arg from call to
      	extract_fixed_bit_field.
      	* expr.c (emit_group_load_1): Adjust calls to extract_bit_field.
      	(copy_blkmode_from_reg): Likewise.
      	(copy_blkmode_to_reg): Likewise.
      	(read_complex_part): Likewise.
      	(store_field): Likewise.
      	(expand_expr_real_1): Likewise.
      	* calls.c (store_unaligned_arguments_into_pseudos): Adjust call
      	to extract_bit_field.
      	* config/tilegx/tilegx.c (tilegx_expand_unaligned_load): Adjust
      	call to extract_bit_field.
      	* config/tilepro/tilepro.c (tilepro_expand_unaligned_load): Adjust
      	call to extract_bit_field.
      	* doc/invoke.texi (Code Gen Options): Remove mention of warnings
      	and special packedp behavior from -fstrict-volatile-bitfields
      	documentation.
      
      From-SVN: r203003
      Sandra Loosemore committed
  2. 19 Feb, 2013 1 commit
    • re PR target/52555 (ICE unrecognizable insn with -ffast-math and __attribute__((optimize(xx)))) · 135204dd
      	PR target/52555
      	* genopinit.c (raw_optab_handler): Use this_fn_optabs.
      	(swap_optab_enable): Same.
      	(init_all_optabs): Use argument instead of global.
      	* tree.h (struct tree_optimization_option): New field
      	target_optabs.
      	* expr.h (init_all_optabs): Add argument to prototype.
      	(TREE_OPTIMIZATION_OPTABS): New.
      	(save_optabs_if_changed): Protoize.
      	* optabs.h: Declare this_fn_optabs.
      	* optabs.c (save_optabs_if_changed): New.
      	Declare this_fn_optabs.
      	(init_optabs): Add argument to init_all_optabs() call.
      	* function.c (invoke_set_current_function_hook): Handle per
      	function optabs.
      	* function.h (struct function): New field optabs.
      	* config/mips/mips.c (mips_set_mips16_mode): Handle when
      	optimization_current_node has changed.
      	* target-globals.h (save_target_globals_default_opts): Protoize.
      	* target-globals.c (save_target_globals_default_opts): New.
      c-family/
      	* c-common.c (handle_optimize_attribute): Call
      	save_optabs_if_changed.
      
      Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
      
      From-SVN: r196129
      Aldy Hernandez committed
  3. 10 Jan, 2013 1 commit
  4. 09 Jan, 2013 1 commit
  5. 18 Nov, 2012 3 commits
    • Makefile.in (recog.o): Add insn-codes.h. · fcdd52b7
      gcc/
      	* Makefile.in (recog.o): Add insn-codes.h.
      	* expr.h (extraction_pattern): Move to optabs.h.
      	(mode_for_extraction): Delete.
      	* optabs.h (extraction_insn): New structure.
      	(extraction_pattern): Moved from expr.h.
      	(get_best_reg_extraction_insn, get_best_mem_extraction_insn): Declare.
      	* optabs.c (HAVE_insv, CODE_FOR_insv, HAVE_extv, CODE_FOR_extv)
      	(HAVE_extzv, CODE_FOR_extzv): Provide defaults.
      	(extraction_type): New enum.
      	(get_traditional_extraction_insn, get_extraction_insn)
      	(get_best_reg_extraction_insn, get_best_mem_extraction_insn):
      	New functions.
      	* combine.c (make_extraction): Use get_best_reg_extraction_insn
      	instead of mode_for_extraction.
      	* expmed.c (HAVE_insv, CODE_FOR_insv, gen_insv, HAVE_extv)
      	(CODE_FOR_extv, gen_extv, HAVE_extzv, CODE_FOR_extzv, gen_extzv):
      	Remove fallback definitions.
      	(mode_for_extraction): Delete.
      	(adjust_bit_field_mem_for_reg): New function.
      	(store_bit_field_using_insv): Replace OP_MODE parameter with
      	an extraction_insn.  Pass struct_mode to narrow_bit_field_mem.
      	(extract_bit_field_using_extv): Likewise EXT_MODE.
      	(store_bit_field_1): Use get_best_reg_extraction_insn and
      	get_best_mem_extraction_insn instead of mode_for_extraction.
      	Use adjust_bit_field_mem_for_reg when forcing memory to a
      	register and doing a register insertion.  Update calls to
      	store_bit_field_using_insv.
      	(extract_bit_field_1): Likewise extractions and calls to
      	extract_bit_field_using_extv.
      	(store_Bit_field): When narrowing to a bitregion, don't use the
      	insv mode as a limit.
      	* recog.c: (HAVE_extv, CODE_FOR_extv, HAVE_extzv, CODE_FOR_extzv):
      	Provide defaults.
      	(simplify_while_replacing): Use insn_data instead of
      	mode_for_extraction.
      
      From-SVN: r193605
      Richard Sandiford committed
    • expr.h (adjust_address_1): Add a size parameter. · 5f2cbd0d
      gcc/
      	* expr.h (adjust_address_1): Add a size parameter.
      	(adjust_address, adjust_address_nv, adjust_bitfield_address)
      	(adjust_bitfield_address_nv): Adjust accordingly.
      	(adjust_bitfield_address_size): Define.
      	* emit-rtl.c (adjust_address_1): Add a size parameter.
      	Use it to set the size if MODE has no size.  Check whether
      	the size matches before returning the original memref.
      	Require the size to be known for adjust_object.
      	(adjust_automodify_address_1, widen_memory_access): Update calls
      	to adjust_address_1.
      
      From-SVN: r193601
      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
  6. 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
  7. 16 Oct, 2012 1 commit
    • [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
  8. 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
  9. 11 Sep, 2012 1 commit
    • tree.h (expand_case): Move prototype ... · 9a1b6b7a
      	* tree.h (expand_case): Move prototype ...
      	* expr.h (expand_case): ...here.
      	(expand_sjlj_dispatch_table): New prototype.
      	* stmt.c: Include pointer-set.h instead of bitmap.h.
      	(expand_case): Use a pointer set instead of a bitmap for
      	already-seen labels.  Fold label values here.
      	(add_case_node): Don't fold label values here.
      	(expand_sjlj_dispatch_table): New function.
      	* except.c (sjlj_emit_dispatch_table): Use it.
      
      From-SVN: r191203
      Steven Bosscher committed
  10. 11 Jul, 2012 1 commit
    • expr.h (can_move_by_pieces): Move prototype from here ... · 6bdf3519
      gcc/
      	* expr.h (can_move_by_pieces): Move prototype from here ...
      	* tree.h (can_move_by_pieces): ... to here.
      	* optabs.h (set_widening_optab_handler): Use XCNEW.
      	* gimplify.c: Do not include expr.h.
      
      	* toplev.c: Do not include dwarf2out.h.
      	* config/ia64/ia64.c: Likewise.
      	* config/sparc/sparc.c: Likewise.
      	* config/sparc/t-sparc (sparc.o): Fix dependencies.
      
      	* Makefile.in (toplev.o): Fix dependencies
      	(c-family/c-gimplify.o): Likewise.
      	(c-family/c-common.o): Likewise.
      
      c-family/
      	* c-gimplify.c: Do not include basic-block.h.
      	* c-common.c: Do not include linfuncs.h.
      
      cp/
      	* method.c: Do not include tree-pass.h.
      
      fortran/
      	* trans.c: Do not include defaults.h.
      	* trans-intrinsic.c: Likewise.
      
      java/
      	* decl.c: Do not include libfuncs.h.
      	* class.c: Do not include defaults.h.
      	* jvgenmain.c: Likewise.
      	* magnle.c: Likewise.
      	* Make-lang.in (decl.o): Fix dependencies.
      
      From-SVN: r189425
      Steven Bosscher committed
  11. 15 Jun, 2012 1 commit
    • re PR tree-optimization/51581 (Integer division by constant is not vectorized) · 079c527f
      	PR tree-optimization/51581
      	* expr.h (choose_multiplier): New prototype.
      	* expmed.c (choose_multiplier): No longer static.
      	Change multiplier_ptr from rtx * to UHWI *.
      	(expand_divmod): Adjust callers.
      	* tree-vect-patterns.c (vect_recog_sdivmod_pow2_pattern):
      	Renamed to...
      	(vect_recog_divmod_pattern): ... this.  Pass bb_vinfo as last
      	argument to new_stmt_vec_info.  Attempt to optimize also divisions
      	by non-pow2 constants if integer vector division isn't supported.
      	* tree-vect-stmts.c (vect_analyze_stmt): If node != NULL,
      	don't look at pattern stmts and sequences.
      
      	* gcc.c-torture/execute/pr51581-1.c: New test.
      	* gcc.c-torture/execute/pr51581-2.c: New test.
      	* gcc.dg/vect/pr51581-1.c: New test.
      	* gcc.dg/vect/pr51581-2.c: New test.
      	* gcc.dg/vect/pr51581-3.c: New test.
      	* gcc.target/i386/avx-pr51581-1.c: New test.
      	* gcc.target/i386/avx-pr51581-2.c: New test.
      	* gcc.target/i386/avx2-pr51581-1.c: New test.
      	* gcc.target/i386/avx2-pr51581-2.c: New test.
      	* gcc.dg/vect/slp-26.c (main1): Divide by 0x8031 instead of 3.
      
      From-SVN: r188656
      Jakub Jelinek committed
  12. 02 Jan, 2012 1 commit
    • expr.h (move_by_pieces_ninsns): Declare. · 0d8f5d62
      gcc/
      	* expr.h (move_by_pieces_ninsns): Declare.
      	* expr.c (move_by_pieces_ninsns): Make external.
      	* config/mips/mips-protos.h (mips_move_by_pieces_p): Declare.
      	(mips_store_by_pieces_p): Likewise.
      	* config/mips/mips.h (MOVE_BY_PIECES_P): Call mips_move_by_pieces_p.
      	(STORE_BY_PIECES_P): Likewise mips_store_by_pieces_p.
      	* config/mips/mips.c (mips_move_by_pieces_p): New function.
      	(mips_store_by_pieces_p): Likewise.
      
      gcc/testsuite/
      	* gcc.dg/memcpy-4.c: Add nomips16 attribute for MIPS targets.
      	Increase copy to 5 bytes.  Look for at least two "mem/s/u"s,
      	rather than a specific number.
      
      From-SVN: r182801
      Richard Sandiford committed
  13. 24 Nov, 2011 1 commit
    • optab.c (maybe_emit_atomic_exchange): New. · 744accb2
      2011-11-24  Andrew MacLeod  <amacleod@redhat.com>
      
      	* optab.c (maybe_emit_atomic_exchange): New.  Try to emit an
      	atomic_exchange pattern.
      	(maybe_emit_sync_lock_test_and_set): New.  Try to emit an exchange
      	using __sync_lock_test_and_set.
      	(maybe_emit_compare_and_swap_exchange_loop): New. Try to emit an
      	exchange using a compare_and_swap loop.
      	(expand_sync_lock_test_and_set): New.  Expand sync_lock_test_and_set.
      	(expand_atomic_test_and_set): New.  Expand test_and_set operation.
      	(expand_atomic_exchange): Use new maybe_emit_* functions.
      	(expand_atomic_store): Use new maybe_emit_* functions.
      	* builtins.c (expand_builtin_sync_lock_test_and_set): Call
      	expand_sync_lock_test_and_set routine.
      	(expand_builtin_atomic_exchange): Remove parameter from call.
      	(expand_builtin_atomic_clear): Use atomic_clear pattern if present.
      	(expand_builtin_atomic_test_and_set): Add target and simply call
      	expand_atomic_test_and_set.
      	(expand_builtin): Add target to expand_builtin_atomic_test_and_set.
      	* expr.h (expand_atomic_exchange): Add parameter.
      	(expand_sync_lock_test_and_set): New prototype.
      	(expand_atomic_test_and_set, expand_atomic_clear): New prototypes.
      
      From-SVN: r181702
      Andrew MacLeod committed
  14. 17 Nov, 2011 1 commit
    • Unify implementations of __builtin_mem_*_fence and __sync_synchronize. · c39169c8
      	* builtins.c (expand_builtin_mem_thread_fence): Remove.
      	(expand_builtin_mem_signal_fence): Remove.
      	(expand_builtin_atomic_thread_fence): Use expand_mem_thread_fence.
      	(expand_builtin_sync_synchronize): Likewise.
      	(expand_builtin_atomic_signal_fence): Use expand_mem_signal_fence.
      	* optabs.c (expand_asm_memory_barrier): Split out from
      	expand_builtin_mem_signal_fence.
      	(expand_mem_thread_fence): New, a combination of code from
      	expand_builtin_mem_thread_fence and expand_builtin_sync_synchronize.
      	(expand_mem_signal_fence): Moved and renamed from
      	expand_builtin_mem_signal_fence.
      	(expand_atomic_exchange): Use expand_mem_thread_fence.
      	(expand_atomic_load, expand_atomic_store): Likewise.
      	* expr.h, optabs.h: Update decls.
      
      From-SVN: r181451
      Richard Henderson committed
  15. 07 Nov, 2011 1 commit
    • atomic_base.h (atomic_thread_fence): Call builtin. · 0669295b
      2011-11-07  Andrew MacLeod  <amacleod@redhat.com>
      
      	libstdc++-v3
      	* include/bits/atomic_base.h (atomic_thread_fence): Call builtin.
      	(atomic_signal_fence): Call builtin.
      	(atomic_flag::test_and_set): Call __atomic_exchange when it is lockfree,
      	otherwise fall back to call __sync_lock_test_and_set.
      	(atomic_flag::clear): Call __atomic_store when it is lockfree,
      	otherwise fall back to call __sync_lock_release.
      
      	gcc
      	* doc/extend.texi: Docuemnt behaviour change for __atomic_exchange and
      	__atomic_store.
      	* optabs.c (expand_atomic_exchange): Expand to __sync_lock_test_and_set
      	only when originated from that builtin.
      	(expand_atomic_store): Expand to __sync_lock_release when originated
      	from that builtin.
      	* builtins.c (expand_builtin_sync_lock_test_and_set): Add flag that
      	expand_atomic_exchange call originated from here.
      	(expand_builtin_sync_lock_release): Add flag that expand_atomic_store
      	call originated from here.
      	(expand_builtin_atomic_exchange): Add origination flag.
      	(expand_builtin_atomic_store): Add origination flag.
      	* expr.h (expand_atomic_exchange, expand_atomic_store): Add boolean 
      	parameters to indicate implementation fall back options.
      
      From-SVN: r181111
      Andrew MacLeod committed
  16. 06 Nov, 2011 1 commit
  17. 12 Oct, 2011 1 commit
    • expr.h (copy_blkmode_to_reg): Declare. · 2ba87a29
      gcc/
      	* expr.h (copy_blkmode_to_reg): Declare.
      	* expr.c (copy_blkmode_to_reg): New function.
      	(expand_assignment): Don't expand register RESULT_DECLs before
      	the lhs.  Use copy_blkmode_to_reg to copy BLKmode values into a
      	RESULT_DECL register.
      	(expand_expr_real_1): Handle BLKmode decls when looking for promotion.
      	* stmt.c (expand_return): Move BLKmode-to-register code into
      	copy_blkmode_to_reg.
      
      From-SVN: r179839
      Richard Sandiford committed
  18. 12 Sep, 2011 1 commit
    • re PR debug/50299 (entryval: bigendian 32bit->64bit extension breaks address match) · 7d810276
      	PR debug/50299
      	* calls.c (load_register_parameters): Use use_reg_mode instead
      	of use_reg when adding a single register CALL_INSN_FUNCTION_USAGE
      	entry.
      	(expand_call): Set EXPR_LIST mode to TYPE_MODE of the argument
      	for stack CALL_INSN_FUNCTION_USAGE uses.
      	* expr.h (use_reg_mode): New prototype.
      	(use_reg): Changed into inline around use_reg_mode.
      	* expr.c (use_reg): Renamed to...
      	(use_reg_mode): ... this.  Added MODE argument, set EXPR_LIST
      	mode to that mode instead of VOIDmode.
      	* var-tracking.c (prepare_call_arguments): Don't track parameters
      	whose EXPR_LIST mode is VOIDmode, BLKmode or X mode isn't convertible
      	to it using lowpart_subreg.  Convert VALUE and REG/MEM to the
      	EXPR_LIST mode.
      
      From-SVN: r178784
      Jakub Jelinek committed
  19. 27 Jul, 2011 1 commit
    • params.h (ALLOW_STORE_DATA_RACES): New. · 1169e45d
      	* params.h (ALLOW_STORE_DATA_RACES): New.
      	* params.def (PARAM_ALLOW_STORE_DATA_RACES): New.
      	* Makefile.in (expr.o): Depend on PARAMS_H.
      	* machmode.h (get_best_mode): Add argument.
      	* fold-const.c (optimize_bit_field_compare): Add argument to
      	get_best_mode.
      	(fold_truthop): Same.
      	* ifcvt.c (noce_emit_move_insn): Add argument to store_bit_field.
      	* expr.c (emit_group_store): Same.
      	(copy_blkmode_from_reg): Same.
      	(write_complex_part): Same.
      	(optimize_bitfield_assignment_op): Add argument.
      	Add argument to get_best_mode.
      	(get_bit_range): New.
      	(expand_assignment): Calculate maxbits and pass it down
      	accordingly.
      	(store_field): New argument.
      	(expand_expr_real_2): New argument to store_field.
      	Include params.h.
      	* expr.h (store_bit_field): New argument.
      	* stor-layout.c (get_best_mode): Restrict mode expansion by taking
      	into account maxbits.
      	* calls.c (store_unaligned_arguments_into_pseudos): New argument
      	to store_bit_field.
      	* expmed.c (store_bit_field_1): New argument.  Use it.
      	(store_bit_field): Same.
      	(store_fixed_bit_field): Same.
      	(store_split_bit_field): Same.
      	(extract_bit_field_1): Pass new argument to get_best_mode.
      	(extract_bit_field): Same.
      	* stmt.c (store_bit_field): Pass new argument to store_bit_field.
      	* doc/invoke.texi: Document parameter allow-store-data-races.
      
      From-SVN: r176824
      Aldy Hernandez committed
  20. 29 Apr, 2011 1 commit
    • expr.h (expand_shift): Rename to ... · eb6c3df1
      2011-04-29  Richard Guenther  <rguenther@suse.de>
      
      	* expr.h (expand_shift): Rename to ...
      	(expand_variable_shift): ... this.
      	(expand_shift): Take a constant shift amount.
      	* expmed.c (expand_shift): Rename to ...
      	(expand_variable_shift): ... this.
      	(expand_shift): New wrapper around expand_variable_shift.
      	* expr.c (convert_move, emit_group_load_1, emit_group_store,
      	optimize_bitfield_assignment_op, store_field, expand_expr_real_2,
      	expand_expr_real_1, reduce_to_bit_field_precision): Adjust.
      	* expmed.c (store_fixed_bit_field, extract_bit_field_1,
      	extract_fixed_bit_field, extract_split_bit_field, expand_mult_const,
      	expand_mult, expand_widening_mult, expand_mult_highpart_adjust,
      	extract_high_half, expand_sdiv_pow2, expand_divmod, emit_cstore,
      	emit_store_flag_1, emit_store_flag): Likewise.
      	* builtins.c (expand_builtin_signbit): Likewise.
      	* calls.c (load_register_parameters): Likewise.
      	* function.c (assign_parm_setup_block): Likewise.
      	* lower-subreg.c (resolve_shift_zext): Likewise.
      	* optabs.c (widen_bswap, expand_abs_nojump,
      	expand_one_cmpl_abs_nojump, expand_float): Likewise.
      	* spu/spu.c (spu_expand_extv): Likewise.
      	* sparc/sparc.c (sparc32_initialize_trampoline): Likewise.
      
      From-SVN: r173157
      Richard Guenther committed
  21. 21 Mar, 2011 1 commit
    • expr.h (prepare_operand): Move to... · 2ef6ce06
      gcc/
      2011-03-21  Richard Sandiford  <richard.sandiford@linaro.org>
      
      	* expr.h (prepare_operand): Move to...
      	* optabs.h (prepare_operand): ...here and change the insn code
      	parameter from "int" to "enum insn_code".
      	(insn_operand_matches): Declare.
      	* expr.c (init_expr_target): Use insn_operand_matches.
      	(compress_float_constant): Likewise.
      	* function.c (safe_insn_predicate, assign_parm_setup_reg): Likewise.
      	* optabs.c (can_compare_p, prepare_cmp_insn): Likewise.
      	(emit_cmp_and_jump_insn_1, gen_add2_insn, gen_add3_insn): Likewise.
      	(have_add2_insn, gen_sub2_insn, gen_sub3_insn, have_sub2_insn): Likewise.
      	(gen_cond_trap): Likewise.
      	(prepare_operand): Likewise.  Change icode to an insn_code.
      	(insn_operand_matches): New function.
      	* reload.c (find_reloads_address_1): Use insn_operand_matches.
      	* reload1.c (gen_reload): Likewise.
      	* targhooks.c (default_secondary_reload): Likewise.
      
      From-SVN: r171270
      Richard Sandiford committed
  22. 03 Mar, 2011 1 commit
    • explow.c (emit_stack_save): Remove 'after' parameter. · 9eac0f2a
              * explow.c (emit_stack_save): Remove 'after' parameter.
              (emit_stack_restore): Likewise.
              * expr.h: Update to match.
              * builtins.c, calls.c, stmt.c: Likewise.
              * config/alpha/alpha.md, config/avr/avr.md: Likewise.
              * config/mips/mips.md, config/pa/pa.md, config/vax/vax.md: Likewise.
              * function.c (expand_function_end): Insert the emit_stack_save
              sequence before parm_birth_insn instead of after.
      
      From-SVN: r170663
      Richard Henderson committed
  23. 22 Oct, 2010 1 commit
    • expr.c (emit_group_load_1): Update calls to extract_bit_field. · 62519f7f
      	* expr.c (emit_group_load_1): Update calls to extract_bit_field.
      	(copy_blkmode_from_reg): Likewise.
      	(read_complex_part): Likewise.
      	(expand_expr_real_1): Calculate packedp and pass it to
      	extract_bit_field.
      	* expr.h (extract_bit_field): Update declaration.
      	* calls.c (store_unaligned_arguments_into_pseudos): Update call
      	to extract_bit_field.
      	* expmed.c (extract_fixed_bit_field): Update calls to
      	extract_fixed_bit_field.
      	(store_split_bit_field): Likewise.
      	(extract_bit_field_1): Add new argument packedp.
      	(extract_bit_field): Add new argument packedp.
      	(extract_fixed_bit_field): Add new argument packedp and let
      	packed attribute override volatile.
      	* stmt.c (expand_return): Update call to extract_bit_field.
      
      From-SVN: r165799
      Jie Zhang committed
  24. 09 Oct, 2010 1 commit
    • re PR rtl-optimization/33721 ([meta-bug] Gcc can't properly align stack variable) · 3a42502d
      	PR rtl-opt/33721
      	* explow.c (allocate_dynamic_stack_space): Add REQUIRED_ALIGN parm,
      	remove TARGET parm, convert KNOWN_ALIGN parm to SIZE_ALIGN.  Honor
      	required_align, tidy the code a bit.  Emit split_stack code in the
      	right place.  Mark the return value with the alignment properly.
      	* expr.h (allocate_dynamic_stack_space): Update decl.
      	* builtins.c (expand_builtin_apply): Update call to
      	allocate_dynamic_stack_space.
      	(expand_builtin_alloca): Likewise.  Remove TARGET parameter.
      	* calls.c (initialize_argument_information): Update call to
      	allocate_dynamic_stack_space.
      	(expand_call): Likewise.
      
      	* cfgexpand.c (get_decl_align_unit): Don't limit alignment.
      	Don't update_stack_alignment here.
      	(alloc_stack_frame_space): Make ALIGN unsigned.
      	(stack_var_cmp): Sort by alignment too.
      	(partition_stack_vars): Don't merge large and small alignment vars.
      	(expand_one_stack_var_at): Add BASE and BASE_ALIGN parameters.
      	Take care when BASE is not virtual_stack_vars_rtx.
      	(expand_stack_vars): Allocate dynamic stack space for large
      	alignment variables.
      	(expand_one_stack_var): Update all to expand_one_stack_var_at.
      	(defer_stack_allocation): True for large alignment vars.
      	(update_stack_alignment): Merge into ...
      	(expand_one_var): ... here.
      	(gimple_expand_cfg): Place code from expand_stack_vars.
      
      From-SVN: r165240
      Richard Henderson committed
  25. 30 Aug, 2010 1 commit
    • Stack usage support · d3c12306
      	Stack usage support
      	* common.opt (-fstack-usage): New option.
      	* doc/invoke.texi (Debugging options): Document it.
      	* builtins.c (expand_builtin_apply): Pass TRUE as 4th argument to
      	allocate_dynamic_stack_space.
      	(expand_builtin_alloca): Add 4th bool parameter CANNOT_ACCUMULATE
      	and propagate it to allocate_dynamic_stack_space.
      	(expand_builtin) <BUILT_IN_ALLOCA>: Adjust for above change.
      	* calls.c (initialize_argument_information): Pass TRUE as 4th
      	argument to allocate_dynamic_stack_space.
      	(expand_call): Set current_function_has_unbounded_dynamic_stack_size
      	to 1 when pushing a variable-sized argument onto the stack.  Pass
      	TRUE as 4th argument to allocate_dynamic_stack_space.
      	Update current_function_pushed_stack_size.
      	(emit_library_call_value_1): Likewise.
      	* explow.c (allocate_dynamic_stack_space): Add 4th bool parameter
      	CANNOT_ACCUMULATE.  If flag_stack_usage, look into the size and
      	attempt to find an upper bound.  Remove redundant code for the
      	SETJMP_VIA_SAVE_AREA case.
      	* expr.h (allocate_dynamic_stack_space): Add 4th bool parameter.
      	* function.h (struct stack_usage): New structure.
      	(current_function_static_stack_size): New macro.
      	(current_function_dynamic_stack_size): Likewise.
      	(current_function_pushed_stack_size): Likewise.
      	(current_function_dynamic_alloc_count): Likewise.
      	(current_function_has_unbounded_dynamic_stack_size): Likewise.
      	(current_function_allocates_dynamic_stack_space): Likewise.
      	(struct function): Add new field 'su'.
      	* function.c (instantiate_virtual_regs): If SETJMP_VIA_SAVE_AREA,
      	add the value of the dynamic offset to the dynamic stack usage.
      	(gimplify_parameters): Set ALLOCA_FOR_VAR_P on call to BUILT_IN_ALLOCA
      	for variable-sized objects.
      	(prepare_function_start): Allocate cfun->su if flag_stack_usage.
      	(rest_of_handle_thread_prologue_and_epilogue): Call output_stack_usage.
      	* gimplify.c (gimplify_decl_expr): Set ALLOCA_FOR_VAR_P on call to
      	BUILT_IN_ALLOCA for variable-sized objects.
      	* output.h (output_stack_usage): Declare.
      	* toplev.c (stack_usage_file): New file pointer.
      	(output_stack_usage): New function.
      	(open_auxiliary_file): Likewise.
      	(lang_dependent_init): Open file if flag_stack_usage is set.
      	(finalize): Close file if stack_usage_file is not null.
      	* tree.h (ALLOCA_FOR_VAR_P): New macro.
      	* config/alpha/alpha.c (compute_frame_size): New function.
      	(alpha_expand_prologue): Use it.
      	(alpha_start_function): Likewise.
      	(alpha_expand_epilogue): Likewise.  Set stack usage info.
      	* config/i386/i386.c (ix86_expand_prologue): Likewise.
      	* config/ia64/ia64.c (ia64_expand_prologue): Likewise.
      	* config/mips/mips.c (mips_expand_prologue): Likewise.
      	* config/pa/pa.c (hppa_expand_prologue): Likewise.
      	* config/rs6000/rs6000.c (rs6000_emit_prologue): Likewise.
      	* config/sparc/sparc.c (sparc_expand_prologue): Likewise.
      testsuite/
      	* lib/gcc-dg.exp (cleanup-stack-usage): New procedure.
      	* lib/scanasm.exp (scan-stack-usage): Likewise.
      	(scan-stack-usage-not): Likewise.
      	* gcc.dg/stack-usage-1.c: New test.
      	* gcc.target/i386/stack-usage-realign.c: Likewise.
      
      From-SVN: r163660
      Eric Botcazou committed
  26. 03 Jul, 2010 1 commit
    • c-common.c (IN_GCC_FRONTEND): Do not undef. · 4d451982
      2010-07-03  Manuel López-Ibáñez  <manu@gcc.gnu.org>
      
      	* c-family/c-common.c (IN_GCC_FRONTEND): Do not undef.
      	Do not include expr.h
      	(vector_mode_valid_p): Move here.
      	* expr.c (vector_mode_valid_p): Move to c-common.c.
      	* expr.h (vector_mode_valid_p): Do not declare here.
      	* system.h: Poison GCC_EXPR_H in front-ends.
      	* Makefile.in: Update dependencies.
      
      From-SVN: r161785
      Manuel López-Ibáñez committed
  27. 02 Jul, 2010 1 commit
    • expr.h (emit_stack_probe): Declare. · 260c8ba3
      	* expr.h (emit_stack_probe): Declare.
      	* explow.c (emit_stack_probe): Make global.
      	(anti_adjust_stack_and_probe): Fix comments.
      	* config/sparc/linux.h (STACK_CHECK_STATIC_BUILTIN): Define to 1.
      	* config/sparc/linux64.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
      	* config/sparc/sol2.h (STACK_CHECK_STATIC_BUILTIN): Likewise.
      	* config/sparc/sparc.c: Include except.h.
      	(sparc_emit_probe_stack_range): New function.
      	(output_probe_stack_range): Likewise.
      	(sparc_expand_prologue): Invoke sparc_emit_probe_stack_range if static
      	built-in stack checking is enabled.
      	* config/sparc/sparc-protos.h (output_probe_stack_range): Declare.
      	* config/sparc/sparc.md (UNSPECV_PROBE_STACK_RANGE): New constant.
      	(probe_stack_range): New insn.
      
      From-SVN: r161749
      Eric Botcazou committed
  28. 02 Jun, 2010 1 commit
    • mkconfig.sh: Include insn-flags.h and insn-constants.h before defaults.h. · 77ec4307
      	* mkconfig.sh: Include insn-flags.h and insn-constants.h before
      	defaults.h.
      	* except.h: Move MUST_USE_SJLJ_EXCEPTIONS and USING_SJLJ_EXCEPTIONS
      	to defaults.h
      	* expr.h (BRANCH_COST, MOVE_RATIO, CLEAR_RATIO, SET_RATIO,
      	DEFAULT_FUNCTION_ARG_PADDING, FUNCTION_ARG_PADDING,
      	FUNCTION_ARG_BOUNDARY, STACK_SAVEAREA_MODE, STACK_SIZE_MODE,
      	STACK_CHECK_BUILTIN, STACK_CHECK_STATIC_BUILTIN,
      	STACK_CHECK_PROBE_INTERVAL_EXP, STACK_CHECK_MOVING_SP,
      	STACK_OLD_CHECK_PROTECT, STACK_CHECK_PROTECT,
      	STACK_CHECK_MAX_FRAME_SIZE, STACK_CHECK_FIXED_FRAME_SIZE,
      	STACK_CHECK_MAX_VAR_SIZE): Move target macro defaults to defaults.h.
      	* defaults.h: Updated for above mentioned changes.
      
      From-SVN: r160195
      Steven Bosscher committed
  29. 29 May, 2010 1 commit
    • basic-block.h (struct control_flow_graph): Move last_label_uid field up. · 25efe060
      	* basic-block.h (struct control_flow_graph): Move last_label_uid field up.
      	* df.h (struct df_base_ref): Move regno field up.
      	* dwarf2out.c (struct dw_fde_struct): Move funcdef_number field down.
      	* expr.h (struct separate_ops): Move location field up.
      	* optabs.h (struct optab_d): Move libcall_basename field down.
      	* config/i386/i386.c (struct ix86_frame): Move red_zone_size up.
      	* config/i386/i386.h (struct machine_function): Convert call_abi field
      	into a bitfield.  Move cfa field to the end of the structure.
      
      From-SVN: r160025
      Nathan Froyd committed
  30. 19 Feb, 2010 1 commit
    • re PR middle-end/42233 (c++ builtin_expect code generation regression) · 40e90eac
      	PR middle-end/42233
      	* expr.h (jumpifnot, jumpifnot_1, jumpif, jumpif_1, do_jump,
      	do_jump_1, do_compare_rtx_and_jump): Add PROB argument.
      	* dojump.c: Include output.h.
      	(inv): New inline function.
      	(jumpifnot, jumpifnot_1, jumpif, jumpif_1, do_jump_1, do_jump,
      	do_jump_by_parts_greater_rtx, do_jump_by_parts_greater,
      	do_jump_by_parts_zero_rtx, do_jump_by_parts_equality_rtx,
      	do_jump_by_parts_equality, do_compare_and_jump): Add PROB
      	argument, pass it down to other calls.
      	(do_compare_rtx_and_jump): Likewise.  If PROB is not -1,
      	add REG_BR_PROB note to the conditional jump.
      	* cfgexpand.c (add_reg_br_prob_note): Removed.
      	(expand_gimple_cond): Don't call it, add the probability
      	as last argument to jumpif_1/jumpifnot_1.
      	* Makefile.in (dojump.o): Depend on output.h.
      	* builtins.c (expand_errno_check): Adjust do_compare_rtx_and_jump
      	callers.
      	* expmed.c (emit_store_flag_force, do_cmp_and_jump): Likewise.
      	* stmt.c (do_jump_if_equal): Likewise.
      	* cfgrtl.c (rtl_lv_add_condition_to_bb): Likewise.
      	* loop-unswitch.c (compare_and_jump_seq): Likewise.
      	* config/rs6000/rs6000.c (rs6000_aix_emit_builtin_unwind_init):
      	Likewise.
      	* optabs.c (expand_doubleword_shift, expand_abs): Likewise.
      	* expr.c (expand_expr_real_1): Adjust do_jump, jumpifnot and
      	jumpifnot_1 callers.
      	(expand_expr_real_2): Adjust jumpifnot_1 and do_compare_rtx_and_jump
      	callers.
      	(store_expr): Adjust jumpifnot caller.
      	(store_constructor): Adjust jumpif caller.
      
      From-SVN: r156889
      Jakub Jelinek committed
  31. 13 Dec, 2009 1 commit
  32. 25 Nov, 2009 1 commit
    • Remove trailing white spaces. · b8698a0f
      2009-11-25  H.J. Lu  <hongjiu.lu@intel.com>
      
      	* alias.c: Remove trailing white spaces.
      	* alloc-pool.c: Likewise.
      	* alloc-pool.h: Likewise.
      	* attribs.c: Likewise.
      	* auto-inc-dec.c: Likewise.
      	* basic-block.h: Likewise.
      	* bb-reorder.c: Likewise.
      	* bt-load.c: Likewise.
      	* builtins.c: Likewise.
      	* builtins.def: Likewise.
      	* c-common.c: Likewise.
      	* c-common.h: Likewise.
      	* c-cppbuiltin.c: Likewise.
      	* c-decl.c: Likewise.
      	* c-format.c: Likewise.
      	* c-lex.c: Likewise.
      	* c-omp.c: Likewise.
      	* c-opts.c: Likewise.
      	* c-parser.c: Likewise.
      	* c-pretty-print.c: Likewise.
      	* c-tree.h: Likewise.
      	* c-typeck.c: Likewise.
      	* caller-save.c: Likewise.
      	* calls.c: Likewise.
      	* cfg.c: Likewise.
      	* cfganal.c: Likewise.
      	* cfgexpand.c: Likewise.
      	* cfghooks.c: Likewise.
      	* cfghooks.h: Likewise.
      	* cfglayout.c: Likewise.
      	* cfgloop.c: Likewise.
      	* cfgloop.h: Likewise.
      	* cfgloopmanip.c: Likewise.
      	* cfgrtl.c: Likewise.
      	* cgraph.c: Likewise.
      	* cgraph.h: Likewise.
      	* cgraphbuild.c: Likewise.
      	* cgraphunit.c: Likewise.
      	* cif-code.def: Likewise.
      	* collect2.c: Likewise.
      	* combine.c: Likewise.
      	* convert.c: Likewise.
      	* coverage.c: Likewise.
      	* crtstuff.c: Likewise.
      	* cse.c: Likewise.
      	* cselib.c: Likewise.
      	* dbgcnt.c: Likewise.
      	* dbgcnt.def: Likewise.
      	* dbgcnt.h: Likewise.
      	* dbxout.c: Likewise.
      	* dce.c: Likewise.
      	* ddg.c: Likewise.
      	* ddg.h: Likewise.
      	* defaults.h: Likewise.
      	* df-byte-scan.c: Likewise.
      	* df-core.c: Likewise.
      	* df-problems.c: Likewise.
      	* df-scan.c: Likewise.
      	* df.h: Likewise.
      	* dfp.c: Likewise.
      	* diagnostic.c: Likewise.
      	* diagnostic.h: Likewise.
      	* dominance.c: Likewise.
      	* domwalk.c: Likewise.
      	* double-int.c: Likewise.
      	* double-int.h: Likewise.
      	* dse.c: Likewise.
      	* dwarf2asm.c: Likewise.
      	* dwarf2asm.h: Likewise.
      	* dwarf2out.c: Likewise.
      	* ebitmap.c: Likewise.
      	* ebitmap.h: Likewise.
      	* emit-rtl.c: Likewise.
      	* et-forest.c: Likewise.
      	* except.c: Likewise.
      	* except.h: Likewise.
      	* expmed.c: Likewise.
      	* expr.c: Likewise.
      	* expr.h: Likewise.
      	* final.c: Likewise.
      	* flags.h: Likewise.
      	* fold-const.c: Likewise.
      	* function.c: Likewise.
      	* function.h: Likewise.
      	* fwprop.c: Likewise.
      	* gcc.c: Likewise.
      	* gcov-dump.c: Likewise.
      	* gcov-io.c: Likewise.
      	* gcov-io.h: Likewise.
      	* gcov.c: Likewise.
      	* gcse.c: Likewise.
      	* genattr.c: Likewise.
      	* genattrtab.c: Likewise.
      	* genautomata.c: Likewise.
      	* genchecksum.c: Likewise.
      	* genconfig.c: Likewise.
      	* genflags.c: Likewise.
      	* gengtype-parse.c: Likewise.
      	* gengtype.c: Likewise.
      	* gengtype.h: Likewise.
      	* genmddeps.c: Likewise.
      	* genmodes.c: Likewise.
      	* genopinit.c: Likewise.
      	* genpreds.c: Likewise.
      	* gensupport.c: Likewise.
      	* ggc-common.c: Likewise.
      	* ggc-page.c: Likewise.
      	* ggc-zone.c: Likewise.
      	* ggc.h: Likewise.
      	* gimple-iterator.c: Likewise.
      	* gimple-low.c: Likewise.
      	* gimple-pretty-print.c: Likewise.
      	* gimple.c: Likewise.
      	* gimple.def: Likewise.
      	* gimple.h: Likewise.
      	* gimplify.c: Likewise.
      	* graphds.c: Likewise.
      	* graphite-clast-to-gimple.c: Likewise.
      	* gthr-nks.h: Likewise.
      	* gthr-posix.c: Likewise.
      	* gthr-posix.h: Likewise.
      	* gthr-posix95.h: Likewise.
      	* gthr-single.h: Likewise.
      	* gthr-tpf.h: Likewise.
      	* gthr-vxworks.h: Likewise.
      	* gthr.h: Likewise.
      	* haifa-sched.c: Likewise.
      	* hard-reg-set.h: Likewise.
      	* hooks.c: Likewise.
      	* hooks.h: Likewise.
      	* hosthooks.h: Likewise.
      	* hwint.h: Likewise.
      	* ifcvt.c: Likewise.
      	* incpath.c: Likewise.
      	* init-regs.c: Likewise.
      	* integrate.c: Likewise.
      	* ipa-cp.c: Likewise.
      	* ipa-inline.c: Likewise.
      	* ipa-prop.c: Likewise.
      	* ipa-pure-const.c: Likewise.
      	* ipa-reference.c: Likewise.
      	* ipa-struct-reorg.c: Likewise.
      	* ipa-struct-reorg.h: Likewise.
      	* ipa-type-escape.c: Likewise.
      	* ipa-type-escape.h: Likewise.
      	* ipa-utils.c: Likewise.
      	* ipa-utils.h: Likewise.
      	* ipa.c: Likewise.
      	* ira-build.c: Likewise.
      	* ira-color.c: Likewise.
      	* ira-conflicts.c: Likewise.
      	* ira-costs.c: Likewise.
      	* ira-emit.c: Likewise.
      	* ira-int.h: Likewise.
      	* ira-lives.c: Likewise.
      	* ira.c: Likewise.
      	* jump.c: Likewise.
      	* lambda-code.c: Likewise.
      	* lambda-mat.c: Likewise.
      	* lambda-trans.c: Likewise.
      	* lambda.h: Likewise.
      	* langhooks.c: Likewise.
      	* lcm.c: Likewise.
      	* libgcov.c: Likewise.
      	* lists.c: Likewise.
      	* loop-doloop.c: Likewise.
      	* loop-init.c: Likewise.
      	* loop-invariant.c: Likewise.
      	* loop-iv.c: Likewise.
      	* loop-unroll.c: Likewise.
      	* lower-subreg.c: Likewise.
      	* lto-cgraph.c: Likewise.
      	* lto-compress.c: Likewise.
      	* lto-opts.c: Likewise.
      	* lto-section-in.c: Likewise.
      	* lto-section-out.c: Likewise.
      	* lto-streamer-in.c: Likewise.
      	* lto-streamer-out.c: Likewise.
      	* lto-streamer.c: Likewise.
      	* lto-streamer.h: Likewise.
      	* lto-symtab.c: Likewise.
      	* lto-wpa-fixup.c: Likewise.
      	* matrix-reorg.c: Likewise.
      	* mcf.c: Likewise.
      	* mode-switching.c: Likewise.
      	* modulo-sched.c: Likewise.
      	* omega.c: Likewise.
      	* omega.h: Likewise.
      	* omp-low.c: Likewise.
      	* optabs.c: Likewise.
      	* optabs.h: Likewise.
      	* opts-common.c: Likewise.
      	* opts.c: Likewise.
      	* params.def: Likewise.
      	* params.h: Likewise.
      	* passes.c: Likewise.
      	* plugin.c: Likewise.
      	* postreload-gcse.c: Likewise.
      	* postreload.c: Likewise.
      	* predict.c: Likewise.
      	* predict.def: Likewise.
      	* pretty-print.c: Likewise.
      	* pretty-print.h: Likewise.
      	* print-rtl.c: Likewise.
      	* print-tree.c: Likewise.
      	* profile.c: Likewise.
      	* read-rtl.c: Likewise.
      	* real.c: Likewise.
      	* recog.c: Likewise.
      	* reg-stack.c: Likewise.
      	* regcprop.c: Likewise.
      	* reginfo.c: Likewise.
      	* regmove.c: Likewise.
      	* regrename.c: Likewise.
      	* regs.h: Likewise.
      	* regstat.c: Likewise.
      	* reload.c: Likewise.
      	* reload1.c: Likewise.
      	* resource.c: Likewise.
      	* rtl.c: Likewise.
      	* rtl.def: Likewise.
      	* rtl.h: Likewise.
      	* rtlanal.c: Likewise.
      	* sbitmap.c: Likewise.
      	* sched-deps.c: Likewise.
      	* sched-ebb.c: Likewise.
      	* sched-int.h: Likewise.
      	* sched-rgn.c: Likewise.
      	* sched-vis.c: Likewise.
      	* sdbout.c: Likewise.
      	* sel-sched-dump.c: Likewise.
      	* sel-sched-dump.h: Likewise.
      	* sel-sched-ir.c: Likewise.
      	* sel-sched-ir.h: Likewise.
      	* sel-sched.c: Likewise.
      	* sel-sched.h: Likewise.
      	* sese.c: Likewise.
      	* sese.h: Likewise.
      	* simplify-rtx.c: Likewise.
      	* stack-ptr-mod.c: Likewise.
      	* stmt.c: Likewise.
      	* stor-layout.c: Likewise.
      	* store-motion.c: Likewise.
      	* stringpool.c: Likewise.
      	* stub-objc.c: Likewise.
      	* sync-builtins.def: Likewise.
      	* target-def.h: Likewise.
      	* target.h: Likewise.
      	* targhooks.c: Likewise.
      	* targhooks.h: Likewise.
      	* timevar.c: Likewise.
      	* tlink.c: Likewise.
      	* toplev.c: Likewise.
      	* toplev.h: Likewise.
      	* tracer.c: Likewise.
      	* tree-affine.c: Likewise.
      	* tree-affine.h: Likewise.
      	* tree-browser.def: 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-dump.c: Likewise.
      	* tree-dump.h: Likewise.
      	* tree-eh.c: Likewise.
      	* tree-flow-inline.h: Likewise.
      	* tree-flow.h: Likewise.
      	* tree-if-conv.c: Likewise.
      	* tree-inline.c: Likewise.
      	* tree-into-ssa.c: Likewise.
      	* tree-loop-distribution.c: Likewise.
      	* tree-loop-linear.c: Likewise.
      	* tree-mudflap.c: Likewise.
      	* tree-nested.c: Likewise.
      	* tree-nomudflap.c: Likewise.
      	* tree-nrv.c: Likewise.
      	* tree-object-size.c: Likewise.
      	* tree-optimize.c: Likewise.
      	* tree-outof-ssa.c: Likewise.
      	* tree-parloops.c: Likewise.
      	* tree-pass.h: Likewise.
      	* tree-phinodes.c: Likewise.
      	* tree-predcom.c: Likewise.
      	* tree-pretty-print.c: Likewise.
      	* tree-profile.c: Likewise.
      	* tree-scalar-evolution.c: Likewise.
      	* tree-ssa-address.c: Likewise.
      	* tree-ssa-alias.c: Likewise.
      	* tree-ssa-ccp.c: Likewise.
      	* tree-ssa-coalesce.c: Likewise.
      	* tree-ssa-copy.c: Likewise.
      	* tree-ssa-copyrename.c: Likewise.
      	* tree-ssa-dce.c: Likewise.
      	* tree-ssa-dom.c: Likewise.
      	* tree-ssa-dse.c: Likewise.
      	* tree-ssa-forwprop.c: Likewise.
      	* tree-ssa-ifcombine.c: Likewise.
      	* tree-ssa-live.c: Likewise.
      	* tree-ssa-live.h: Likewise.
      	* tree-ssa-loop-ch.c: 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-loop-unswitch.c: Likewise.
      	* tree-ssa-loop.c: Likewise.
      	* tree-ssa-math-opts.c: Likewise.
      	* tree-ssa-operands.c: Likewise.
      	* tree-ssa-operands.h: 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-sink.c: Likewise.
      	* tree-ssa-structalias.c: Likewise.
      	* tree-ssa-ter.c: Likewise.
      	* tree-ssa-threadedge.c: Likewise.
      	* tree-ssa-threadupdate.c: Likewise.
      	* tree-ssa-uncprop.c: Likewise.
      	* tree-ssa.c: Likewise.
      	* tree-ssanames.c: Likewise.
      	* tree-switch-conversion.c: Likewise.
      	* tree-tailcall.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.def: Likewise.
      	* tree.h: Likewise.
      	* treestruct.def: Likewise.
      	* unwind-compat.c: Likewise.
      	* unwind-dw2-fde-glibc.c: Likewise.
      	* unwind-dw2.c: Likewise.
      	* value-prof.c: Likewise.
      	* value-prof.h: Likewise.
      	* var-tracking.c: Likewise.
      	* varasm.c: Likewise.
      	* varpool.c: Likewise.
      	* vec.c: Likewise.
      	* vec.h: Likewise.
      	* vmsdbgout.c: Likewise.
      	* web.c: Likewise.
      	* xcoffout.c: Likewise.
      
      From-SVN: r154645
      H.J. Lu committed
  33. 10 Nov, 2009 1 commit
    • re PR target/10127 (-fstack-check let's program crash) · c35af30f
      	PR target/10127
      	PR ada/20548
      	* expr.h (anti_adjust_stack_and_probe): Declare.
      	* explow.c (anti_adjust_stack_and_probe): Make global, add ADJUST_BACK
      	parameter and rewrite head comment.
      	(allocate_dynamic_stack_space): Adjust call to above function.
      	* function.c (expand_function_end): Handle STACK_CHECK_MOVING_SP.
      
      	* tree.h (dwarf2out_args_size): Delete.
      	* dwarf2out.c (dwarf2out_args_size): Make static and move around.
      	(dwarf2out_args_size_adjust): Delete prototype and move around.
      	(dwarf2out_frame_debug_expr): Do not record arg size adjustments for
      	ACCUMULATE_OUTGOING_ARGS targets.
      
      From-SVN: r154079
      Eric Botcazou committed
  34. 03 Nov, 2009 1 commit
    • re PR target/10127 (-fstack-check let's program crash) · d809253a
      	PR target/10127
      	PR ada/20548
      	* expr.h (STACK_CHECK_PROBE_INTERVAL): Delete.
      	(STACK_CHECK_PROBE_INTERVAL_EXP): New macro.
      	(STACK_CHECK_MOVING_SP): Likewise.
      	* system.h (STACK_CHECK_PROBE_INTERVAL): Poison it.
      	* doc/tm.texi (Stack Checking): Delete STACK_CHECK_PROBE_INTERVAL.
      	Document STACK_CHECK_PROBE_INTERVAL_EXP and STACK_CHECK_MOVING_SP.
      	* doc/md.texi (Standard Pattern Names): Tweak entry of CHECK_STACK.
      	Document PROBE_STACK.
      	* explow.c (anti_adjust_stack_and_probe): New function.
      	(allocate_dynamic_stack_space): Do not directly allocate space if
      	STACK_CHECK_MOVING_SP, instead invoke above function.
      	(emit_stack_probe): Handle probe_stack insn.
      	(PROBE_INTERVAL): New macro.
      	(STACK_GROW_OPTAB): Likewise.
      	(STACK_GROW_OFF): Likewise.
      	(probe_stack_range): Use Pmode and memory_address consistently.  Fix
      	loop condition in the small constant case.  Rewrite in the general
      	case to be immune to wraparounds.  Make sure the address of probes
      	is valid.  Try to use [base + disp] addressing mode if possible.
      	* ira.c (setup_eliminable_regset): Set frame_pointer_needed if stack
      	checking is enabled and STACK_CHECK_MOVING_SP.
      	* rtlanal.c (may_trap_p_1) <MEM>: If stack checking is enabled,
      	return 1 for volatile references to the stack pointer.
      	* tree.c (build_common_builtin_nodes): Do not set ECF_NOTHROW on
      	__builtin_alloca if stack checking is enabled.
      	* unwind-dw2.c (uw_identify_context): Take into account whether the
      	context is that of a signal frame or not.
      	* config/i386/linux.h (STACK_CHECK_MOVING_SP): Define to 1.
      	* config/i386/linux64.h (STACK_CHECK_MOVING_SP): Likewise.
      
      From-SVN: r153877
      Eric Botcazou committed
  35. 26 Oct, 2009 1 commit
    • extend.texi (Named Address Spaces): New section. · 09e881c9
      2009-10-26  Ben Elliston  <bje@au.ibm.com>
      	    Michael Meissner  <meissner@linux.vnet.ibm.com>
      	    Ulrich Weigand  <uweigand@de.ibm.com>
      
      	* doc/extend.texi (Named Address Spaces): New section.
      	* coretypes.h (addr_space_t): New type.
      	(ADDR_SPACE_GENERIC): New define.
      	(ADDR_SPACE_GENERIC_P): New macro.
      
      	* doc/tm.texi (Named Address Spaces): New section.
      	(TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Document.
      	(TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Document.
      	(TARGET_ADDR_SPACE_SUBSET_P): Document.
      	(TARGET_ADDR_SPACE_CONVERT): Document.
      	* target.h (struct gcc_target): Add addr_space substructure.
      	* target-def.h (TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P): Define.
      	(TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS): Likewise.
      	(TARGET_ADDR_SPACE_SUBSET_P): Likewise.
      	(TARGET_ADDR_SPACE_CONVERT): Likewise.
      	(TARGET_ADDR_SPACE_HOOKS): Likewise.
      	(TARGET_INITIALIZER): Initialize addr_space hooks.
      	* targhooks.c (default_addr_space_legitimate_address_p): New function.
      	(default_addr_space_legitimize_address): Likewise.
      	(default_addr_space_subset_p): Likewise.
      	(default_addr_space_convert): Likewise.
      	* targhooks.h (default_addr_space_legitimate_address_p): Add prototype.
      	(default_addr_space_legitimize_address): Likewise.
      	(default_addr_space_subset_p): Likewise.
      	(default_addr_space_convert): Likewise.
      
      	* doc/rtl.texi (MEM_ADDR_SPACE): Document.
      	* rtl.h (mem_attrs): Add ADDRSPACE memory attribute.
      	(MEM_ADDR_SPACE): New macro.
      	* emit-rtl.c (get_mem_attrs): Add ADDRSPACE argument and set
      	address space memory attribute.
      	(mem_attrs_htab_hash): Handle address space memory attribute.
      	(mem_attrs_htab_eq): Likewise.
      	(set_mem_attributes_minus_bitpos): Likewise.
      	(set_mem_alias_set): Likewise.
      	(set_mem_align): Likewise.
      	(set_mem_expr): Likewise.
      	(set_mem_offset): Likewise.
      	(set_mem_size): Likewise.
      	(adjust_address_1): Likewise.
      	(offset_address): Likewise.
      	(widen_memoy_address): Likewise.
      	(get_spill_slot_decl): Likewise.
      	(set_mem_attrs_for_spill): Likewise.
      	(set_mem_addr_space): New function.
      	* emit-rtl.h (set_mem_addr_space): Add prototype.
      	* print-rtl.c (print_rtx): Print address space memory attribute.
      	* expr.c (expand_assignment): Set address space memory attribute
      	of generated MEM RTXes as appropriate.
      	(expand_expr_real_1): Likewise.
      	* cfgexpand.c (expand_debug_expr): Likewise.
      	* tree-ssa-loop-ivopts.c (produce_memory_decl_rtl): Likewise.
      
      	* tree.h (struct tree_base): Add address_space bitfield.  Reduce
      	size of "spare" bitfield.
      	(TYPE_ADDR_SPACE): New macro.
      	(ENCODE_QUAL_ADDR_SPACE): Likewise.
      	(DECODE_QUAL_ADDR_SPACE): Likewise.
      	(CLEAR_QUAL_ADDR_SPACE): Likewise.
      	(KEEP_QUAL_ADDR_SPACE): Likewise.
      	(TYPE_QUALS): Encode type address space.
      	(TYPE_QUALS_NO_ADDR_SPACE): New macro.
      	* tree.c (set_type_quals): Set type address space.
      	(build_array_type): Inherit array address space from element type.
      	* print-tree.c (print_node_brief): Print type address space.
      	(print_node): Likewise.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      
      	* explow.c (memory_address): Rename to ...
      	(memory_address_addr_space): ... this.  Add ADDRSPACE argument.
      	Use address-space aware variants of memory address routines.
      	* recog.c (memory_address_p): Rename to ...
      	(memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
      	Use address-space aware variants of memory address routines.
      	(offsettable_address_p): Rename to ...
      	(offsettable_address_addr_space_p): ... this.  Add ADDRSPACE argument.
      	Use address-space aware variants of memory address routines.
      	* reload.c (strict_memory_address_p): Rename to ...
      	(strict_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
      	Use address-space aware variants of memory address routines.
      	(maybe_memory_address_p): Rename to ...
      	(maybe_memory_address_addr_space_p): ... this.  Add ADDSPACE argument.
      	Use address-space aware variants of memory address routines.
      	* expr.h (memory_address_addr_space): Add prototype.
      	(memory_address): Define as macro.
      	* recog.h (memory_address_addr_space_p): Add prototype.
      	(memory_address_p): Define as macro.
      	(offsettable_address_addr_space_p): Add prototype.
      	(offsettable_address_p): Define as macro.
      	(strict_memory_address_addr_space_p): Add prototype.
      	(strict_memory_address_p): Define as macro.
      
      	* combine.c (find_split_point): Use address-space aware variants
      	of memory address routines.
      	* emit-rtl.c (operand_subword): Likewise.
      	(change_address_1): Likewise.
      	(adjust_address_1): Likewise.
      	(offset_address): Likewise.
      	* expr.c (emit_move_insn): Likewise.
      	(expand_assignment): Likewise.
      	(expand_expr_real_1): Likewise.
      	* recog.c (verify_changes): Likewise.
      	(general_operand): Likewise.
      	(offsettable_memref_p): Likewise.
      	(offsettable_nonstrict_memref_p): Likewise.
      	(constrain_operands): Likewise.
      	* reload.c (get_secondary_mem): Likewise.
      	(find_reloads_toplev): Likewise.
      	(find_reloads_address): Likewise.
      	(find_reloads_subreg_address): Likewise.
      	* reload1.c (reload): Likewise.
      	* rtlhooks.c (gen_lowpart_if_possible): Likewise.
      	* rtl.h (address_cost): Add ADDRSPACE argument.
      	* rtlanal.c (address_cost): Add ADDRSPACE argument.  Use address-space
      	aware variant of memory address routines.
      	* loop-invariant.c (create_new_invariant): Update address_cost call.
      	* tree-ssa-loop-ivopts.c (computation_cost): Likewise.
      	* fwprop.c (should_replace_address): Add ADDRSPACE argument.
      	Use address-space aware variant of memory address routines.
      	(propagate_rtx_1): Update call to should_replace_address.
      	* tree-flow.h (multiplier_allowed_in_address_p): Add ADDRSPACE
      	argument.
      	* tree-ssa-loop-ivopts.c (multiplier_allowed_in_address_p): Add
      	ADDRSPACE argument.  Use per-address-space instead of global cache.
      	Use address-space aware variant of memory address routines.
      	(get_address_cost): Likewise.
      	(get_computation_cost_at): Update calls.
      	* tree-ssa-address.c (valid_mem_ref_p): Add ADDRSPACE argument.
      	Use address-space aware variant of memory address routines.
      	(create_mem_ref_raw): Update call to valid_mem_ref_p.
      	(most_expensive_mult_to_index): Update call to
      	multiplier_allowed_in_address_p.
      
      	* dwarf2out.c (modified_type_die): Output DW_AT_address_class
      	attribute to indicate named address spaces.
      
      	* varasm.c (get_variable_section): DECLs in named address spaces
      	cannot be "common".
      
      	* reload.c (find_reloads_address): Do not use LEGITIMIZE_RELOAD_ADDRESS
      	for addresses in a non-generic address space.
      
      	* expr.c (emit_block_move_hints): Do not use libcalls for
      	memory in non-generic address spaces.
      	(clear_storage_hints): Likewise.
      	(expand_assignment): Likewise.
      
      	* fold-const.c (operand_equal_p): Expressions refering to different
      	address spaces are not equivalent.
      
      	* rtl.c (rtx_equal_p_cb): MEMs refering to different address
      	spaces are not equivalent.
      	(rtx_equal_p): Likewise.
      	* cse.c (exp_equiv_p): Likewise.
      	* jump.c (rtx_renumbered_equal_p): Likewise.
      	* reload.c (operands_match_p): Likewise.
      
      	* alias.c (nonoverlapping_memrefs_p): MEMs refering to different
      	address spaces may alias.
      	(true_dependence): Likewise.
      	(canon_true_dependence): Likewise.
      	(write_dependence_p): Likewise.
      
      	* dse.c (canon_address): Handle named address spaces.
      	* ifcvt.c (noce_try_cmove_arith): Likewise.
      
      	* tree.def (ADDR_SPACE_CONVERT_EXPR): New tree code.
      	* expr.c (expand_expr_real_2): Expand ADDR_SPACE_CONVERT_EXPR.
      	* convert.c (convert_to_pointer): Generate ADDR_SPACE_CONVERT_EXPR
      	to handle conversions between different address spaces.
      	* fold-const.c (fold_convert_loc): Likewise.
      	(fold_unary_loc): Handle ADDR_SPACE_CONVERT_EXPR.
      	* tree-pretty-print.c (dump_generic_node): Likewise.
      	* gimple-pretty-print.c (dump_unary_rhs): Likewise.
      	* tree-cfg.c (verify_gimple_assign_unary): Likewise.
      	* tree-inline.c (estimate_operator_cost): Likewise.
      	* tree-ssa.c (useless_type_conversion_p): Conversions between pointers
      	to different address spaces are not useless.
      
      Co-Authored-By: Michael Meissner <meissner@linux.vnet.ibm.com>
      Co-Authored-By: Ulrich Weigand <uweigand@de.ibm.com>
      
      From-SVN: r153572
      Ben Elliston committed
  36. 22 Sep, 2009 1 commit
    • re PR target/41246 (should "sorry" when regparm=3 and nested functions are encountered) · 531ca746
      	PR target/41246
      	* target.h (struct gcc_target): Add asm_out.trampoline_template,
      	calls.static_chain, calls.trampoline_init,
      	calls.trampoline_adjust_address.
      	* target-def.h (TARGET_ASM_TRAMPOLINE_TEMPLATE): New.
      	(TARGET_STATIC_CHAIN, TARGET_TRAMPOLINE_INIT): New.
      	(TARGET_TRAMPOLINE_ADJUST_ADDRESS): New.
      	* builtins.c (expand_builtin_setjmp_receiver): Use
      	targetm.calls.static_chain; only clobber registers.
      	(expand_builtin_init_trampoline): Use targetm.calls.trampoline_init;
      	set up memory attributes properly for the trampoline block.
      	(expand_builtin_adjust_trampoline): Use
      	targetm.calls.trampoline_adjust_address.
      	* calls.c (prepare_call_address): Add fndecl argument.  Use
      	targetm.calls.static_chain.
      	* df-scan.c (df_need_static_chain_reg): Remove.
      	(df_get_entry_block_def_set): Use targetm.calls.static_chain;
      	consolodate static chain handling.
      	* doc/tm.texi: Document new hooks.
      	* emit-rtl.c (static_chain_rtx, static_chain_incoming_rtx): Remove.
      	(init_emit_regs): Don't initialize them.
      	* expr.h (prepare_call_address): Update decl.
      	* final.c (profile_function): Use targetm.calls.static_chain.
      	* function.c (expand_function_start): Likewise.
      	* rtl.h (static_chain_rtx, static_chain_incoming_rtx): Remove.
      	* stmt.c (expand_nl_goto_receiver): Use targetm.calls.static_chain;
      	only clobber registers.
      	* targhooks.c (default_static_chain): New.
      	(default_asm_trampoline_template, default_trampoline_init): New.
      	(default_trampoline_adjust_address): New.
      	* targhooks.h: Declare them.
      	* varasm.c (assemble_trampoline_template): Use
      	targetm.asm_out.trampoline_template.  Make the memory block const
      	and set its size.
      
      From-SVN: r151983
      Richard Henderson committed
  37. 13 Sep, 2009 1 commit
    • langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define. · f9417da1
      2009-09-13  Richard Guenther  <rguenther@suse.de>
      	Rafael Avila de Espindola  <espindola@google.com>
      
      	* langhooks-def.h (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
      	(LANG_HOOKS_EH_PERSONALITY): Likewise.
      	(LANG_HOOKS_INITIALIZER): Adjust.
      	(lhd_pass_through_t): Declare.
      	* langhooks.h (struct lang_hooks): Add eh_runtime_type and
      	eh_personality.
      	* langhooks.c (lhd_pass_through_t): New function.
      
              * dwarf2out.c (output_call_frame_info, dwarf2out_do_cfi_startproc,
      	dwarf2out_begin_prologue): Use personality from current_function_decl.
              * expr.h (get_personality_function): Declare.
      	* expr.c (get_personality_function): New function.
      	(build_personality_function): Likewise.
              * libfuncs.h (libfunc_index): Remove LTI_eh_personality.
              (eh_personality_libfunc): Remove.
              * optabs.c (build_libfunc_function): New function split out from ...
      	(init_one_libfunc): ... here.
              * tree.h (DECL_FUNCTION_PERSONALITY): New.
              (tree_function_decl): Add personality.
      	(lhd_gcc_personality): Declare.
      	(build_personality_function): Likewise.
      	* tree.c (gcc_eh_personality_decl): New.
      	(lhd_gcc_personality): New function.
      	* except.h (lang_eh_runtime_type): Remove.
      	(enum eh_personality_kind): New.
      	(build_personality_function): Declare.
      	(function_needs_eh_personality): Declare.
              * except.c (lang_eh_runtime_type): Remove.
      	(function_needs_eh_personality): New function.
      	(add_type_for_runtime): Call lang_hooks.type_for_runtime instead.
              (sjlj_emit_function_enter, output_function_exception_table):
              Use personality from current_function_decl.
      	* tree-eh.c (lower_eh_constructs): Set DECL_FUNCTION_PERSONALITY.
      	* tree-inline.c (tree_can_inline_p): Do not inline across different
      	EH personalities.
      	(expand_call_inline): Likewise.  Adjust the callers EH personality.
      	(tree_function_versioning): Copy DECL_FUNCTION_PERSONALITY.
      	* cgraph.c (cgraph_add_new_function): Set DECL_FUNCTION_PERSONALITY.
      	* Makefile.in (cgraph.o): Add $(EXCEPT_H) dependency.
      	(c-parser.o): Likewise
      
      	* c-tree.h (c_eh_initialized_p): Remove.
      	(c_maybe_initialize_eh): Likewise.
      	* c-decl.c (finish_decl): Don't call c_maybe_initialize_eh.
      	(finish_decl): Don't call c_maybe_initialize_eh.
      	(c_eh_initialized_p): Remove.
      	(c_maybe_initialize_eh): Likewise.
              * c-parser.c (c_parser_omp_construct): Likewise.
      	(c_parse_file): Initialize exception handling.
      
      	objc/
      	* objc-act.c (objc_eh_runtime_type): Export.
      	(objc_init_exceptions): Remove.  Move warning code ...
      	(objc_begin_try_stmt): ... here
      	(objc_build_throw_stmt): ... and here.
      	(objc_eh_personality_decl): New.
      	(objc_eh_personality): New function.
      	* objc-act.h (objc_eh_runtime_type): Declare.
      	(objc_eh_personality): Likewise.
      	* objc-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
      	(LANG_HOOKS_EH_PERSONALITY): Likewise.
      
      	cp/
      	* except.c (init_exception_processing): Do not set
      	lang_eh_runtime_type.
      	(choose_personality_routine): Do not set eh_personality_decl,
      	set pragma_java_exceptions.
      	* cp-lang.c (LANG_HOOKS_EH_RUNTIME_TYPE): Define.
      	(LANG_HOOKS_EH_PERSONALITY): Likewise.
      	(cp_eh_personality_decl): New.
      	(cp_eh_personality): Likewise.
      	* Make-lang.in (cp-lang.o): Add $(EXPR_H) and $(EXCEPT_H)
      	dependencies.
      
      	java/
      	* decl.c (do_nothing): Remove.
      	(java_init_decl_processing): Do not set lang_eh_runtime_type.
      	* Make-lang.in (lang.o): Add $(EXCEPT_H) dependency.
      	* lang.c (java_eh_personality): New.
      	(java_eh_personality_decl): Likewise.
      	(LANG_HOOKS_EH_PERSONALITY): Define.
      
      	ada/
      	* gcc-interface/misc.c (gnat_init_gcc_eh): Do not set
      	lang_eh_runtime_type.
      	(LANG_HOOKS_EH_PERSONALITY): Define.
      	(gnat_eh_personality_decl): New.
      	(gnat_eh_personality): Likewise.
      	* Make-lang.in (misc.o): Add gt-ada-misc.h dependency.
      	* config-lang.in (gtfiles): Add misc.c.
      
      	fortran/
      	* f95-lang.c (gfc_maybe_initialize_eh): Do not init
      	eh_personality_libfunc.
      
      Co-Authored-By: Rafael Avila de Espindola <espindola@google.com>
      
      From-SVN: r151676
      Richard Guenther committed
  38. 02 Sep, 2009 1 commit
    • expr.h (emit_storent_insn, [...]): Declare. · 28ed065e
      	* expr.h (emit_storent_insn, expand_expr_real_1,
      	expand_expr_real_2): Declare.
      	* expr.c (emit_storent_insn, expand_expr_real_1,
      	expand_expr_real_2): Export.
      	(store_expr): Setting and evaluating dont_return_target is
      	useless.
      	(expand_expr_real_1, <case GOTO_EXPR, RETURN_EXPR, SWITCH_EXPR,
      	LABEL_EXPR and ASM_EXPR>): Move to gcc_unreachable.
      	* except.c (expand_resx_expr): Rename to ...
      	(expand_resx_stmt): ... this.  Rewrite to take gimple statement.
      	* except.h (expand_resx_stmt): Declare.
      	* stmt.c: Add include gimple.h
      	(expand_asm_expr): Rename to ...
      	(expand_asm_stmt): ... this. Rewrite to take gimple statement.
      	(expand_case): Rewrite to take gimple statement.
      	* tree.h (expand_asm_stmt): Declare.
      	(expand_case): Change prototype.
      	* Makefile.in (stmt.o): Depend on gimple.h.
      	* builtins.c (expand_builtin_synchronize): Build gimple asm
      	statement, not an ASM_EXPR.
      	* cfgexpand.c (gimple_cond_pred_to_tree, set_expr_location_r,
      	gimple_to_tree, release_stmt_tree): Remove.
      	(expand_gimple_cond): Don't call gimple_cond_pred_to_tree or
      	ggc_free, but hold comparison code and operands separately.
      	Call jumpif_1 and jumpifnot_1 instead of jumpif and jumpifnot.
      	(expand_call_stmt, expand_gimple_stmt_1,
      	expand_gimple_stmt): New helpers.
      	(expand_gimple_tailcall): Don't call gimple_to_tree, expand_expr_stmt,
      	release_stmt_tree.  Call expand_gimple_stmt instead.
      	(expand_gimple_basic_block): Ditto.
      
      	* calls.c (emit_call_1): Don't look at EH regions here, make
      	fntree parameter useless.
      	(expand_call): New local rettype for TREE_TYPE(exp), use it
      	throughout.  Remove local p, use addr instead.
      	Don't look at EH regions here.
      
      From-SVN: r151350
      Michael Matz committed