1. 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
  2. 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
  3. 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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 13 Dec, 2009 1 commit
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. 25 Aug, 2009 2 commits
    • expr.h (jumpifnot_1, [...]): Declare. · 4df62c77
              * expr.h (jumpifnot_1, jumpif_1, do_jump_1): Declare.
              * dojump.c (do_jump_by_parts_greater): Take two operands instead of
              full expression.
              (do_jump_by_parts_equality, do_compare_and_jump): Ditto.
              (jumpifnot_1, jumpif_1): New wrappers for do_jump_1.
              (do_jump): Split out code for simple binary comparisons into ...
              (do_jump_1): ... this, taking the individual operands and code.
              Change callers to helper function above accordingly.
              * expr.c (expand_expr_real_1): Use jumpifnot_1 for simple binary
              comparisons.
      
      From-SVN: r151080
      Michael Matz committed
    • expr.h (struct separate_ops, sepops): New type for passing around an exploded simple expression. · 8e7aa1f9
              * expr.h (struct separate_ops, sepops): New type for passing
              around an exploded simple expression.
              * optabs.c (expand_widen_pattern_expr, expand_vec_shift_expr):
              Use this structure instead of expression tree.
              (get_vcond_icode, expand_vec_cond_expr_p): Don't take whole
              expression, only its type.
              (expand_vec_cond_expr): Take type and individual operands instead
              of full expression.
              * optabs.h (expand_widen_pattern_expr, expand_vec_cond_expr,
              expand_vec_shift_expr): Change prototype accordingly.
              * tree-vect-stmts.c (vectorizable_condition): Change call of
              expand_vec_cond_expr_p to pass only type.
              * expr.c (do_store_flags): Change prototype and implementation
              to take an exploded expression.
              (expand_expr_real_1): New local ops initialized with details
              of the full expression.  Use it instead of full
              expression in calls to do_store_flags, expand_vec_cond_expr,
              expand_widen_pattern_expr and expand_vec_shift_expr.
      
      From-SVN: r151079
      Michael Matz committed
  18. 06 Aug, 2009 1 commit
  19. 01 Aug, 2009 1 commit
    • expr.c (store_constructor): Use promote_decl_mode. · cde0f3fd
      2009-04-17  Paolo Bonzini  <bonzini@gnu.org>
      
      	* expr.c (store_constructor): Use promote_decl_mode.  Remove
      	now write-only variable unsignedp.
      	(expand_expr_real_1): Use promote_decl_mode.
      	* expr.h (promote_function_mode, promote_decl_mode): New.
      	(promote_mode): Remove last argument.
      	* function.c (assign_temp): Drop last argument of promote_mode.
      	(assign_parm_find_data_types): Use promote_function_mode.
      	(assign_parm_setup_reg): Likewise.
      	(expand_function_end): Use promote_function_mode.
      	* calls.c (initialize_argument_information): Use promote_function_mode.
      	(precompute_arguments): Use promote_mode instead of checking if
      	only PROMOTE_FUNCTION_MODE is defined.
      	(expand_call): When making sibcall decisions, use promote_function_mode.
      	Below, remove an if for targetm.calls.promote_function_return and
      	and use promote_function_mode.
      	(emit_library_call_value_1): Use promote_function_mode, fix bug
      	where promote_mode was passed FOR_CALL == 0 for a return value in an
      	assertion.
      	* cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
      	* explow.c (promote_function_mode, promote_decl_mode): New.
      	(promote_mode): Keep only the FOR_CALL == 0 case.
      	* combine.c (setup_incoming_promotion): Remove test of
      	promote_function_args.  Use promote_function_mode.
      	* stmt.c (expand_value_return): Use promote_decl_mode.
      	(expand_decl): Use promote_decl_mode.
      
      	* expr.c (store_constructor): Use promote_decl_mode.  Remove
      	now write-only variable unsignedp.
      	(expand_expr_real_1): Use promote_decl_mode.
      	* expr.h (promote_function_mode, promote_decl_mode): New.
      	(promote_mode): Remove last argument.
      	* function.c (assign_temp): Drop last argument of promote_mode.
      	(assign_parm_find_data_types): Use promote_function_mode.
      	(assign_parm_setup_reg): Likewise.
      	(expand_function_end): Use promote_function_mode.
      	* calls.c (initialize_argument_information): Use promote_function_mode.
      	(precompute_arguments): Use promote_mode instead of checking if
      	only PROMOTE_FUNCTION_MODE is defined.
      	(expand_call): When making sibcall decisions, use promote_function_mode.
      	Below, remove an if for targetm.calls.promote_function_return and
      	and use promote_function_mode.
      	(emit_library_call_value_1): Use promote_function_mode, fix bug
      	where promote_mode was passed FOR_CALL == 0 for a return value in an
      	assertion.
      	* cfgexpand.c (expand_one_register_var): Use promote_decl_mode.
      	* explow.c (promote_function_mode, promote_decl_mode): New.
      	(promote_mode): Keep only the FOR_CALL == 0 case.
      	* combine.c (setup_incoming_promotion): Remove test of
      	promote_function_args.  Use promote_function_mode.
      	* stmt.c (expand_value_return): Use promote_decl_mode.
      	(expand_decl): Use promote_decl_mode.
      
      	* explow.c (promote_function_mode): Just call the target hook.
      	* targhooks.c (default_promote_function_mode,
      	default_promote_function_mode_always_promote): New.
      	* targhooks.h (default_promote_function_mode,
      	default_promote_function_mode_always_promote): Declare.
      	* target.h (promote_function_args, promote_function_return): Remove.
      	(promote_function_mode): New.
      	* target-def.h (TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      	(TARGET_PROMOTE_FUNCTION_MODE): New.
      	(TARGET_CALLS): Adjust.
      	* system.h (TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN, PROMOTE_FUNCTION_MODE): Poison.
      
      	* config/s390/s390.h (PROMOTE_FUNCTION_MODE): Move...
      	* config/s390/s390.c (s390_promote_function_mode): ... here,
      	with pointer handling.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      
      	* config/sparc/sparc.h (PROMOTE_FUNCTION_MODE): Move...
      	* config/sparc/sparc.c (sparc_promote_function_mode): ... here,
      	with pointer handling.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      	
      	* config/sh/sh-protos.h (sh_promote_function_mode): New.
      	* config/sh/sh.c (sh_promote_function_mode): New.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      
      	* config/cris/cris.h (PROMOTE_FUNCTION_MODE): Move...
      	* config/cris/cris.c (cris_promote_function_mode): ... here.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_ARGS): Remove.
      
      	* config/mmix/mmix.h (PROMOTE_FUNCTION_MODE): Move...
      	* config/mmix/mmix.c (mmix_promote_function_mode): ... here.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_ARGS): Remove.
      
      	* config/arm/arm.h (PROMOTE_FUNCTION_MODE): Move...
      	* config/arm/arm.c (arm_promote_function_mode): ... here, without complex
      	type handling.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_ARGS, TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      
      	* config/pa/pa.c (pa_promote_function_mode): New.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define.
      	(TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      
      	* config/alpha/alpha.c (TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN): Remove.
      	(TARGET_PROMOTE_FUNCTION_MODE): Define equivalently.
      	* config/xtensa/xtensa.c: Likewise.
      	* config/stormy16/stormy16.c: Likewise.
      	* config/iq2000/iq2000.c: Likewise.
      	* config/rs6000/rs6000.c: Likewise.
      	* config/picochip/picochip.c: Likewise.
      	* config/arc/arc.c: Likewise.
      	* config/mcore/mcore.c: Likewise.
      	* config/score/score.c: Likewise.
      	* config/mips/mips.c: Likewise.
      	* config/bfin/bfin.c: Likewise.
      	* config/ia64/ia64.c: Likewise (disabled though).
      
      	* config/frv/frv.h: Remove pointless remark.
      
      	* doc/tm.texi (PROMOTE_FUNCTION_MODE,
      	TARGET_PROMOTE_FUNCTION_ARGS,
      	TARGET_PROMOTE_FUNCTION_RETURN): Consolidate into...
      	(TARGET_PROMOTE_FUNCTION_MODE): ... this.
      
      From-SVN: r150336
      Paolo Bonzini committed
  20. 28 Jun, 2009 1 commit
    • builtins.c (expand_errno_check): Use do_compare_rtx_and_jump. · 337e5d98
      2009-06-28  Paolo Bonzini  <bonzini@gnu.org>
      
              * builtins.c (expand_errno_check): Use do_compare_rtx_and_jump.
              * dojump.c (do_jump): Change handling of floating-point
              ops to use just do_compare_and_jump.
              (split_comparison): New.
              (do_compare_rtx_and_jump): Add here logic coming previously
              in do_jump, using split_comparison.
      
      From-SVN: r149031
      Paolo Bonzini committed
  21. 12 May, 2009 1 commit
  22. 25 Apr, 2009 1 commit
    • target.h (struct gcc_target): Add case_values_threshold field. · e6ff3083
      	* target.h (struct gcc_target): Add case_values_threshold field.
      	* target-def.h (TARGET_CASE_VALUES_THRESHOLD): New.
      	(TARGET_INITIALIZER): Use TARGET_CASE_VALUES_THRESHOLD.
      	* targhooks.c (default_case_values_threshold): New function.
      	* targhooks.h (default_case_values_threshold): Declare function.
      	* stmt.c (expand_case): Use case_values_threshold target hook.
      	* expr.h (case_values_threshold): Remove declartation.
      	* expr.c (case_values_threshold): Remove function.
      	* doc/tm.texi (CASE_VALUES_THRESHOLD): Revise documentation.
      
      	* config/avr/avr.h (CASE_VALUES_THRESHOLD): Remove macro.
      	* config/avr/avr.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
      	(avr_case_values_threshold): Declare as static.
      	* config/avr/avr-protos.h (avr_case_values_threshold): Remove.
      
      	* config/avr/mn10300.h (CASE_VALUES_THRESHOLD): Remove macro.
      	* config/avr/mn10300.c (TARGET_CASE_VALUES_THRESHOLD): Define macro.
      	(mn10300_case_values_threshold): New function.
      
      From-SVN: r146756
      Anatoly Sokolov committed
  23. 27 Mar, 2009 1 commit
    • re PR target/39323 (MAX_OFILE_ALIGNMENT in elfos.h is too big) · d9223014
      gcc/
      
      2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR c/39323
      	* c-common.c (handle_aligned_attribute): Properly check alignment
      	overflow.  Use (1U << i) instead of (1 << i).
      
      	* emit-rtl.c (get_mem_align_offset): Use "unsigned int" for
      	align.
      
      	* expr.h (get_mem_align_offset): Updated.
      
      	* tree.h (tree_decl_common): Change align to "unsigned int" and
      	move it before pointer_alias_set.
      
      gcc/ada/
      
      2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR c/39323
      	* gcc-interface/utils.c (create_field_decl): Use "unsigned int"
      	on bit_align.
      
      gcc/testsuite/
      
      2009-03-27  H.J. Lu  <hongjiu.lu@intel.com>
      
      	PR c/39323
      	* gcc.dg/pr39323-1.c: New.
      	* gcc.dg/pr39323-2.c: Likewise.
      	* gcc.dg/pr39323-3.c: Likewise.
      
      From-SVN: r145136
      H.J. Lu committed
  24. 17 Mar, 2009 1 commit
  25. 20 Feb, 2009 1 commit
  26. 24 Dec, 2008 1 commit
  27. 22 Dec, 2008 2 commits
    • re PR middle-end/31150 (Not promoting an whole array to be static const) · 8dd5516b
      	PR middle-end/31150
      	* dse.c (struct store_info): Add const_rhs field.
      	(clear_rhs_from_active_local_stores): Clear also const_rhs.
      	(record_store): Try also cselib_expand_value_rtx to get a constant.
      	(find_shift_sequence, get_stored_val): Use const_rhs instead of
      	rhs if worthwhile.
      	* cselib.c (cselib_record_sets): If !cselib_record_memory and
      	there is just one set from read-only MEM, look at REG_EQUAL or
      	REG_EQUIV note.
      
      	* dse.c (struct store_info): Add redundant_reason field.
      	(record_store): When storing the same constant as has been
      	stored by an earlier store, set redundant_reason field
      	to the earlier store's insn_info_t.  Don't delete cannot_delete
      	insns.
      	(find_shift_sequence): Remove read_info argument, add read_mode
      	and require_cst arguments.  Return early if require_cst and
      	constant wouldn't be returned.
      	(get_stored_val): New function.
      	(replace_read): Use it.
      	(scan_insn): Put even cannot_delete insns with exactly 1 store
      	into active_local_stores.
      	(dse_step1): Don't delete cannot_delete insns.  Remove redundant
      	constant stores if contains_cselib_groups and earlier store storing
      	the same value hasn't been eliminated.
      	(dse_step6): Renamed to dse_step7.  New function.
      	(dse_step7): Renamed from dse_step6.
      	(rest_of_handle_dse): Call dse_step6 and dse_step7 at the end.
      	* cselib.c (cselib_expand_value_rtx): Don't wrap CONST_INTs
      	into CONST unless really necessary.  Handle SUBREG, unary,
      	ternary, bitfield and compares specially, to be able to simplify
      	operations on constants.
      	(expand_loc): Try to optimize LO_SUM.
      
      	* dse.c (get_call_args): New function.
      	(scan_insn): Don't handle BUILT_IN_BZERO.  For memset, attempt
      	to get call arguments and if successful and both len and val are
      	constants, handle the call as (mem:BLK) (const_int) store.
      
      	* dse.c (struct store_info): Add is_large bool field, change
      	positions_needed into a union of a bitmask and bitmap + count.
      	(free_store_info): Free bitmap if is_large.
      	(set_usage_bits): Don't look at stores where
      	offset + width >= MAX_OFFSET.
      	(set_position_unneeded, set_all_positions_unneeded,
      	any_positions_needed_p, all_positions_needed_p): New static inline
      	functions.
      	(record_store): Handle BLKmode stores of CONST_INT, if
      	MEM_SIZE is set on the MEM.  Use the new positions_needed
      	accessor inlines.
      	(replace_read): Handle reads from BLKmode CONST_INT stores.
      	(check_mem_read_rtx): Use all_positions_needed_p function.
      	(dse_step1): Free large positions_needed bitmaps and clear is_large.
      
      	* dse.c (struct store_info): Change begin and end types to
      	HOST_WIDE_INT.
      
      	* dse.c (record_store): Fix check for unused store.
      
      	* expr.c (block_clear_fn): No longer static.
      	* expr.h (block_clear_fn): Declare.
      	* dse.c (scan_insn): Memset and bzero can just read their
      	arguments.
      
      	* gcc.c-torture/execute/20081218-1.c: New test.
      
      From-SVN: r142892
      Jakub Jelinek committed
    • re PR target/38488 (x86_64 generates much larger and slightly slower code for memset) · 805903b5
      	* config/i386/i386.c (expand_setmem_via_rep_stos): Add ORIG_VALUE
      	argument.  If ORIG_VALUE is const0_rtx and COUNT is constant,
      	set MEM_SIZE on DESTMEM.
      	(ix86_expand_setmem): Adjust callers.
      
      	PR target/38488
      	* expr.h (get_mem_align_offset): New prototype.
      	* emit-rtl.c (get_mem_align_offset): New function.
      	* config/i386/i386.c (expand_movmem_via_rep_mov): Set MEM_SIZE correctly.
      	(expand_constant_movmem_prologue, expand_constant_setmem_prologue):
      	New functions.
      	(ix86_expand_movmem): Optimize if COUNT_EXP
      	is constant, desired_align > align and dst & (desired_align - 1)
      	is computable at compile time.
      	(ix86_expand_setmem): Likewise.
      
      	* builtins.c (get_memory_rtx): Try to derive MEM_ATTRS from not yet
      	resolved SAVE_EXPR or POINTER_PLUS_EXPR.
      
      From-SVN: r142891
      Jakub Jelinek committed
  28. 01 Sep, 2008 1 commit
    • expr.c (MOVE_BY_PIECES_P, [...]): Pass speed operand. · e04ad03d
      	* expr.c (MOVE_BY_PIECES_P, CLEAR_BY_PIECES_P, SET_BY_PIECES_P): Pass speed operand.
      	* expr.h (MOVE_RATIO, CLEAR_RATIO, SET_RATIO): Update.
      	* gimplify.c (gimplify_init_constructor): Add speed operand.
      	* tree-sra.c (decide_block_copy): Likewise.
      	* tree-inline.c (estimate_move_cost): Likewise.
      	* config/alpha/alpha.h (MOVE_RATIO): Update.
      	* config/frv/frv.c (MOVE_RATIO): Update.
      	* config/spu/spu.h (MOVE_RATIO): Update.
      	* config/sparc/sparc.h (MOVE_RATIO): Update.
      	* config/i386/i386.h (MOVE_RATIO, CLEAR_RATIO): Update.
      	* config/m68hc11/m68hc11.h (MOVE_RATIO): Update.
      	* config/cris/cris.h (MOVE_RATIO): Update.
      	* config/mn10300/mn10300.h (MOVE_RATIO): Update.
      	* config/arm/arm.h (MOVE_RATIO): Update.
      	* config/pa/pa.md: Update uses of MOVE_RATIO
      	* config/pa/pa.h (MOVE_RATIO): Update.
      	* config/mips/mips.h (MOVE_RATIO, MOVE_BY_PIECES, CLEAR_RATIO, SET_RATIO): Update.
      	* config/h8300/h8300.h (MOVE_RATIO): Update.
      	* config/v850/v850.h (MOVE_RATIO): Update.
      	* config/bfin/bfin.h (MOVE_RATIO): Update.
      
      From-SVN: r139855
      Jan Hubicka committed
  29. 30 Aug, 2008 1 commit
    • optabs.c (expand_abs_nojump): Update BRANCH_COST call. · 3a4fd356
      	* optabs.c (expand_abs_nojump): Update BRANCH_COST call.
      	* fold-cost.c (LOGICAL_OP_NON_SHORT_CIRCUIT, fold_truthop): Likewise.
      	* dojump.c (do_jump): Likewise.
      	* ifcvt.c (MAX_CONDITIONAL_EXECUTE): Likewise.
      	(note-if_info): Add BRANCH_COST.
      	(noce_try_store_flag_constants, noce_try_addcc, noce_try_store_flag_mask,
      	noce_try_cmove_arith, noce_try_cmove_arith, noce_try_cmove_arith,
      	noce_find_if_block, find_if_case_1, find_if_case_2): Use compuated
      	branch cost.
      	* expr.h (BRANCH_COST): Update default.
      	* predict.c (predictable_edge_p): New function.
      	* expmed.c (expand_smod_pow2, expand_sdiv_pow2, emit_store_flag):
      	Update BRANCH_COST call.
      	* basic-block.h (predictable_edge_p): Declare.
      	* config/alpha/alpha.h (BRANCH_COST): Update.
      	* config/frv/frv.h (BRANCH_COST): Update.
      	* config/s390/s390.h (BRANCH_COST): Update.
      	* config/spu/spu.h (BRANCH_COST): Update.
      	* config/sparc/sparc.h (BRANCH_COST): Update.
      	* config/m32r/m32r.h (BRANCH_COST): Update.
      	* config/i386/i386.h (BRANCH_COST): Update.
      	* config/i386/i386.c (ix86_expand_int_movcc): Update use of BRANCH_COST.
      	* config/sh/sh.h (BRANCH_COST): Update.
      	* config/pdp11/pdp11.h (BRANCH_COST): Update.
      	* config/avr/avr.h (BRANCH_COST): Update.
      	* config/crx/crx.h (BRANCH_COST): Update.
      	* config/xtensa/xtensa.h (BRANCH_COST): Update.
      	* config/stormy16/stormy16.h (BRANCH_COST): Update.
      	* config/m68hc11/m68hc11.h (BRANCH_COST): Update.
      	* config/iq2000/iq2000.h (BRANCH_COST): Update.
      	* config/ia64/ia64.h (BRANCH_COST): Update.
      	* config/rs6000/rs6000.h (BRANCH_COST): Update.
      	* config/arc/arc.h (BRANCH_COST): Update.
      	* config/score/score.h (BRANCH_COST): Update.
      	* config/arm/arm.h (BRANCH_COST): Update.
      	* config/pa/pa.h (BRANCH_COST): Update.
      	* config/mips/mips.h (BRANCH_COST): Update.
      	* config/vax/vax.h (BRANCH_COST): Update.
      	* config/h8300/h8300.h (BRANCH_COST): Update.
      	* params.def (PARAM_PREDICTABLE_BRANCH_OUTCOME): New.
      	* doc/invoke.texi (predictable-branch-cost-outcome): Document.
      	* doc/tm.texi (BRANCH_COST): Update.
      
      From-SVN: r139804
      Jan Hubicka committed
  30. 16 Aug, 2008 1 commit
    • re PR middle-end/20548 (ACATS c52103x c52104x c52104y segfault) · b38f3813
      	PR ada/20548
      	* common.opt (-fstack-check): Do not declare the variable here.
      	(-fstack-check=): New option variant.
      	* doc/invoke.texi (Code Gen Options): Document it.
      	* expr.h (STACK_OLD_CHECK_PROTECT): New macro.
      	(STACK_CHECK_PROTECT): Bump to 3 pages if DWARF-2 EH is used.
      	(STACK_CHECK_STATIC_BUILTIN): New macro.
      	* doc/tm.texi (Stack Checking): Document STACK_CHECK_STATIC_BUILTIN.
      	* opts.c: Include expr.h.
      	(common_handle_option) <OPT_fold_stack_check_>: New case.
      	<OPT_fstack_check>: Likewise.
      	* calls.c (initialize_argument_information): Use TYPE_SIZE_UNIT
      	consistently in the test for variable-sized types.  Adjust for
      	new behaviour of flag_stack_check.
      	* explow.c: Include except.h.
      	(allocate_dynamic_stack_space): Do not take into account
      	STACK_CHECK_MAX_FRAME_SIZE for static builtin stack checking.
      	* function.c (gimplify_parameters): Use DECL_SIZE_UNIT in the test
      	for variable-sized parameters.  Treat all parameters whose size is
      	greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized if generic
      	stack checking is enabled.
      	* gimplify.c (gimplify_decl_expr): Treat non-static objects whose
      	size is greater than STACK_CHECK_MAX_VAR_SIZE as variable-sized
      	if generic stack checking is enabled.
      	(expand_function_end): Adjust for new behaviour of flag_stack_check.
      	* reload1.c (reload): Likewise.
      	* stmt.c (expand_decl): Assert that all automatic variables have
      	fixed size at this point and remove dead code.
      	* flags.h (stack_check_type): New enumeration type.
      	(flag_stack_check): Declare.
      	* toplev.c (flag_stack_check): New global variable.
      	* Makefile.in (opts.o): Add dependency on EXPR_H.
      	(explow.o): Add dependency on except.h.
      ada/
      	* gcc-interface/decl.c (gnat_to_gnu_entity): Use DECL_SIZE_UNIT in the
      	setjmp test consistently.  Adjust for new behaviour of flag_stack_check.
      	* gcc-interface/utils2.c (build_call_alloc_dealloc): Remove redundant
      	test of flag_stack_check.  Adjust for new behaviour of flag_stack_check.
      
      From-SVN: r139159
      Eric Botcazou committed
  31. 06 Jul, 2008 1 commit
    • config.gcc (extra_headers): Add cross-stdarg.h for target x86_64-*-* and i?86-*-*. · 35cbb299
      2008-07-06  Kai Tietz  <kai.tietz@onevision.com>
      
      	* config.gcc (extra_headers): Add cross-stdarg.h for target
      	x86_64-*-* and i?86-*-*.
      	* config/i386/cross-stdarg.h: New.
      	* builtins.c (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	(stabilize_va_list): Replace va_list_type_node use by
      	mtarget.canonical_va_list_type.
      	(gimplify_va_arg_expr): Likewise.
      	(expand_builtin_va_copy): Replace va_list_type_node use by
      	mtarget.fn_abi_va_list.
      	* tree-sra.c (is_va_list_type): New helper.
      	(decl_can_be_decomposed_p): Replace
      	va_list_type_node use by is_va_list_type.
      	* tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
      	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
      	* c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
      	* config/i386/i386-protos.h (ix86_get_valist_type): New.
      	(ix86_enum_va_list): New.
      	* config/i386/i386.c (sysv_va_list_type_node): New.
      	(ms_va_list_type_node): New.
      	(ix86_function_type_abi): Remove sorry.
      	(ix86_build_builtin_va_list_abi): New.
      	(ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
      	for 64-bit targets.
      	(ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
      	(ix86_init_builtins_va_builtins_abi): New.
      	(ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
      	for 64-bit targets.
      	(ix86_handle_abi_attribute): New.
      	(attribute_spec): Add sysv_abi and ms_abi.
      	(ix86_fn_abi_va_list): New.
      	(ix86_canonical_va_list_type): New.
      	(ix86_enum_va_list): New.
      	(TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	* config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
      	* doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_ENUM_VA_LIST): New.
      	* expr.h (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	* target-def.h (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
      	TARGET_CANONICAL_VA_LIST_TYPE.
      	* target.h (struct gcc_target): Add fn_abi_va_list hook
      	and canonical_va_list_type hook.
      
      From-SVN: r137525
      Kai Tietz committed
  32. 04 Jul, 2008 2 commits
    • Revert 137452. · 1d79e31d
      From-SVN: r137457
      Kai Tietz committed
    • config.gcc (extra_headers): Add cross-stdarg.h for target x86_64-*-* and i?86-*-*. · 0b4b69ef
      2008-07-04  Kai Tietz  <kai.tietz@onevision.com>
      
      	* config.gcc (extra_headers): Add cross-stdarg.h for target
      	x86_64-*-* and i?86-*-*.
      	* config/i386/cross-stdarg.h: New.
      	* builtins.c (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	(stabilize_va_list): Replace va_list_type_node use by
      	mtarget.canonical_va_list_type.
      	(gimplify_va_arg_expr): Likewise.
      	(expand_builtin_va_copy): Replace va_list_type_node use by
      	mtarget.fn_abi_va_list.
      	* tree-sra.c (is_va_list_type): New helper.
      	(decl_can_be_decomposed_p): Replace
      	va_list_type_node use by is_va_list_type.
      	* tree-ssa-ccp.c (optimize_stdarg_builtin): Likewise.
      	* tree-stdarg.c (execute_optimize_stdarg): Likewise.
      	* c-common.c (c_common_nodes_and_builtins): Use TARGET_ENUM_VA_LIST.
      	* config/i386/i386-protos.h (ix86_get_valist_type): New.
      	(ix86_enum_va_list): New.
      	* config/i386/i386.c (sysv_va_list_type_node): New.
      	(ms_va_list_type_node): New.
      	(ix86_function_type_abi): Remove sorry.
      	(ix86_build_builtin_va_list_abi): New.
      	(ix86_build_builtin_va_list): Call ix86_build_builtin_va_list_abi
      	for 64-bit targets.
      	(ix86_va_start): Replace va_list_type_node by sysv_va_list_type_node.
      	(ix86_init_builtins_va_builtins_abi): New.
      	(ix86_init_builtins): Use ix86_init_builtins_va_builtins_abi
      	for 64-bit targets.
      	(ix86_handle_abi_attribute): New.
      	(attribute_spec): Add sysv_abi and ms_abi.
      	(ix86_fn_abi_va_list): New.
      	(ix86_canonical_va_list_type): New.
      	(ix86_enum_va_list): New.
      	(TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	* config/i386/i386.h (TARGET_ENUM_VA_LIST): New.
      	* doc/tm.texi (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_ENUM_VA_LIST): New.
      	* expr.h (std_fn_abi_va_list): New.
      	(std_canonical_va_list_type): New.
      	* target-def.h (TARGET_FN_ABI_VA_LIST): New.
      	(TARGET_CANONICAL_VA_LIST_TYPE): New.
      	(TARGET_INITIALIZER): Add TARGET_FN_ABI_VA_LIST and
      	TARGET_CANONICAL_VA_LIST_TYPE.
      	* target.h (struct gcc_target): Add fn_abi_va_list hook
      	and canonical_va_list_type hook.
      
      2008-07-04  Kai Tietz  <kai.tietz@onevision.com>
      
      	* gcc.dg/callabi/callabi.h: New.
      	* gcc.dg/callabi/vaarg-1.c: New.
      	* gcc.dg/callabi/vaarg-2.c: New.
      	* gcc.dg/callabi/vaarg-3.c: New.
      	* gcc.dg/callabi/func-1.c: New.
      
      From-SVN: r137452
      Kai Tietz committed
  33. 03 Apr, 2008 1 commit
  34. 02 Apr, 2008 1 commit
    • expr.c (expand_var): Delete it. · 4846b435
      2008-04-02  Paolo Bonzini  <bonzini@gnu.org>
      
      	* expr.c (expand_var): Delete it.
      	* expr.h (expand_var): Delete prototype.
      	* function.c (expand_function_start): Use expand_decl instead.
      	* cfgexpand.c (expand_one_static_var, expand_one_var): Don't call
      	langhook.
      
      From-SVN: r133830
      Paolo Bonzini committed
  35. 22 Mar, 2008 1 commit
    • re PR rtl-optimization/33927 (replace_read in dse.c could handle cases where… · 18b526e8
      re PR rtl-optimization/33927 (replace_read in dse.c could handle cases where GET_MODE_CLASS (read_mode) != GET_MODE_CLASS (store_mode) (and the size is the same))
      
      gcc/
      	PR rtl-optimization/33927
      	* Makefile.in (dse.o): Depend on $(TM_P_H).
      	* expr.h (extract_low_bits): Declare.
      	* expmed.c (extract_low_bits): New function.
      	* rtlhooks.c (gen_lowpart_general): Generalize SUBREG handling.
      	* dse.c: Include tm_p.h.
      	(find_shift_sequence): Remove the read_reg argument and return the
      	read value.  Emit the instructions instead of returning them.
      	Iterate on new_mode rather than calculating it each time.
      	Check MODES_TIEABLE_P.  Use simplify_gen_subreg to convert the
      	source to NEW_MODE and extract_low_bits to convert the shifted
      	value to READ_MODE.
      	(replace_read): Allow the load and store to have different mode
      	classes.  Use extract_low_bits when SHIFT == 0.  Create the shift
      	or extraction instructions before trying the replacement.  Update
      	dump-file code accordingly, avoiding use of REGNO (store_info->rhs).
      
      gcc/testsuite/
      	* gcc.target/mips/dse-1.c: Add checks for zeros.
      
      From-SVN: r133452
      Richard Sandiford committed
  36. 03 Dec, 2007 1 commit
    • re PR middle-end/33713 (can't find a register in class 'GENERAL_REGS' while reloading 'asm') · 3de5e93a
              PR33713
              * doc/invoke.texi: Remove -fforce-addr documentation.
              * expr.c (emit_move_insn): Remove use of flag_force_addr.
              (expand_expr_real_1): Same.
              (do_tablejump): Same.
              Call memory_address instead of memory_address_noforce.
              * expr.h (memory_address_noforce): Remove prototype.
              * explow.c (memory_address): Remove support for flag_force_addr.
              (validize_mem): Same.
              (memory_address_noforce): Remove.
              * common.opt: Add dummy documentation for -fforce-addr.
              * combine.c (can_combine_p): Remove -fforce-addr comment.
              * config/cris/cris.h (OPTIMIZATION_OPTIONS): Remove set of
              flag_force_addr.
              * config/m68k/m68k.h (PIC_CASE_VECTOR_ADDRESS): Remove comment
              relating to memory_address_noforce.
              * testsuite/gcc.c-torture/compile/20050802-1.c: Remove.
              * testsuite/gcc.c-torture/compile/20011113-1.c: Remove.
      
      From-SVN: r130591
      Steven Bosscher committed
  37. 27 Aug, 2007 1 commit
    • Separate target-specific initialization from general back-end initialization. · b5deb7b6
      2007-08-27  Sandra Loosemore  <sandra@codesourcery.com>
      	    David Ung  <davidu@mips.com>
                  Nigel Stephens <nigel@mips.com>
      
      	gcc/
      	Separate target-specific initialization from general
      	back-end initialization.
      
      	* toplev.c (init_alignments): New, split out from...
      	(process_options): ...here.
      	(backend_init_target):  New, split out from...
      	(backend_init): ...here.
      	(lang_dependent_init_target):  New, split out from...
      	(lang_dependent_init): ...here.
      	(target_reinit): New.
      	* toplev.h (target_reinit): Declare.
      	* expr.c (init_expr_target): Renamed from init_expr_once, since it
      	now can be called more than once.  Update comments.
      	* expr.h (init_expr_target): Likewise.
      	* alias.c (init_alias_target): Renamed from init_alias_once, since it
      	now can be called more than once.  Explicitly zero
      	static_reg_base_value.
      	* emit-rtl.c (init_emit_regs): New, split out from...
      	(init_emit_once): Here.
      	* regclass.c (initial_fixed_regs, initial_call_used_regs): Make
      	non-const, so that changes from command-line arguments can overwrite
      	values provided by the static initializers.
      	(initial_call_really_used_regs): New, used similarly to the above.
      	(initial_reg_names): Likewise.
      	(last_mode_for_init_move_cost): Promoted function-local static to
      	file-scope static to make it accessible outside init_move_cost.
      	(init_reg_sets): Do not initialize fixed_regs and call_used_regs yet.
      	Do not initialize inv_reg_alloc_order yet, either.  Do initialize
      	reg_names since it is needed for parsing command-line options.
      	(init_move_cost): Use last_mode_for_init_move_cost instead of
      	function-local static.
      	(init_reg_sets_1): Initialize fixed_regs, call_used_regs, and
      	call_really_used_regs now.  Reinitialize reg_names.  Also
      	initialize inv_reg_alloc_order.  Zero reg_class_subunion and
      	reg_class_superunion.  Clear losing_caller_save_reg_set.
      	Preserve global registers if called more than once.  Reset
      	move cost, may_move_in_cost, may_move_out_cost, and
      	last_mode_for_init_move_cost.
      	(init_reg_modes_target): Renamed from init_reg_modes_once, since it
      	can now be invoked more than once.  Update comments.
      	(init_regs): Update comments.
      	(fix_register): Update initial_fixed_regs, initial_call_used_regs,
      	and initial_call_really_used_regs, instead of the non-initial 
              variables.  This allows us to save the command-line register settings
      	after target reinitialization.
      	(init_reg_autoinc): Zero forbidden_inc_dec_classes.
      	* rtl.h (init_emit_regs): Declare.
      	(init_reg_modes_target, init_alias_target): Renamed as described
      	above.
      	* reload1.c (init_reload): Update comments.
      	* optabs.c (init_optabs): Likewise.
      	* cfgloopanal.c (init_set_costs): Explicitly zero target_avail_regs.
      	
      
      
      Co-Authored-By: David Ung <davidu@mips.com>
      Co-Authored-By: Nigel Stephens <nigel@mips.com>
      
      From-SVN: r127832
      Sandra Loosemore committed