Commit Graph

980 Commits

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

From-SVN: r138809
2008-08-06 15:57:09 +00:00
H.J. Lu
e94a448f66 re PR middle-end/37009 (No need to align stack when incoming stack is aligned)
gcc/

2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/37009
	* cfgexpand.c (expand_stack_alignment): Check parm_stack_boundary
	for incoming stack boundary.

	* function.c (assign_parm_find_entry_rtl): Update
	parm_stack_boundary.

	* function.h (rtl_data): Add parm_stack_boundary.

	* config/i386/i386.c (ix86_finalize_stack_realign_flags): Check
	parm_stack_boundary for incoming stack boundary.

gcc/testsuite/

2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/37009
	* gcc.dg/torture/stackalign/alloca-2.c: New.
	* gcc.dg/torture/stackalign/alloca-3.c: Likewise.
	* gcc.dg/torture/stackalign/alloca-4.c: Likewise.
	* gcc.dg/torture/stackalign/vararg-3.c: Likewise.
	* gcc.target/i386/incoming-1.c: Likewise.
	* gcc.target/i386/incoming-2.c: Likewise.
	* gcc.target/i386/incoming-3.c: Likewise.
	* gcc.target/i386/incoming-4.c: Likewise.
	* gcc.target/i386/incoming-5.c: Likewise.

From-SVN: r138806
2008-08-06 08:29:37 -07:00
H.J. Lu
d015f7cc65 cfgexpand.c (expand_stack_alignment): Assert that stack_realign_drap and drap_rtx must match.
2008-08-01  H.J. Lu  <hongjiu.lu@intel.com>

	* cfgexpand.c (expand_stack_alignment): Assert that
	stack_realign_drap and drap_rtx must match.

	* function.c (instantiate_new_reg): If DRAP is used to realign
	stack, replace virtual_incoming_args_rtx with internal arg
	pointer.

From-SVN: r138524
2008-08-01 09:05:50 -07:00
H.J. Lu
2e3f842fe6 [multiple changes]
2008-07-30  Joey Ye  <joey.ye@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	* builtins.c (expand_builtin_setjmp_receiver): Replace
	virtual_incoming_args_rtx with crtl->args.internal_arg_pointer.
	(expand_builtin_apply_args_1): Likewise.
	(expand_builtin_longjmp): Need DRAP for stack alignment.
	(expand_builtin_apply): Likewise.

	* caller-save.c (setup_save_areas): Call assign_stack_local_1
	instead of assign_stack_local to allow alignment reduction.

	* calls.c (emit_call_1): Need DRAP for stack alignment if
	return pops.
	(expand_call): Replace virtual_incoming_args_rtx with
	crtl->args.internal_arg_pointer.
	* stmt.c (expand_nl_goto_receiver): Likewise.

	* cfgexpand.c (get_decl_align_unit): Estimate stack variable
	alignment and store to stack_alignment_estimated and
	max_used_stack_slot_alignment.
	(expand_one_var): Likewise.
	(expand_stack_alignment): New function.
	(tree_expand_cfg): Initialize max_used_stack_slot_alignment
	and stack_alignment_estimated fields in rtl_data.  Call
	expand_stack_alignment at end.

	* defaults.h (INCOMING_STACK_BOUNDARY): New.
	(MAX_STACK_ALIGNMENT): Likewise.
	(MAX_SUPPORTED_STACK_ALIGNMENT): Likewise.
	(SUPPORTS_STACK_ALIGNMENT): Likewise.

	* emit-rtl.c (gen_reg_rtx): Estimate stack alignment for
	stack alignment when generating virtual registers.

	* function.c (assign_stack_local): Renamed to ...
	(assign_stack_local_1): This.  Add a parameter to indicate
	if it is OK to reduce alignment.
	(assign_stack_local): Use it.
	(instantiate_new_reg): Instantiate virtual incoming args rtx
	to vDRAP if stack realignment and DRAP is needed.
	(assign_parms): Collect parameter/return type alignment and
	contribute to stack_alignment_estimated.
	(locate_and_pad_parm): Likewise.
	(get_arg_pointer_save_area): Replace virtual_incoming_args_rtx
	with crtl->args.internal_arg_pointer.

	* function.h (rtl_data): Add new field drap_reg,
	max_used_stack_slot_alignment, stack_alignment_estimated,
	stack_realign_needed, need_drap, stack_realign_processed and
	stack_realign_finalized.
	(stack_realign_fp): New macro.
	(stack_realign_drap): Likewise.

	* global.c (compute_regsets): Frame pointer is needed when
	stack is realigned.  Can eliminate frame pointer when stack is
	realigned and dynamic realigned argument pointer isn't used.

	* reload1.c (update_eliminables):  Frame pointer is needed
	when stack is realigned.
	(init_elim_table): Can eliminate frame pointer when stack is
	realigned and dynamic realigned argument pointer isn't used.

	* rtl.h (assign_stack_local_1): Declare new funtion.

	* target-def.h (TARGET_UPDATE_STACK_BOUNDARY): New.
	(TARGET_GET_DRAP_RTX): Likewise.
	(TARGET_CALLS): Add TARGET_UPDATE_STACK_BOUNDARY and
	TARGET_GET_DRAP_RTX.

	* target.h (gcc_target): Add update_stack_boundary and
	get_drap_rtx.

	* tree-vectorizer.c (vect_can_force_dr_alignment_p): Replace
	STACK_BOUNDARY with MAX_STACK_ALIGNMENT.

2008-07-30  Xuepeng Guo  <xuepeng.guo@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	* dwarf2out.c (dw_fde_struct): Add stack_realignment, drap_reg,
	vdrap_reg, stack_realign and drap_reg_saved.
	(add_cfi): Don't allow redefining CFA when DRAP is used.
	(reg_save): Handle stack alignment.
	(dwarf2out_frame_debug_expr): Add rules 16-20 to handle stack
	alignment.  Don't generate DWARF information for (set fp sp)
	when DRAP is used.
	(dwarf2out_begin_prologue): Initialize drap_reg and vdrap_reg
	to INVALID_REGNUM.
	(int_loc_descriptor): Move prototype forward.  Also define if
	DWARF2_UNWIND_INFO is true.
	(output_cfa_loc): Handle DW_CFA_expression.
	(build_cfa_aligned_loc): New.
	(based_loc_descr): Update assert for stack realign.  For local
	variables, use sp+offset when stack is aligned without drap and
	fp+offset when stack is aligned with drap.  For arguments, use
	cfa+offset when drap is used to align stack.

2008-07-30  Joey Ye  <joey.ye@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c (ix86_force_align_arg_pointer_string):
	Break long line.
	(ix86_gen_andsp): New.
	(ix86_user_incoming_stack_boundary): Likewise.
	(ix86_default_incoming_stack_boundary): Likewise.
	(ix86_incoming_stack_boundary): Likewise.
	(ix86_can_eliminate): Likewise.
	(find_drap_reg): Likewise.
	(ix86_update_stack_boundary): Likewise.
	(ix86_get_drap_rtx): Likewise.
	(ix86_finalize_stack_realign_flags): Likewise.
	(TARGET_UPDATE_STACK_BOUNDARY): Likewise.
	(TARGET_GET_DRAP_RTX): Likewise.
	(override_options): Overide option value for new options.
	(ix86_function_ok_for_sibcall): Remove check for
	force_align_arg_pointer.
	(ix86_handle_cconv_attribute): Likewise.
	(ix86_function_regparm): Likewise.
	(setup_incoming_varargs_64): Don't set stack_alignment_needed
	here.
	(ix86_va_start): Replace virtual_incoming_args_rtx with
	crtl->args.internal_arg_pointer.
	(ix86_select_alt_pic_regnum): Check DRAP register.
	(ix86_save_reg): Replace force_align_arg_pointer with drap_reg.
	(ix86_compute_frame_layout): Compute frame layout wrt stack
	realignment.
	(ix86_internal_arg_pointer): Just return
	virtual_incoming_args_rtx.
	(ix86_expand_prologue): Decide if stack realignment is needed
	and generate prologue code accordingly.
	(ix86_expand_epilogue): Generate epilogue code wrt stack
	realignment is really needed or not.
	
	* config/i386/i386.h (MAIN_STACK_BOUNDARY): New.
	(ABI_STACK_BOUNDARY): Likewise.
	(PREFERRED_STACK_BOUNDARY_DEFAULT): Likewise.
	(STACK_REALIGN_DEFAULT): Likewise.
	(INCOMING_STACK_BOUNDARY): Likewise.
	(MAX_STACK_ALIGNMENT): Likewise.
	(ix86_incoming_stack_boundary): Likewise.
	(FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN): Removed.
	(REAL_PIC_OFFSET_TABLE_REGNUM): Updated to use BX_REG.
	(CAN_ELIMINATE): Defined with ix86_can_eliminate.
	(machine_function): Remove force_align_arg_pointer.

	* config/i386/i386.md (BX_REG): New.
	(R13_REG): Likewise.

	* config/i386/i386.opt (mforce_drap): New.
	(mincoming-stack-boundary): Likewise.
	(mstackrealign): Add Init(-1).

	* config/i386/i386-protos.h (ix86_can_eliminate): New

2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>

	* doc/extend.texi: Update force_align_arg_pointer.

	* doc/invoke.texi: Document -mincoming-stack-boundary.  Update
	-mstackrealign.

	* doc/tm.texi (MAX_STACK_ALIGNMENT): Add macro.
	(INCOMING_STACK_BOUNDARY): Likewise.
	(TARGET_UPDATE_STACK_BOUNDARY): New target hook.
	(TARGET_GET_DRAP_RTX): Likewise.

From-SVN: r138335
2008-07-30 12:20:43 -07:00
Jan Hubicka
bf08ebebc7 predict.c (always_optimize_for_size_p): New function.
* predict.c (always_optimize_for_size_p): New function.
	(optimize_bb_for_size_p, optimize_bb_for_speed_p,
	optimize_edge_for_size_p, optimize_edge_for_speed_p,
	optimize_insn_for_size_p, optimize_insn_for_speed_p): New global
	functions.
	(rtl_profile_for_bb, rtl_profile_for_edge, rtl_default_profile): New.
	* function.c (prepare_function_start): Set default profile.
	* function.h (rtl_data): Add maybe_hot_insn_p.
	* cfgexpand.c (expand_gimple_basic_block): Set RTL profile.
	(construct_exit_block): Likewise.
	(tree_expand_cfg): Likewise.
	* basic-block.h
	(optimize_bb_for_size_p, optimize_bb_for_speed_p,
	optimize_edge_for_size_p, optimize_edge_for_speed_p,
	optimize_insn_for_size_p, optimize_insn_for_speed_p): Declare.
	(rtl_profile_for_bb, rtl_profile_for_edge, default_rtl_profile):
	Declare.

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

	Merge from gimple-tuples-branch.

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

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

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

From-SVN: r138207
2008-07-28 14:33:56 +00:00
Michael Meissner
ab442df7fb Add ability to set target options (ix86 only) and optimization options on a function specific basis
From-SVN: r138075
2008-07-23 10:28:06 +00:00
Rafael Avila de Espindola
aa14403d28 Makefile.in: Replace toplev.h with TOPLEV_H.
2007-07-21  Rafael Avila de Espindola  <espindola@google.com>

	* Makefile.in: Replace toplev.h with TOPLEV_H.
	* c-decl.c (merge_decls): Don't set DECL_IN_SYSTEM_HEADER.
	* c-lex.c (fe_file_change): Don't set in_system_header.
	* c-parser.c (c_token): Remove in_system_header.
	(c_lex_one_token): Don't set in_system_header.
	(c_parser_set_source_position_from_token): Don't set in_system_header.
	* diagnostic.c (diagnostic_report_diagnostic): Use location from
	diagnostic_info.
	(warning_at): New.
	* diagnostic.h (diagnostic_report_warnings_p): Add LOC argument.
	* flags.h (in_system_header): Remove.
	* function.c (saved_in_system_header): Remove.
	(push_cfun): Don't set in_system_header.
	(pop_cfun): Don't set in_system_header.
	(push_struct_function): Don't set in_system_header.
	* input.h (expanded_location): Add sysp.
	(in_system_header_at): New.
	(in_system_header): New.
	* toplev.c (in_system_header): Remove.
	* toplev.h: Include input.h
	(warning_at): New.
	* tree-cfg.c (execute_warn_function_return): Call warning_at.
	* tree-ssa.c (warn_uninit): Call warning_at.
	(warn_uninitialized_var): Update calls to warn_uninit.
	(warn_uninitialized_phi): Update calls to warn_uninit.
	* tree.c (make_node_stat): Don't set DECL_IN_SYSTEM_HEADER.
	(expand_location): Initialize xloc.sysp.
	* tree.h (DECL_IN_SYSTEM_HEADER): Use in_system_header_at.
	(tree_decl_with_vis): Remove in_system_header_flag.

2007-07-21  Rafael Avila de Espindola  <espindola@google.com>

	* parser.c (cp_token): Remove in_system_header.
	(eof_token): Remove in_system_header.
	(cp_lexer_get_preprocessor_token): Don't set in_system_header.
	(cp_lexer_set_source_position_from_token): Don't set in_system_header.
	(cp_parser_member_declaration):  Use in_system_header_at.
	* pt.c (lookup_template_class): Don't set DECL_IN_SYSTEM_HEADER.
	(pop_tinst_level): Don't set in_system_header.
	(instantiate_class_template): Don't set in_system_header.
	(instantiate_decl): Don't set in_system_header.
	(instantiate_pending_templates): Don't set in_system_header.

From-SVN: r138031
2008-07-21 14:29:27 +00:00
H.J. Lu
5ae53a2559 re PR middle-end/36858 (Incorrect alignment attribute on stack parameter)
gcc/

2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/36858
	* function.c (locate_and_pad_parm): Cap boundary earlier.

testsuite/

2008-07-18  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/36858
	* gcc.target/i386/vararg-1.c: New.

From-SVN: r137954
2008-07-18 08:42:59 -07:00
Daniel Jacobowitz
85776d6097 function.c (assign_parm_remove_parallels): Check mode of entry_parm.
* function.c (assign_parm_remove_parallels): Check mode of
	entry_parm.
	(assign_parm_setup_block_p): Also check mode of entry_parm.

From-SVN: r137575
2008-07-07 16:05:11 +00:00
Daniel Jacobowitz
4d2a9850cf function.c (assign_parm_remove_parallels): New.
* function.c (assign_parm_remove_parallels): New.
	(assign_parm_setup_block_p): Do not return true for non-BLKmode
	PARALLELs.
	(assign_parm_setup_block): Do not handle them.
	(assign_parm_setup_reg, assign_parm_setup_stack): Call
	assign_parm_remove_parallels.

From-SVN: r137326
2008-07-01 20:49:40 +00:00
Richard Sandiford
70cf5bc1f1 function.c (allocate_struct_function): Only allocate a unique funcdef_no if the decl is nonzero.
gcc/
	* function.c (allocate_struct_function): Only allocate a unique
	funcdef_no if the decl is nonzero.

From-SVN: r137195
2008-06-27 17:26:14 +00:00
Kaveh R. Ghazi
1b4572a81d dwarf2out.c (new_cfi, [...]): Fix -Wc++-compat and/or -Wcast-qual warnings.
* dwarf2out.c (new_cfi, queue_reg_save, dwarf2out_begin_prologue,
	dwarf2out_frame_init, new_loc_descr, new_die, lookup_decl_die,
	lookup_decl_loc, add_var_loc_to_decl, compute_section_prefix,
	assign_symbol_names, htab_cu_hash, htab_cu_eq, htab_cu_del,
	build_abbrev_table, new_loc_list, output_comp_unit, add_arange,
	add_ranges_num, add_ranges_by_labels, file_info_cmp,
	file_name_acquire, output_file_names, add_const_value_attribute,
	premark_used_types_helper, file_table_eq, file_table_hash,
	lookup_filename, dwarf2out_var_location, dwarf2out_source_line,
	dwarf2out_init, file_table_relative_p): Fix -Wc++-compat and/or
	-Wcast-qual warnings.
	* ebitmap.c (ebitmap_array_grow, ebitmap_array_init,
	ebitmap_alloc, ebitmap_ior, ebitmap_and_compl): Likewise.
	* emit-rtl.c (get_mem_attrs, get_reg_attrs, gen_rtvec,
	gen_reg_rtx, start_sequence, init_emit): Likewise.
	* et-forest.c (et_new_occ, et_new_tree): Likewise.
	* except.c (init_eh_for_function, gen_eh_region,
	remove_unreachable_regions, add_ehl_entry, duplicate_eh_regions_1,
	arh_to_landing_pad, arh_to_label, add_action_record,
	add_call_site, switch_to_exception_section): Likewise.
	* expmed.c (synth_mult): Likewise.
	* expr.c (gen_group_rtx, emit_group_load, emit_group_store,
	store_expr): Likewise.
	* final.c (shorten_branches, final_scan_insn, debug_queue_symbol):
	Likewise.
	* function.c (assign_stack_temp_for_type,
	allocate_struct_function, match_asm_constraints_1): Likewise.
	* gcov-io.c (gcov_allocate): Likewise.
	* gcse.c (GNEW, GCNEW, GNEWVEC, GCNEWVEC, GRESIZEVEC, GNEWVAR,
	GCNEWVAR, GRESIZEVAR, GOBNEW, GOBNEWVAR): New.
	(gcse_main, alloc_gcse_mem, alloc_gcse_mem, alloc_reg_set_mem,
	record_one_set, insert_expr_in_table, insert_set_in_table,
	dump_hash_table, compute_hash_table_work, alloc_hash_table,
	pre_ldst_expr_hash, pre_ldst_expr_eq, find_rtx_in_ldst,
	reg_set_info, reg_clear_last_set): Fix -Wc++-compat and/or
	-Wcast-qual warnings.

From-SVN: r137136
2008-06-26 00:25:08 +00:00
Ralf Wildenhues
fa10beec52 cgraph.c: Fix typos in comments.
gcc/
	* cgraph.c: Fix typos in comments.
	(cgraph_availability_names): Fix string typo.
	* fold-const.c: Fix typos in comments.
	(fold_binary): Fix typo in warning.
	* genautomata.c: Fix typos in comments.
	(check_presence_pattern_sets): Fix typo in local variable.
	(output_description): Fix typo in output.
	* ggc-zone.c (ggc_pch_finish): Fix typo in error message.
	* hwint.h: Likewise.
	* matrix-reorg.c (check_allocation_function): Likewise.
	* omega.c (smooth_weird_equations): Likewise.
	* auto-inc-dec.c: Fix typos in comments.
	* bb-reorder.c: Likewise.
	* builtins.c: Likewise.
	* c-common.c: Likewise.
	* c-cppbuiltin.c: Likewise.
	* c-parser.c: Likewise.
	* c-pretty-print.c: Likewise.
	* cfgcleanup.c: Likewise.
	* cfgexpand.c: Likewise.
	* cfghooks.c: Likewise.
	* cfglayout.c: Likewise.
	* cfgloopmanip.c: Likewise.
	* cgraphunit.c: Likewise.
	* coverage.c: Likewise.
	* dbxout.c: Likewise.
	* df-byte-scan.c: Likewise.
	* df-core.c: Likewise.
	* df-problems.c: Likewise.
	* df-scan.c: Likewise.
	* dfp.c: Likewise.
	* dominance.c: Likewise.
	* domwalk.c: Likewise.
	* dse.c: Likewise.
	* dwarf2out.c: Likewise.
	* emit-rtl.c: Likewise.
	* et-forest.c: Likewise.
	* function.c: Likewise.
	* function.h: Likewise.
	* gcc.c: Likewise.
	* gcov-io.c: Likewise.
	* gcov.c: Likewise.
	* gcse.c: Likewise.
	* genattrtab.c: Likewise.
	* ggc-page.c: Likewise.
	* gimplify.c: Likewise.
	* gthr-lynx.h: Likewise.
	* haifa-sched.c: Likewise.
	* ipa-cp.c: Likewise.
	* ipa-inline.c: Likewise.
	* ipa-prop.h: Likewise.
	* ipa-pure-const.c: Likewise.
	* ipa-struct-reorg.c: Likewise.
	* ipa-struct-reorg.h: Likewise.
	* ipa-type-escape.c: Likewise.
	* ipa.c: Likewise.
	* loop-doloop.c: Likewise.
	* mips-tfile.c: Likewise.
	* mkmap-flat.awk: Likewise.
	* mkmap-symver.awk: Likewise.
	* modulo-sched.c: Likewise.
	* omp-low.c: Likewise.
	* optabs.c: Likewise.
	* optabs.h: Likewise.
	* opts.c: Likewise.
	* passes.c: Likewise.
	* postreload-gcse.c: Likewise.
	* postreload.c: Likewise.
	* predict.c: Likewise.
	* pretty-print.h: Likewise.
	* profile.c: Likewise.
	* protoize.c: Likewise.
	* ra-conflict.c: Likewise.
	* real.c: Likewise.
	* recog.c: Likewise.
	* regclass.c: Likewise.
	* regs.h: Likewise.
	* reload.c: Likewise.
	* rtl-error.c: Likewise.
	* rtlanal.c: Likewise.
	* scan.h: Likewise.
	* sched-rgn.c: Likewise.
	* see.c: Likewise.
	* stmt.c: Likewise.
	* target.h: Likewise.
	* tree-dfa.c: Likewise.
	* tree-eh.c: Likewise.
	* tree-flow-inline.h: Likewise.
	* tree-inline.c: Likewise.
	* tree-into-ssa.c: Likewise.
	* tree-loop-distribution.c: Likewise.
	* tree-nested.c: Likewise.
	* tree-parloops.c: Likewise.
	* tree-pass.h: Likewise.
	* tree-pretty-print.c: Likewise.
	* tree-profile.c: Likewise.
	* tree-scalar-evolution.c: Likewise.
	* tree-sra.c: Likewise.
	* tree-ssa-alias-warnings.c: Likewise.
	* tree-ssa-ccp.c: Likewise.
	* tree-ssa-coalesce.c: Likewise.
	* tree-ssa-dom.c: Likewise.
	* tree-ssa-dse.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-ivopts.c: Likewise.
	* tree-ssa-loop-niter.c: Likewise.
	* tree-ssa-loop-prefetch.c: Likewise.
	* tree-ssa-phiopt.c: Likewise.
	* tree-ssa-phiprop.c: Likewise.
	* tree-ssa-sccvn.c: Likewise.
	* tree-ssa-ter.c: Likewise.
	* tree-ssa-threadupdate.c: Likewise.
	* tree-ssa.c: Likewise.
	* tree-vect-analyze.c: Likewise.
	* tree-vect-transform.c: Likewise.
	* tree-vectorizer.c: Likewise.
	* tree-vn.c: Likewise.
	* tree-vrp.c: Likewise.
	* tree.c: Likewise.
	* tree.def: Likewise.
	* tree.h: Likewise.
	* unwind-dw2-fde.c: Likewise.
	* unwind.inc: Likewise.
	* value-prof.c: Likewise.
	* vmsdbgout.c: Likewise.

From-SVN: r136425
2008-06-06 05:42:00 +00:00
Kai Tietz
7c8009267b tm.texi (OVERRIDE_ABI_FORMAT): New.
2008-06-03  Kai Tietz  <kai.tietz@onevision.com>

	* doc/tm.texi (OVERRIDE_ABI_FORMAT): New.
	* doc/extend.texi (ms_abi,sysv_abi): New attribute description.
	* function.c (allocate_struct_function): Use of
	OVERRIDE_ABI_FORMAT.
	* config/i386/cygming.h (TARGET_64BIT_MS_ABI): Make use
	of cfun and DEFAULT_ABI to deceide abi mode.
	(DEFAULT_ABI): New.
	(REG_PARM_STACK_SPACE): Removed.
	(OUTGOING_REG_PARM_STACK_SPACE): Removed.
	(STACK_BOUNDARY): Use default target to deceide stack boundary.
	* config/i386/i386-protos.h (ix86_cfun_abi): New.
	(ix86_function_abi): Likewise.
	(ix86_function_type_abi): Likewise.
	(ix86_call_abi_override): Likewise.
	* confid/i386/i386.md (SSE_REGPARM_MAX): Replaced by abi
	specific define X86_64_SSE_REGPARM_MAX/X64_SSE_REGPARM_MAX.
	* config/i386/i386.c (override_options): Replace TARGET_64BIT_MS_ABI.
	(X86_64_VARARGS_SIZE): Replace REGPARM_MAX and SSE_REGPARM_MAX by abi
	specific defines.
	(X86_64_REGPARM_MAX): New.
	(X86_64_SSE_REGPARM_MAX): New.
	(X64_REGPARM_MAX): New.
	(X64_SSE_REGPARM_MAX): New.
	(X86_32_REGPARM_MAX): New.
	(X86_32_SSE_REGPARM_MAX): New.
	(ix86_handle_cconv_attribute): Replace TARGET_64BIT_MS_ABI.
	(ix86_function_regparm): Handle user calling abi.
	(ix86_function_arg_regno_p): Replace TARGET_64BIT_MS_ABI
	by DEFAULT_ABI versus SYSV_ABI check.
	(ix86_reg_parm_stack_space): New.
	(ix86_function_type_abi): New.
	(ix86_call_abi_override): New.
	(ix86_function_abi): New.
	(ix86_cfun_abi): New.
	(init_cumulative_args): Call abi specific initialization.
	(function_arg_advance): Remove TARGET_64BIT_MS_ABI.
	(function_arg_64): Extend SSE_REGPARM_MAX check.
	(function_arg (): Remove TARGET_64BIT_MS_ABI.
	(ix86_pass_by_reference): Likewise.
	(ix86_function_value_regno_p): Likewise.
	(function_value_64): Replace REGPARM_MAX, and SSE_REGPARM_MAX.
	(ix86_function_value_1): Replace TARGET_64BIT_MS_ABI.
	(return_in_memory_ms_64): Replace TARGET_64BIT_MS_ABI.
	(ix86_build_builtin_va_list): Replace TARGET_64BIT_MS_ABI.
	(setup_incoming_varargs_64): Adjust regparm for call abi.
	(ix86_setup_incoming_varargs): Replace TARGET_64BIT_MS_ABI.
	(ix86_va_start): Likewise.
	(ix86_gimplify_va_arg): Likewise.
	(ix86_expand_prologue): Likewise.
	(output_pic_addr_const): Likewise.
	(ix86_init_machine_status): Initialize call_abi by DEFAULT_ABI.
	(x86_this_parameter): Replace TARGET_64BIT_MS_ABI.
	(x86_output_mi_thunk): Likewise.
	(x86_function_profiler): Likewise.
	* config/i386/i386.h (TARGET_64BIT_MS_ABI): Use ix64_cfun_abi.
	(SYSV_ABI, MS_ABI): New constants.
	(DEFAULT_ABI): New.
	(init_regs): Add prototype of function in regclass.c file.
	(OVERRIDE_ABI_FORMAT): New.
	(CONDITIONAL_REGISTER_USAGE): Remove TARGET_64BIT_MS_ABI part.
	(REG_PARM_STACK_SPACE): Use ix86_reg_parm_stack_space.
	(OUTGOING_REG_PARM_STACK_SPACE): New.
	(ix86_reg_parm_stack_space): New prototype.
	(CUMULATIVE_ARGS): Add call_abi member.
	(machine_function): Add call_abi member.
	* config/i386/mingw32.h (EXTRA_OS_CPP_BUILTINS): Replace TARGET_64BIT_MS_ABI
	by DEFAULT_ABI compare to MS_ABI.

From-SVN: r136311
2008-06-03 10:05:25 +02:00
Richard Sandiford
c41c1387d3 rtl.h (emit_clobber, [...]): Declare.
gcc/
	* rtl.h (emit_clobber, gen_clobber, emit_use, gen_use): Declare.
	* emit-rtl.c (emit_clobber, gen_clobber, emit_use, gen_use): New
	functions.  Do not emit uses and clobbers of CONCATs; individually
	use and clobber their operands.
	* builtins.c (expand_builtin_setjmp_receiver): Use emit_clobber,
	gen_clobber, emit_use and gen_use.
	(expand_builtin_longjmp, expand_builtin_nonlocal_goto): Likewise.
	(expand_builtin_return): Likewise.
	* cfgbuild.c (count_basic_blocks): Likewise.
	* cfgrtl.c (rtl_flow_call_edges_add): Likewise.
	* explow.c (emit_stack_restore): Likewise.
	* expmed.c (extract_bit_field_1): Likewise.
	* expr.c (convert_move, emit_move_complex_parts): Likewise.
	(emit_move_multi_word, store_constructor): Likewise.
	* function.c (do_clobber_return_reg, do_use_return_reg): Likewise.
	(thread_prologue_and_epilogue_insns): Likewise.
	* lower-subreg.c (resolve_simple_move): Likewise.
	* optabs.c (widen_operand, expand_binop): Likewise.
	(expand_doubleword_bswap, emit_no_conflict_block): Likewise.
	* reload.c (find_reloads): Likewise.
	* reload1.c (eliminate_regs_in_insn): Likewise.
	* stmt.c (expand_nl_goto_receiver): Likewise.
	* config/alpha/alpha.md (builtin_longjmp): Likewise.
	* config/arc/arc.md (*movdi_insn, *movdf_insn): Likewise.
	* config/arm/arm.c (arm_load_pic_register): Likewise.
	(thumb1_expand_epilogue, thumb_set_return_address): Likewise.
	* config/arm/arm.md (untyped_return): Likewise.
	* config/arm/linux-elf.h (PROFILE_HOOK): Likewise.
	* config/avr/avr.c (expand_prologue): Likewise.
	* config/bfin/bfin.c (do_unlink): Likewise.
	* config/bfin/bfin.md (<optab>di3, adddi3, subdi3): Likewise.
	* config/cris/cris.c (cris_expand_prologue): Likewise.
	* config/darwin.c (machopic_indirect_data_reference): Likewise.
	(machopic_legitimize_pic_address): Likewise.
	* config/frv/frv.c (frv_frame_access, frv_expand_epilogue): Likewise.
	(frv_ifcvt_modify_insn, frv_expand_mdpackh_builtin): Likewise.
	* config/i386/i386.c (ix86_expand_vector_move_misalign): Likewise.
	(ix86_expand_convert_uns_didf_sse): Likewise.
	(ix86_expand_vector_init_general): Likewise.
	* config/ia64/ia64.md (eh_epilogue): Likewise.
	* config/iq2000/iq2000.c (iq2000_expand_epilogue): Likewise.
	* config/m32c/m32c.c (m32c_emit_eh_epilogue): Likewise.
	* config/m32r/m32r.c (m32r_reload_lr): Likewise.
	(config/iq2000/iq2000.c): Likewise.
	* config/mips/mips.md (fixuns_truncdfsi2): Likewise.
	(fixuns_truncdfdi2, fixuns_truncsfsi2, fixuns_truncsfdi2): Likewise.
	(builtin_longjmp): Likewise.
	* config/mn10300/mn10300.md (call, call_value): Likewise.
	* config/pa/pa.md (nonlocal_goto, nonlocal_longjmp): Likewise.
	* config/pdp11/pdp11.md (abshi2): Likewise.
	* config/rs6000/rs6000.c (rs6000_emit_move): Likewise.
	* config/s390/s390.c (s390_emit_prologue): Likewise.
	* config/s390/s390.md (movmem_long, setmem_long): Likewise.
	(cmpmem_long, extendsidi2, zero_extendsidi2, udivmoddi4): Likewise.
	(builtin_setjmp_receiver, restore_stack_nonlocal): Likewise.
	* config/sh/sh.c (prepare_move_operands): Likewise.
	(output_stack_adjust, sh_expand_epilogue): Likewise.
	(sh_set_return_address, sh_expand_t_scc): Likewise.
	* config/sparc/sparc.c (load_pic_register): Likewise.
	* config/sparc/sparc.md (untyped_return, nonlocal_goto): Likewise.
	* config/spu/spu.c (spu_expand_epilogue): Likewise.
	* config/v850/v850.c (expand_epilogue): Likewise.

From-SVN: r136251
2008-06-01 09:47:28 +00:00
H.J. Lu
76fe54f07a re PR middle-end/36253 (Caller-save stack slot may not have proper alignment)
2008-05-26  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/36253
	* caller-save.c (insert_restore): Verify alignment of spill
	space.
	(insert_save): Likewise.

	* cfgexpand.c (LOCAL_ALIGNMENT): Removed.

	* defaults.h (LOCAL_ALIGNMENT): New. Provide default.
	(STACK_SLOT_ALIGNMENT): Likewise.

	* function.c (LOCAL_ALIGNMENT): Removed.
	(get_stack_local_alignment): New.
	(assign_stack_local): Use it.  Set alignment on stack slot.
	(assign_stack_temp_for_type): Use get_stack_local_alignment.

	* config/i386/i386.h (LOCAL_ALIGNMENT): Updated.
	(STACK_SLOT_ALIGNMENT): New.

	* config/i386/i386.c (ix86_local_alignment): Handle caller-save
	stack slot in XFmode.

	* doc/tm.texi (STACK_SLOT_ALIGNMENT): New.

From-SVN: r135927
2008-05-26 06:59:56 -07:00
Andy Hutchinson
88280cf9e0 * function.c: Include target hook for nonlocal_goto frame value.
From-SVN: r135850
2008-05-24 17:00:47 +00:00
Paul Brook
007e61c28b extend.texi: Clarify use of __attribute__((naked)).
gcc/

2008-05-23  Paul Brook  <paul@codesourcery.com>
	    Carlos O'Donell  <carlos@codesourcery.com>

	* doc/extend.texi: Clarify use of __attribute__((naked)).
	* doc/tm.texi: Document TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
	* target.h (gcc_target): Add allocate_stack_slots_for_args.
	* function.c (use_register_for_decl): Use
	targetm.calls.allocate_stack_slots_for_args.
	* target-def.h (TARGET_CALLS): Add 
	TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS.
	* config/arm/arm.c (arm_allocate_stack_slots_for_args): 
	New function.
	(TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS): Define.

gcc/testsuite/

2008-05-23  Paul Brook  <paul@codesourcery.com>
	    Carlos O'Donell  <carlos@codesourcery.com>

	* gcc.target/arm/naked-1.c: New test.
	* gcc.target/arm/naked-2.c: New test.


Co-Authored-By: Carlos O'Donell <carlos@codesourcery.com>

From-SVN: r135831
2008-05-23 20:36:57 +00:00
Kai Tietz
81464b2cd8 2008-05-07 Kai Tietz <kai,tietz@onevision.com>
* calls.c (compute_argument_block_size): Add argument tree fndecl.
	(OUTGOING_REG_PARM_STACK_SPACE): Add function type argument.
	(emit_library_call_value_1): Add new variable fndecl initialized by
	NULL_TREE. It should be the decl type of orgfun, but this information
	seems not to be available here, so it uses the default calling abi.
	* config/arm/arm.c (arm_return_in_memory): Add fntype argumen.
	* config/arm/arm.h (RETURN_IN_MEMORY): Replace RETURN_IN_MEMORY
	by TARGET_RETURN_IN_MEMORY.
	* config/i386/i386-interix.h: Likewise.
	* config/i386/i386.h: Likewise.
	* config/i386/i386elf.h: Likewise.
	* config/i386/ptx4-i.h: Likewise.
	* config/i386/sol2-10.h: Likewise.
	* config/i386/sysv4.h: Likewise.
	* config/i386/vx-common.h: Likewise.
	* config/cris/cris.h: Removed #if 0 clause.
	* config/arm/arm-protos.h (arm_return_in_memory): Add fntype
	argument.
	* config/i386/i386-protos.h (ix86_return_in_memory): Add fntype
	argument.
	(ix86_sol10_return_in_memory): Likewise.
	(ix86_i386elf_return_in_memory): New.
	(ix86_i386interix_return_in_memory): New.
	* config/mt/mt-protos.h (mt_return_in_memory): New.
	* config/mt/mt.c: Likewise.
	* config/mt/mt.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
	(RETURN_IN_MEMORY):  Replace by TARGET_RETURN_IN_MEMORY.
	* config/bfin/bfin.h: Likewise.
	* config/bfin/bfin-protos.h (bfin_return_in_memory): Add fntype
	argument.
	* config/bfin/bfin.c: Likewise.
	* config/pa/pa.h (OUTGOING_REG_PARM_STACK_SPACE): Add FNTYPE argument.
	* config/alpha/unicosmk.h: Likewise.
	* config/i386/cygming.h: Likewise.
	* config/iq2000/iq2000.h: Likewise.
	* config/mips/mips.h: Likewise.
	* config/mn10300/mn10300.h: Likewise.
	* config/rs6000/rs6000.h: Likewise.
	* config/score/score.h: Likewise.
	* config/spu/spu.h: Likewise.
	* config/v850/v850.h: Likewise.
	* defaults.h: Likewise.
	* doc/tm.texi (OUTGOING_REG_PARM_STACK_SPACE): Adjust documentation.
	* expr.c (emit_block_move): Adjust use of OUTGOING_REG_PARM_STACK_SPACE.
	* function.c (STACK_DYNAMIC_OFFSET): Adjust use of
	OUTGOING_REG_PARM_STACK_SPACE.
	* targhooks.c (default_return_in_memory): Remove RETURN_IN_MEMORY.

From-SVN: r135069
2008-05-08 09:10:49 +02:00
Jan Hubicka
e3b5732b21 re PR testsuite/35843 (-fdump-rtl-expand does not exist anymore)
PR testsuite/35843
	* cfgexpand.c (pass_expand): Turn into RTL pass.
	* passes.c (execute_one_pass): Do pass typechecking after execution.
	* tree-pass.h (pass_expand): Turn into RTL pass.

	* function.h (struct rtl_data): Move here fields
	accesses_prior_frames, calls_eh_return, saves_all_registers,
	has_nonlocal_goto, has_asm_statement, is_thunk,
	all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
	uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
	arg_pointer_save_area_init from struct function; turn into bool.
	(struct function): Move
	calls_eh_return, saves_all_registers, has_nonlocal_goto,
	has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
	profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
	tail_call_emit, arg_pointer_save_area_init
	into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
	(current_function_returns_struct, current_function_returns_pcc_struct,
	current_function_calls_setjmp, current_function_calls_alloca,
	current_function_accesses_prior_frames,
	current_function_calls_eh_return, current_function_is_thunk,
	current_function_stdarg, current_function_profile,
	current_function_limit_stack, current_function_uses_pic_offset_table,
	current_function_uses_const_pool, current_function_has_nonlocal_label,
	current_function_saves_all_registers,
	current_function_has_nonlocal_goto,
	current_function_has_asm_statement): Remove accesor macros.
	* ra-conflict.c (global_conflicts): Update.
	* tree-tailcall.c (suitable_for_tail_opt_p): Update.
	(suitable_for_tail_call_opt_p): Update.
	* builtins.c (expand_builtin_return_addr): Update.
	(expand_builtin_setjmp_setup): Update.
	(expand_builtin_nonlocal_goto): Update.
	* final.c (final_start_function): Update.
	(profile_function): Update.
	(leaf_function_p): Update.
	(only_leaf_regs_used): Update.
	* df-scan.c (df_get_exit_block_use_set): Update.
	* dojump.c (clear_pending_stack_adjust): Update.
	* tree-stdarg.c (gate_optimize_stdarg): Update.
	* gimple-low.c (lower_function_body): Update.
	* global.c (compute_regsets): Update.
	(global_alloc): Update.
	* dwarf2out.c (dwarf2out_begin_prologue): Update.
	* expr.c (expand_assignment): Update.
	* dse.c (dse_step0): Update.
	(dse_step1): Update.
	* c-decl.c (store_parm_decls): Update.
	* local-alloc.c (combine_regs): Update.
	(find_free_reg): Update.
	* function.c (assign_parms_augmented_arg_list): Update.
	(assign_parm_find_data_types): Update.
	(assign_parms): Update.
	(allocate_struct_function): Update.
	(expand_function_start): Update.
	(expand_function_end): Update.
	(get_arg_pointer_save_area): Update.
	(thread_prologue_and_epilogue_insns): Update.
	(rest_of_match_asm_constraints): Update.
	* stor-layout.c (variable_size): Update.
	* gcse.c (gcse_main): Update.
	(bypass_jumps): Update.
	* gimplify.c (gimplify_function_tree): Update.
	* calls.c (emit_call_1): Update.
	(expand_call): Update.
	* bt-load.c (compute_defs_uses_and_gen): Update.
	* except.c (sjlj_assign_call_site_values): Update.
	(sjlj_emit_function_enter): Update.
	(can_throw_external): Update.
	(set_nothrow_function_flags): Update.
	(expand_builtin_unwind_init): Update.
	(expand_eh_return): Update.
	(convert_to_eh_region_ranges): Update.
	(output_function_exception_table): Update.
	* emit-rtl.c (gen_tmp_stack_mem): Update.
	* cfgexpand.c (expand_used_vars): Update.
	(tree_expand_cfg): Update.
	* cfgcleanup.c (rest_of_handle_jump): Update.
	* explow.c (allocate_dynamic_stack_space): Update.
	* varasm.c (assemble_start_function): Update.
	(force_const_mem): Update.
	(mark_constant_pool): Update.
	* tree-optimize.c (tree_rest_of_compilation): Update.
	* stack-ptr-mod.c (notice_stack_pointer_modification): Update.
	* tree-cfg.c (notice_special_calls): Update.
	(is_ctrl_altering_stmt): Update.
	(tree_can_make_abnormal_goto): Update.
	(tree_purge_dead_abnormal_call_edges): Update.
	* config/alpha/predicates.md: Update.
	* config/alpha/alpha.c (alpha_sa_mask): Update.
	(alpha_sa_size): Update.
	(alpha_does_function_need_gp): Update.
	(alpha_expand_prologue): Update.
	(alpha_start_function): Update.
	(alpha_output_function_end_prologue): Update.
	(alpha_expand_epilogue): Update.
	* config/frv/frv.c (frv_stack_info): Update.
	(frv_expand_epilogue): Update.
	* config/s390/s390.c (s390_regs_ever_clobbered): Update.
	(s390_register_info): Update.
	(s390_frame_info): Update.
	(s390_init_frame_layout): Update.
	(s390_can_eliminate): Update.
	(save_gprs): Update.
	* config/spu/spu.c (spu_split_immediate): Update.
	(need_to_save_reg): Update.
	(spu_expand_prologue): Update.
	(spu_expand_epilogue): Update.
	* config/sparc/sparc.md: Update.
	* config/sparc/sparc.c (eligible_for_return_delay): Update.
	(sparc_tls_got): Update.
	(legitimize_pic_address): Update.
	(sparc_emit_call_insn): Update.
	(sparc_expand_prologue): Update.
	(output_return): Update.
	(print_operand): Update.
	(sparc_function_ok_for_sibcall): Update.
	* config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
	* config/m32r/m32r.md: Update.
	* config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
	(m32r_compute_frame_size): Update.
	(m32r_expand_prologue): Update.
	(m32r_expand_epilogue): Update.
	(m32r_legitimize_pic_address): Update.
	* config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
	* config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
	* config/i386/i386.c (ix86_frame_pointer_required): Update.
	(gen_push): Update.
	(ix86_save_reg): Update.
	(ix86_compute_frame_layout): Update.
	(ix86_expand_prologue): Update.
	(ix86_expand_epilogue): Update.
	* config/sh/sh.c (output_stack_adjust): Update.
	(calc_live_regs): Update.
	(sh5_schedule_saves): Update.
	(sh_expand_prologue): Update.
	(sh_expand_epilogue): Update.
	(sh_setup_incoming_varargs): Update.
	(sh_allocate_initial_value): Update.
	(sh_get_pr_initial_val): Update.
	* config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
	* config/sh/sh.md (label:): Update.
	* config/avr/avr.c (out_movhi_mr_r): Update.
	* config/crx/crx.h (enum): Update.
	* config/xtensa/xtensa.h (along): Update.
	* config/stormy16/stormy16.c Update.
	(xstormy16_compute_stack_layout): Update.
	* config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
	(fr30_expand_prologue): Update.
	* config/cris/cris.c (cris_conditional_register_usage): Update.
	(cris_reg_saved_in_regsave_area): Update.
	(cris_initial_frame_pointer_offset): Update.
	(cris_simple_epilogue): Update.
	(cris_expand_prologue): Update.
	(cris_expand_epilogue): Update.
	(cris_expand_pic_call_address): Update.
	(cris_asm_output_symbol_ref): Update.
	(cris_asm_output_label_ref): Update.
	* config/cris/cris.md Update.
	* config/iq2000/iq2000.c (compute_frame_size): Update.
	(iq2000_expand_epilogue): Update.
	* config/mt/mt.h (save_direction): Update.
	* config/mn10300/mn10300.c (mn10300_function_value): Update.
	* config/ia64/ia64.c (ia64_compute_frame_size): Update.
	(ia64_secondary_reload_class): Update.
	* config/m68k/m68k.c (m68k_save_reg): Update.
	(m68k_expand_prologue): Update.
	(m68k_expand_epilogue): Update.
	(legitimize_pic_address): Update.
	* config/rs6000/rs6000.c (rs6000_got_register): Update.
	(first_reg_to_save): Update.
	(first_altivec_reg_to_save): Update.
	(compute_vrsave_mask): Update.
	(compute_save_world_info): Update.
	(rs6000_stack_info): Update.
	(spe_func_has_64bit_regs_p): Update.
	(rs6000_ra_ever_killed): Update.
	(rs6000_emit_eh_reg_restore): Update.
	(rs6000_emit_allocate_stack): Update.
	(rs6000_emit_prologue): Update.
	(rs6000_emit_epilogue): Update.
	(rs6000_output_function_epilogue): Update.
	(output_profile_hook): Update.
	(rs6000_elf_declare_function_name): Update.
	* config/rs6000/rs6000.h (rs6000_args): Update.
	* config/rs6000/rs6000.md: Update.
	* config/mcore/mcore.c (mcore_expand_prolog): Update.
	* config/arc/arc.c (arc_output_function_epilogue): Update.
	* config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
	* config/darwin.c (machopic_function_base_name): Update.
	* config/score/score3.c (score3_compute_frame_size): Update.
	(rpush): Update.
	(rpop): Update.
	(score3_epilogue): Update.
	* config/score/score7.c (score7_compute_frame_size): Update.
	(score7_prologue): Update.
	(score7_epilogue): Update.
	* config/score/score.h (FRAME_POINTER_REQUIRED): Update.
	* config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
	* config/arm/arm.c (use_return_insn): Update.
	(require_pic_register): Update.
	(arm_load_pic_register): Update.
	(arm_compute_save_reg0_reg12_mask): Update.
	(arm_compute_save_reg_mask): Update.
	(thumb1_compute_save_reg_mask): Update.
	(output_return_instruction): Update.
	(arm_output_function_prologue): Update.
	(arm_output_epilogue): Update.
	(arm_get_frame_offsets): Update.
	(arm_expand_prologue): Update.
	(thumb_pushpop): Update.
	(thumb_exit): Update.
	(thumb1_expand_prologue): Update.
	(thumb1_expand_epilogue): Update.
	(arm_unwind_emit): Update.
	(arm_output_fn_unwind): Update.
	* config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
	* config/arm/arm.md: Update.
	* config/pa/pa.md: Update.
	* config/pa/pa.c (legitimize_pic_address): Update.
	(compute_frame_size): Update.
	(hppa_expand_prologue): Update.
	(hppa_expand_epilogue): Update.
	(borx_reg_operand): Update.
	* config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
	(HARD_REGNO_RENAME_OK): Update.
	* config/mips/mips.c (mips_global_pointer): Update.
	(mips_save_reg_p): Update.
	(mips_compute_frame_info): Update.
	(mips_frame_pointer_required): Update.
	(mips_expand_prologue): Update.
	(mips_expand_epilogue): Update.
	(mips_can_use_return_insn): Update.
	(mips_reorg_process_insns): Update.
	* config/v850/v850.c (compute_register_save_size): Update.
	* config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
	* config/mmix/mmix.c (along): Update.
	(mmix_expand_epilogue): Update.
	* config/bfin/bfin.c (legitimize_pic_address): Update.
	(must_save_p): Update.
	(stack_frame_needed_p): Update.
	(add_to_reg): Update.
	(bfin_expand_prologue): Update.
	* stmt.c (expand_asm_operands): Update.
	* reload1.c (reload): Update.
	(init_elim_table): Update.

From-SVN: r134682
2008-04-25 23:14:40 +00:00
Jan Hubicka
cb91fab00f except.c (dw2_size_of_call_site_table, [...]): Use vector API for call_site_record.
* except.c (dw2_size_of_call_site_table,
	sjlj_size_of_call_site_table): Use vector API for call_site_record.

	* cgraphbuild.c (build_cgraph_edges): Update.
	* tree-pass.h: Update comment.
	* final.c (leaf_function_p): Update.
	(leaf_renumber_regs): Update.
	(rest_of_clean_state): Update.
	* omp-low.c (expand_omp_parallel): Update.
	* ipa-reference.c (analyze_function): Update.
	* reorg.c (find_end_label): Update.
	(optimize_skip): Update.
	(fill_simple_delay_slots): Update.
	(fill_simple_delay_slots): Update.
	(make_return_insns): Update.
	(dbr_schedule): Update.
	* gimple-low.c (record_vars_into): Update.
	* cfgbuild.c (make_edges): Update.
	* function.c (assign_stack_local): Update.
	(assign_parm_adjust_stack_rtl): Update.
	(locate_and_pad_parm): Update.
	(allocate_struct_function): Do not initialize stack_alignment_needed
	and preferred_stack_boundary here.
	(stack_protect_prologue): Update.
	(stack_protect_epilogue): Update.
	(expand_function_start): Initialize stack_alignment_needed,
	preferred_stack_boundary and max_jumptable_ents.
	(expand_function_end): Update.
	(free_after_compilation): Do not NULLify epilogue_delay_list.
	* function.h (struct rtl_data): Add stack_protect_guard,
	stack_alignment_needed,
	preferred_stack_boundary, epilogue_delay_list.
	(struct function): Remove value_histograms, stack_alignment_needed,
	preferred_stack_boundary, epilogue_delay_list, max_jumptable_ents,
	last_label_uid,
	unexpanded_var_list, stack_protect_guard.
	(current_function_epilogue_delay_list): Remove.
	* ipa-type-escape.c (analyze_function): Update.
	* gimplify.c (pop_gimplify_context): Update comment.
	* calls.c (expand_call): Update.
	(emit_library_call_value_1): Update.
	* except.c (set_nothrow_function_flags): Update.
	* cfgexpand.c (get_decl_align_unit): Update.
	(create_stack_guard): Update.
	(estimated_stack_frame_size): Update.
	(expand_used_vars): Update.
	(tree_expand_cfg): Free histogram earliers, init expansion variables.
	* explow.c (allocate_dynamic_stack_space): Update.
	* tree-ssa-live.c (remove_unused_locals): Update.
	* varasm.c (mark_constant_pool): Update.
	* tree-inline.c (remap_decls): Update.
	(initialize_cfun): Update.
	(declare_return_variable): Update.
	(inline_forbidden_p): Update.
	(expand_call_inline): Update.
	(declare_inline_vars): Update.
	(tree_function_versioning): Update.
	* tree-flow.h (value_histograms): New.
	(VALUE_HISTOGRAMS): New macro.
	* basic-block.h (control_flow_graph): Add max_jumptable_ents,
	last_label_uid.
	* tree-cfg.c (set_bb_for_stmt): Update.
	(replace_by_duplicate_decl): Update.
	(move_block_to_fn): Update.
	(new_label_mapper): Update.
	(dump_function_to_file): Update.
	* ipa-struct-reorg.c (build_data_structure): Update.
	* cfgrtl.c (print_rtl_with_bb): Update.
	* reload1.c (reload): Update.
	(reload): Update.
	* config/i386/i386.c (setup_incoming_varargs_64,
	ix86_compute_frame_layout): Update.
	* config/arc/arc.c (arc_output_function_epilogue): Update.

From-SVN: r134425
2008-04-18 05:26:12 +00:00
Jan Hubicka
57b9e36755 function.c (free_after_compilation): Clear out regno_reg_rtx pointer.
* function.c (free_after_compilation): Clear out regno_reg_rtx
	pointer.

From-SVN: r134097
2008-04-08 16:33:46 +00:00
Jan Hubicka
38173d38cc function.h (incomming_args): Break out of struct function.
* function.h (incomming_args): Break out of struct function.
	(function_subsections): Break out of struct function.
	(rtl_data): Add args, subsections fields. Break out outgoing_args_size,
	return_rtx and hard_reg_initial_vals from struct function.
	Kill inl_max_label_num.
	(current_function_pops_args, current_function_args_info,
	current_function_args_size, current_function_args_size,
	current_function_pretend_args_size,
	current_function_outgoing_args_size,
	current_function_internal_arg_pointer, current_function_return_rtx):
	Kill compatibility accestor macros.
	* builtins.c (expand_builtin_apply_args_1): Update.
	(expand_builtin_next_arg): Update.
	* df-scan.c (df_get_call_refs): Update.
	* dbxout.c (dbxout_function_end): Update.
	* dwarf2out.c (dwarf2out_switch_text_section): Update.
	(output_line_info): Update.
	(secname_for_decl): Update.
	(dwarf2out_var_location): Update.
	* function.c (free_after_compilation): Update.
	(assign_parm_find_stack_rtl): Update.
	(assign_parms): Update.
	(expand_dummy_function_end): Update.
	(expand_function_end): Update.
	* calls.c (mem_overlaps_already_clobbered_arg_p): Update.
	(expand_call): Update.
	(emit_library_call_value_1): Update.
	(store_one_arg): Update.
	* varasm.c (initialize_cold_section_name): Update.
	(unlikely_text_section): Update.
	(unlikely_text_section_p): Update.
	(assemble_start_function): Update.
	(assemble_end_function): Update.
	(default_section_type_flags): Update.
	(switch_to_section): Update.
	* integrate.c (set_decl_abstract_flags): Update.
	(get_hard_reg_initial_val): Update.
	(has_hard_reg_initial_val): Update.
	(allocate_initial_values): Update.
	* resource.c (init_resource_info): Update.
	* config/alpha/alpha.c (NUM_ARGS): Update.
	(direct_return): Update.
	(alpha_va_start): Update.
	(alpha_sa_size): Update.
	(alpha_initial_elimination_offset): Update.
	(alpha_expand_prologue): Update.
	(alpha_start_function): Update.
	(alpha_expand_epilogue): Update.
	(unicosmk_initial_elimination_offset):
	* config/alpha/alpha.md (call expander): Update.
	* config/s390/s390.c (s390_register_info): Update.
	(s390_register_info): Update.
	(s390_frame_info): Update.
	(s390_initial_elimination_offset): Update.
	(s390_build_builtin_va_list): Update.
	(s390_va_start): Update.
	* config/spu/spu.c (direct_return): Update.
	(spu_expand_prologue): Update.
	(spu_initial_elimination_offset): Update.
	(spu_build_builtin_va_list): Update.
	(spu_va_start): Update.
	* config/sparc/sparc.c (sparc_init_modes): Update.
	(sparc_compute_frame_size): Update.
	(function_value): Update.
	* config/m32r/m32r.c (m32r_compute_frame_size): Update.
	* config/i386/i386.md (return expander): Update.
	* config/i386/i386.c (ix86_va_start): Update.
	(ix86_can_use_return_insn_p): Update.
	(ix86_compute_frame_layout): Update.
	(ix86_expand_epilogue): Update.
	* config/sh/sh.c (output_stack_adjust): Update.
	(calc_live_regs): Update.
	(sh_expand_prologue): Update.
	(sh_builtin_saveregs): Update.
	(sh_va_start): Update.
	(initial_elimination_offset): Update.
	(sh_allocate_initial_value): Update.
	(sh_function_ok_for_sibcall): Update.
	(sh_get_pr_initial_val): Update.
	* config/sh/sh.md (return expander): Update.
	* config/avr/avr.c (frame_pointer_required_p): UPdate.
	* config/crx/crx.c (crx_compute_frame): UPdate.
	(crx_initial_elimination_offset): UPdate.
	* config/xtensa/xtensa.c (compute_frame_size): Update
	(xtensa_builtin_saveregs): Update.
	(xtensa_va_start): Update.
	(order_regs_for_local_alloc): Update.
	* config/stormy16/stormy16.c (xstormy16_compute_stack_layout): Update.
	(xstormy16_expand_builtin_va_start): Update.
	* config/fr30/fr30.c (fr30_compute_frame_size): Update.
	* config/m68hc11/m68hc11.md (return expanders): Update.
	* config/m68hc11/m68hc11.c (expand_prologue): Update.
	(expand_epilogue): Update.
	* config/cris/cris.c (cris_initial_frame_pointer_offset): Update.
	(cris_simple_epilogue): Update.
	(cris_expand_prologue): Update.
	(cris_expand_epilogue): Update.
	* config/iq2000/iq2000.c (iq2000_va_start): Update.
	(compute_frame_size): Update.
	* config/mt/mt.c (mt_compute_frame_size): Update.
	* config/mn10300/mn10300.c (expand_prologue): Update.
	(expand_epilogue): Update.
	(initial_offset): Update.
	(mn10300_builtin_saveregs):
	* config/mn10300/mn10300.md (return expander): Update.
	* config/ia64/ia64.c (ia64_compute_frame_size): Update.
	(ia64_initial_elimination_offset): Update.
	(ia64_initial_elimination_offset): Update.
	(ia64_expand_prologue): Update.
	* config/m68k/m68k.md (return expander): Update.
	* config/rs6000/rs6000.c (rs6000_va_start): Update.
	(rs6000_stack_info): Update.
	* config/mcore/mcore.c (layout_mcore_frame): Update.
	(mcore_expand_prolog): Update.
	* config/arc/arc.c (arc_compute_frame_size): Update.
	* config/score/score3.c (score3_compute_frame_size): Update.
	* config/score/score7.c (score7_compute_frame_size): Update.
	* config/arm/arm.c (use_return_insn): Update.
	(thumb_find_work_register): Update.
	(arm_compute_save_reg_mask): Update.
	(arm_output_function_prologue): Update.
	(arm_output_epilogue): Update.
	(arm_size_return_regs): Update.
	(arm_get_frame_offsets): Update.
	(arm_expand_prologue): Update.
	(thumb_exit): Update.
	(thumb_unexpanded_epilogue): Update.
	(thumb1_output_function_prologue): Update.
	* config/pa/pa.md (return expander): Update.
	* config/pa/pa.c (compute_frame_size): Update.
	(hppa_builtin_saveregs): Update.
	* config/mips/mips.c (mips_va_start): Update.
	(mips16_build_function_stub): Update.
	(mips_compute_frame_info): Update.
	(mips_restore_gp): Update.
	(mips_output_function_prologue): Update.
	(mips_expand_prologue): Update.
	* config/v850/v850.c (compute_frame_size): Update.
	(expand_prologue): * config/mmix/mmix.c (along): update.
	(mmix_initial_elimination_offset): update.
	(mmix_reorg): update.
	(mmix_use_simple_return): update.
	(mmix_expand_prologue): update.
	(mmix_expand_epilogue): Update.
	* config/bfin/bfin.c (bfin_initial_elimination_offset): Update.
	(emit_link_insn): Update.

From-SVN: r134087
2008-04-08 08:59:34 +00:00
Jan Hubicka
3e02976304 function.h (rtl): Rename to x_rtl.
* function.h (rtl): Rename to x_rtl.
	(crtl): New define.
	(return_label, naked_return_label, stack_slot_list, parm_birth_insn,
	frame_offset, stack_check_probe_note, arg_pointer_save_area,
	used_temp_slots avail_temp_slots, temp_slot_level,
	nonlocal_goto_handler_labels): Update accesstors.
	(rtl): New global variable.
	(struct function): Move some fileds to rtl_data.
	(get_arg_pointer_save_area): Update prototype.
	* builtins.c (expand_builtin_setjmp_receiver): Update call of
	get_arg_pointer_save_area.
	* expr.c (init_expr): Update
	* function.c (get_frame_size): Update
	(assign_stack_local): Update
	(expand_function_end): Update.
	(get_art_pointer_save_area): Update
	* function.h 
	* emit-rtl.c (rtl): Declare.
	(regno_reg_rtx): Declare.
	(first_insn, last_insn, cur_insn_uid, last_location, first_label_num):
	Update.
	(gen_reg_rtx): Update.
	* varasm.c (n_deferred_constatns): Update accestor.
	(init_varasm_status): Do not allocate varasm_status.
	(force_const_mem, get_pool_size, output_constant_pool): Update.
	* stmt.c (force_label_rtx): Do not use x_ prefixes.
	(expand_nl_goto_receiver): Update get_arg_pointer_save_area.
	* m32c/m32.c (m32c_leaf_function_p, m32c_function_needs_enter): Update.
	* sparc/sparc.h (INIT_EXPANDERS): Update.
	* ia64/ia64.h (INIT_EXPANDERS): Update.

From-SVN: r133994
2008-04-07 23:52:32 +00:00
Eric Botcazou
9dd9bf80a8 Removal of Return with Depressed Stack Pointer support
Removal of Return with Depressed Stack Pointer support
	* tree.h (TYPE_RETURNS_STACK_DEPRESSED): Delete.
	(ECF_SP_DEPRESSED): Likewise.
	(ECF_LIBCALL_BLOCK, ECF_NOVOPS): Adjust.
	* calls.c (emit_call_1): Do not test ECF_SP_DEPRESSED.
	(flags_from_decl_or_type): Do not test TYPE_RETURNS_STACK_DEPRESSED.
	(expand_call): Do not test ECF_SP_DEPRESSED.
	* dse.c (dse_step0): Do not test TYPE_RETURNS_STACK_DEPRESSED.
	* function.c (keep_stack_depressed): Delete.
	(handle_epilogue_set): Likewise.
	(update_epilogue_consts): Likewise.
	(emit_equiv_load): Likewise.
	(thread_prologue_and_epilogue_insns): Remove support for Return with
	Depressed Stack Pointer.
	* print-tree.c (print_node): Do not test TYPE_RETURNS_STACK_DEPRESSED.

ada/
	* gigi.h (create_subprog_type): Remove returns_with_dsp parameter.
	* decl.c (gnat_to_gnu_entity): Adjust for above new prototype.
	* utils.c (create_subprog_type): Remove returns_with_dsp parameter.
	* trans.c (gnat_to_gnu) <N_Return_Statement>: Remove code dealing with
	Return by Depressed Stack Pointer.

From-SVN: r133976
2008-04-07 09:37:51 +00:00
Paolo Bonzini
e892493899 function.c (free_after_parsing): Replace with cxx_push_function_context from C++ front-end.
2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

	* function.c (free_after_parsing): Replace with
	cxx_push_function_context from C++ front-end.
	(allocate_struct_function): Don't call langhook.
	* langhooks.h (struct lang_hooks_for_functions): Delete.
	(struct lang_hooks): Add back missing_noreturn_ok_p here, delete
	member "function".
	* langhooks-def.h (LANG_HOOKS_MISSING_NORETURN_OK_P): Add.
	(LANG_HOOKS_FUNCTION_INIT, LANG_HOOKS_FUNCTION_FINAL,
	LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P,
	LANG_HOOKS_FUNCTION_INITIALIZER): Delete.
	(LANG_HOOKS_INITIALIZER): Add LANG_HOOKS_MISSING_NORETURN_OK_P,
	remove LANG_HOOKS_FUNCTION_INITIALIZER.
	* tree-cfg.c: Adjust call to missing_noreturn_ok_p langhook.

	* c-objc-common.h (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P):
	Rename to LANG_HOOKS_MISSING_NORETURN_OK_P.
	
cp:
2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

	* decl.c (cxx_push_function_context): Delete.
	(cxx_pop_function_context): Delete.
	(start_preparsed_function): Merge cxx_push_function_context (!f->decl
	code only).
	* cp-objcp-common.h (LANG_HOOKS_FUNCTION_INIT,
	LANG_HOOKS_FUNCTION_FINAL): Delete.
	(LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): Rename to
	LANG_HOOKS_MISSING_NORETURN_OK_P.
	* cp-tree.h (cxx_push_function_context, cxx_pop_function_context):
	Delete prototype.
	* semantics.c (current_stmt_tree): Fix comment.

From-SVN: r133900
2008-04-04 14:57:18 +00:00
Paolo Bonzini
d2784db4e5 c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED, [...]): Delete.
2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

	* c-objc-common.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
	LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
	* c-tree.h (c_push_function_context, c_pop_function_context): Remove
	argument.
	* c-decl.c (c_push_function_context, c_pop_function_context): Remove
	argument, call {push,pop}_function_context from here.
	* c-parser.c: Use c_{push,pop}_function_context.

	* function.c (push_function_context_to): Move meat ...
	(push_function_context): ... here.  Simplify.
	* function.c (pop_function_context_from): Move meat ...
	(pop_function_context): ... here.  Simplify.
	* langhooks.h (struct lang_hooks_for_functions): Remove enter_nested,
	leave_nested).
	* langhooks-def.h (LANG_HOOKS_FUNCTION_ENTER_NESTED,
        LANG_HOOKS_FUNCTION_LEAVE_NESTED): Delete.
	(LANG_HOOKS_FUNCTION_INITIALIZER): Delete them from here.
	* tree.h (push_function_context_to, pop_function_context_from): Remove.

cp:
2008-04-03  Paolo Bonzini  <bonzini@gnu.org>

	* method.c (synthesize_method): Use {push,pop}_function_context.
	* name-lookup.c (push_to_top_level): Likewise.
	* parser.c (cp_parser_late_parsing_for_member): Likewise.

From-SVN: r133860
2008-04-03 05:38:32 +00:00
Paolo Bonzini
4846b4355c expr.c (expand_var): Delete it.
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
2008-04-02 10:01:43 +00:00
Jan Hubicka
113c63b8e3 function.c (free_after_compilation): Free epilogue_delay_list.
* function.c (free_after_compilation): Free epilogue_delay_list.
	(prepare_function_start): Assert that previous compilation was freed.

From-SVN: r133787
2008-04-01 08:51:25 +00:00
Jan Hubicka
bd60bab2ad builtins.c (expand_builtin_setjmp_receiver): Update call of get_arg_pointer_save_area.
* builtins.c (expand_builtin_setjmp_receiver): Update call of
	get_arg_pointer_save_area.
	* expr.c (init_expr): Just clear out rtl.expr.
	* function.c (free_after_compilation): Clear out whole RTL structure.
	(get_func_frame_size): Merge into ...
	(get_frame_size): ... this one.
	(assign_stack_local_1): Merge into ...
	(assign_stack_local): ... this one.
	(expand_function_end): Update call of get_arg_pointer_save_area.
	(get_art_pointer_save_area): Remove cfun argument.
	* function.h (emit_status): regno_pointer_align does not need length
	attribute. Move x_regno_reg_rtx to ...
	(regno_reg_rtx): ... new global array.
	(reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors.
	(pending_stack_adjust, inhibit_defer_pop, saveregs_value,
	apply_args_value, forced_labels, stack_pointer_delta): Update accestors.
	(struct varasm_status): Move here from varasm.c
	(struct rtl_data): New. Move here some fields from struct function.
	(return_label, naked_return_label, stack_slot_list, parm_birth_insn,
	frame_offset, stack_check_probe_note, arg_pointer_save_area,
	used_temp_slots avail_temp_slots, temp_slot_level,
	nonlocal_goto_handler_labels): Update accesstors.
	(rtl): New global variable.
	(struct function): Move some fileds to rtl_data.
	(get_arg_pointer_save_area): Update prototype.
	* emit-rtl.c (rtl): Declare.
	(regno_reg_rtx): Declare.
	(first_insn, last_insn, cur_insn_uid, last_location, first_label_num): Update.
	(gen_reg_rtx): Update.
	(init_virtual_regs): Do not tate emit_status argument.
	(init_emit): Do not allocate emit.
	* varasm.c (varasm_statuc): Move to function.h.
	(n_deferred_constatns): Update accestor.
	(init_varasm_status): Do not allocate varasm_status.
	(force_const_mem, get_pool_size, output_constant_pool): Update.
	* stmt.c (force_label_rtx): Do not use x_ prefixes.
	(expand_nl_goto_receiver): Update get_arg_pointer_save_area.

From-SVN: r133759
2008-03-31 17:08:31 +00:00
Jan Hubicka
8ddbbcaea4 re PR other/35094 (RTL dump file letters hosed and partly undocumented)
* gcc.dg/20050811-2.c: Update dumping flags.
	* gcc.dg/sms-2.c: Update dumping flags.
	* gcc.dg/var-expand1.c: Update dumping flags.
	* gcc.dg/var-expand3.c: Update dumping flags.
	* gcc.dg/pr30957-1.c: Update dumping flags.
	* gcc.dg/20050811-1.c: Update dumping flags.
	* gcc.dg/cpp/cmdlne-dI-M.C: Do not xfail.
	* gcc.dg/cpp/cmdlne-dM-M.C: Do not xfail.

	PR other/35094
	* toplev.c (decode_d_option): Handle all CPP flags.
	* tree-vrp.c: Update tree_pass descriptors.
	* regrename.c: Update tree_pass descriptors.
	* fwprop.c: Update tree_pass descriptors.
	* doc/invoke.texi: Remove documentation of dropped -d? flags.
	* tree-into-ssa.c: Update tree_pass descriptors.
	* tree-dump.c: Update tree_pass descriptors.
	* tree-complex.c: Update tree_pass descriptors.
	* tree-dump.h: Update tree_pass descriptors.
	* see.c: Update tree_pass descriptors.
	* cgraphbuild.c: Update tree_pass descriptors.
	* tracer.c: Update tree_pass descriptors.
	* tree-loop-distribution.c: Update tree_pass descriptors.
	* cgraph.c: Update tree_pass descriptors.
	* postreload-gcse.c: Update tree_pass descriptors.
	* postreload.c: Update tree_pass descriptors.
	* tree-ssa-loop-ch.c: Update tree_pass descriptors.
	* tree-tailcall.c: Update tree_pass descriptors.
	* tree-pass.h (tree_opt_pass): Rename to ...
	(opt_pass) ... this one; add "type" field and remove letter field.
	(gimple_opt_pass, rtl_opt_pass, simple_ipa_opt_pass): New.
	(execute_pass_list, execute_ipa_pass_list, all_passes, all_ipa_passes,
	all_lowering_passes): Update declaration.
	* ipa-cp.c: Update tree_pass descriptors.
	* final.c: Update tree_pass descriptors.
	* omp-low.c: Update tree_pass descriptors.
	* tree-ssa-dse.c: Update tree_pass descriptors.
	* ipa-reference.c: Update tree_pass descriptors.
	* tree-ssa-uncprop.c: Update tree_pass descriptors.
	* auto-inc-dec.c: Update tree_pass descriptors.
	* reorg.c: Update tree_pass descriptors.
	* cgraphunit.c: Update tree_pass descriptors.
	* tree-ssa-copyrename.c: Update tree_pass descriptors.
	* tree-ssa-ccp.c: Update tree_pass descriptors.
	* df-core.c: Update tree_pass descriptors.
	* mode-switching.c: Update tree_pass descriptors.
	* tree-nomudflap.c: Update tree_pass descriptors.
	* modulo-sched.c: Update tree_pass descriptors.
	* ipa-pure-const.c: Update tree_pass descriptors.
	* cse.c: Update tree_pass descriptors.
	* web.c: Update tree_pass descriptors.
	* tree-stdarg.c: Update tree_pass descriptors.
	* tree-ssa-math-opts.c: Update tree_pass descriptors.
	* tree-ssa-dom.c: Update tree_pass descriptors.
	* tree-nrv.c: Update tree_pass descriptors.
	* tree-ssa-alias.c: Update tree_pass descriptors.
	* loop-init.c: Update tree_pass descriptors.
	* gimple-low.c: Update tree_pass descriptors.
	* ipa-inline.c: Update tree_pass descriptors.
	* tree-ssa-sink.c: Update tree_pass descriptors.
	* global.c: Update tree_pass descriptors.
	* ifcvt.c: Update tree_pass descriptors.
	* jump.c: Update tree_pass descriptors.
	* predict.c: Update tree_pass descriptors.
	* tree-ssa-loop.c: Update tree_pass descriptors.
	* recog.c: Update tree_pass descriptors.
	* dse.c: Update tree_pass descriptors.
	* tree-ssa-ifcombine.c: Update tree_pass descriptors.
	* tree-eh.c: Update tree_pass descriptors.
	* regmove.c: Update tree_pass descriptors.
	* local-alloc.c
	* function.c: Update tree_pass descriptors.
	* tree-vectorizer.c: Update tree_pass descriptors.
	* gcse.c: Update tree_pass descriptors.
	* ipa-type-escape.c: Update tree_pass descriptors.
	* tree-if-conv.c: Update tree_pass descriptors.
	* init-regs.c: Update tree_pass descriptors.
	* ipa.c: Update tree_pass descriptors.
	* tree-ssa-phiopt.c: Update tree_pass descriptors.
	* rtl-factoring.c: Update tree_pass descriptors.
	* lower-subreg.c: Update tree_pass descriptors.
	* bt-load.c: Update tree_pass descriptors.
	* tree-dfa.c: Update tree_pass descriptors.
	* except.c: Update tree_pass descriptors.
	* emit-rtl.c: Update tree_pass descriptors.
	* cfgexpand.c: Update tree_pass descriptors.
	* tree-cfgcleanup.c: Update tree_pass descriptors.
	* cfgcleanup.c: Update tree_pass descriptors.
	* tree-ssa-pre.c: Update tree_pass descriptors.
	* tree-sra.c: Update tree_pass descriptors.
	* tree-mudflap.c: Update tree_pass descriptors.
	* tree-ssa-copy.c: Update tree_pass descriptors.
	* cfglayout.c: Update tree_pass descriptors.
	* tree-ssa-forwprop.c: Update tree_pass descriptors.
	* tree-ssa-dce.c: Update tree_pass descriptors.
	* tree-ssa.c: Update tree_pass descriptors.
	* regclass.c: Update tree_pass descriptors.
	* integrate.c: Update tree_pass descriptors.
	* tree-optimize.c: Update tree_pass descriptors.
	* tree-ssa-phiprop.c: Update tree_pass descriptors.
	* tree-object-size.c: Update tree_pass descriptors.
	* combine.c: Update tree_pass descriptors.
	* tree-outof-ssa.c: Update tree_pass descriptors.
	* bb-reorder.c: Update tree_pass descriptors.
	* stack-ptr-mod.c: Update tree_pass descriptors.
	* var-tracking.c: Update tree_pass descriptors.
	* tree-profile.c: Update tree_pass descriptors.
	* tree-vect-generic.c: Update tree_pass descriptors.
	* reg-stack.c: Update tree_pass descriptors.
	* sched-rgn.c: Update tree_pass descriptors.
	* tree-ssa-structalias.c: Update tree_pass descriptors.
	* tree-cfg.c: Update tree_pass descriptors.
	* passes.c (current_pass): Update declaration.
	(finish_optimization_passes): Update.
	(all_passes, all_ipa_passes, all_lowering_passes): Update declaration.
	(register_one_dump_file, register_dump_files_1, next_pass_1):
 	Update arguments.
	(init_optimization_passes): Update handling of new types.
	(execute_one_pass, execute_pass_list, execute_ipa_pass_list): Update.
	* ipa-struct-reorg.c: Update tree_pass descriptors.
	* tree-ssa-reassoc.c: Update tree_pass descriptors.
	* combine-stack-adj.c: Update tree_pass descriptors.
	* cfgrtl.c: Update tree_pass descriptors.
	* dce.c: Update tree_pass descriptors.
	* tree-ssanames.c: Update tree_pass descriptors.

From-SVN: r133342
2008-03-19 11:22:40 +00:00
Uros Bizjak
6f6b8f8142 re PR middle-end/34621 (gcc.c-torture/execute/va-arg-25.c:32: internal compiler error: in expand_call, at calls.c:2785)
PR middle-end/34621
	* function.c (pad_to_arg_alignment): Remove test for STACK_BOUNDARY
	when calculating alignment_pad.

From-SVN: r132336
2008-02-15 10:55:36 +01:00
Michael Matz
a5bfb13a75 re PR target/34930 (ICE in instantiate_virtual_regs_in_insn with vector splat load)
PR target/34930
        * function.c (instantiate_virtual_regs_in_insn): Reload address
        before falling back to reloading the whole operand.

From-SVN: r132317
2008-02-14 12:54:30 +00:00
Jakub Jelinek
d7b8033f3e re PR inline-asm/35160 (local-alloc introduces sharing of the same pseudo/hard reg between different output regs in inline asm)
PR inline-asm/35160
	* function.c (match_asm_constraints_1): Don't replace the same input
	multiple times.

	* gcc.target/i386/pr35160.c: New test.

From-SVN: r132263
2008-02-12 19:31:53 +01:00
Peter Bergner
e41b2a33b3 re PR target/34814 (SDmode function args not passed according to ABI specification)
PR target/34814
	* doc/tm.texi (TARGET_EXPAND_TO_RTL_HOOK): Document.
	(TARGET_INSTANTIATE_DECLS): Likewise.
	* target.h (expand_to_rtl_hook): New target hook.
	(instantiate_decls): Likewise.
	* function.c (instantiate_decl): Make non-static.  Rename to...
	(instantiate_decl_rtl): ... this.
	(instantiate_expr): Use instantiate_decl_rtl.
	(instantiate_decls_1): Likewise.
	(instantiate_decls): Likewise.
	(instantiate_virtual_regs: Call new instantiate_decls taget hook.
	* function.h (instantiate_decl_rtl): Add prototype.
	* cfgexpand.c (target.h): New include.
	(tree_expand_cfg): Call new expand_to_rtl_hook target hook.
	* target-def.h (TARGET_EXPAND_TO_RTL_HOOK): New define.
	(TARGET_INSTANTIATE_DECLS): Likewise.
	(TARGET_INITIALIZER): New target hooks added.
	* config/rs6000/rs6000-protos.h (rs6000_secondary_memory_needed_rtx):
	New prototype.
	* config/rs6000/rs6000.c (tree-flow.h): New include.
	(machine_function): Add sdmode_stack_slot field.
	(rs6000_alloc_sdmode_stack_slot): New function.
	(rs6000_instantiate_decls): Likewise.
	(rs6000_secondary_memory_needed_rtx): Likewise.
	(rs6000_check_sdmode): Likewise.
	(TARGET_EXPAND_TO_RTL_HOOK): Target macro defined.
	(TARGET_INSTANTIATE_DECLS): Likewise.
	(rs6000_hard_regno_mode_ok): Allow SDmode.
	(num_insns_constant): Likewise.  Handle _Decimal32 constants.
	(rs6000_emit_move): Handle SDmode.
	(function_arg_advance): Likewise.
	(function_arg): Likewise.
	(rs6000_gimplify_va_arg): Likewise.  Add special handling of
	SDmode var args for 32-bit compiles.
	(rs6000_secondary_reload_class): Handle SDmode.
	(rs6000_output_function_epilogue): Likewise.
	(rs6000_function_value): Simplify if statement.
	(rs6000_libcall_value): Likewise.
	* config/rs6000/rs6000.h (SLOW_UNALIGNED_ACCESS): Handle SDmode.
	(SECONDARY_MEMORY_NEEDED_RTX): Add define.
	* config/rs6000/dfp.md (movsd): New define_expand and splitter.
	(movsd_hardfloat): New define_insn.
	(movsd_softfloat): Likewise.
	(movsd_store): Likewise.
	(movsd_load): Likewise.
	(extendsddd2): Likewise.
	(extendsdtd2): Likewise.
	(truncddsd2): Likewise.
	(movdd_hardfloat64): Fixup comment.
	(UNSPEC_MOVSD_LOAD): New constant.
	(UNSPEC_MOVSD_STORE): Likewise.

Co-Authored-By: Janis Johnson <janis187@us.ibm.com>

From-SVN: r131869
2008-01-26 11:18:35 -06:00
Richard Sandiford
5141868dc0 tree.h (set_decl_incoming_rtl): Add a by_reference_p parameter.
gcc/
	* tree.h (set_decl_incoming_rtl): Add a by_reference_p parameter.
	* emit-rtl.c (set_decl_incoming_rtl): Likewise.  Don't set the
	rtl's register attributes when the parameter is true.
	* function.c (assign_parms_unsplit_complex, assign_parms)
	(expand_function_start): Update calls to set_decl_incoming_rtl.

From-SVN: r131056
2007-12-19 09:54:45 +00:00
Andreas Krebbel
182e0d71f0 PR 34081/C++
2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR 34081/C++
	* c-decl.c (store_parm_decls): Pass 'false' for the new
	allocate_struct_function parameter.
	* cgraphunit.c (cgraph_build_static_cdtor): Likewise.
	* tree-parloops.c (create_loop_fn): Likewise.
	* function.c (push_function_context_to, push_struct_function,
	init_function_start): Likewise.
	(allocate_struct_function): Add boolean parameter.
	* tree.h (allocate_struct_function): Add boolean parameter.
	* function.h (struct function): Move returns_struct and
	returns_pcc_struct to the end of the structure definiton.

2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

        PR 34081/C++
        * trans.c (Subprogram_Body_to_gnu, Compilation_Unit_to_gnu):
        Pass 'false' for the new allocate_struct_function parameter.
        * utils.c (build_function_stub): Likewise.

2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR 34081/C++
	* decl.c (finish_method): Pass 'false' for the new
	allocate_struct_function parameter.

2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR 34081/C++
	* treetree.c (tree_code_create_function_wrapup): Pass 'false' 
	for the new allocate_struct_function parameter.

2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR 34081/C++
	* decl.c (start_preparsed_function): Pass 
	processing_template_decl for the new allocate_struct_function
	parameter.

2007-11-26  Andreas Krebbel  <krebbel1@de.ibm.com>

	PR 34081/C++
	* g++.dg/template/dependent-expr6.C: New testcase.

From-SVN: r130441
2007-11-26 17:33:23 +00:00
Richard Guenther
87caf699bd tree.h (struct tree_block): Move locus member next to flags.
2007-11-25  Richard Guenther  <rguenther@suse.de>

	* tree.h (struct tree_block): Move locus member next to
	flags.
	* c-decl.c (SCOPE_LIST_APPEND): Use BLOCK_CHAIN.
	(SCOPE_LIST_CONCAT): Likewise.
	(pop_scope): Likewise.
	* function.c (instantiate_decls_1): Likewise.
	(setjmp_vars_warning): Likewise.
	* emit-rtl.c (set_used_decls): Likewise.
	* tree-inline.c (add_lexical_block): Likewise.

	cp/
	decl.c (poplevel): Use BLOCK_CHAIN.

	ada/
	utils.c (gnat_pushlevel): Use BLOCK_CHAIN.
	(gnat_poplevel): Likewise.

From-SVN: r130407
2007-11-25 14:26:10 +00:00
Tom Tromey
5576d6f2da tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to 'func'.
* tree-ssa-structalias.c (ipa_pta_execute): Rename 'cfun' to
	'func'. 
	* tree-parloops.c (create_loop_fn): Use set_cfun.
	* gengtype.c (open_base_files): Emit #undef cfun.
	* ipa-struct-reorg.c (do_reorg_1): Use set_cfun.
	* function.h (cfun): New define.
	* function.c: Undefine cfun.

From-SVN: r130213
2007-11-16 00:11:47 +00:00
Tom Tromey
38d346765a PR c++/32256, PR c++/32368:
gcc
	PR c++/32256, PR c++/32368:
	* function.c (saved_in_system_header): New global.
	(push_cfun): Save in_system_header.
	(pop_cfun): Restore in_system_header.
	(push_struct_function): Save in_system_header.
gcc/testsuite
	PR c++/32368:
	* g++.dg/warn/pragma-system_header3.h: New.
	* g++.dg/warn/pragma-system_header3.C: New.

	PR c++/32256:
	* g++.dg/warn/pragma-system_header4.C: New.
	* g++.dg/warn/pragma-system_header4.h: New.

From-SVN: r129936
2007-11-06 15:57:02 +00:00
Kazu Hirata
84fbffb2c2 fixed-bit.c, [...]: Fix comment typos.
* config/fixed-bit.c, config/i386/cpuid.h, config/i386/i386.c,
	config/i386/i386.md, config/i386/sse.md, function.c, jump.c,
	modulo-sched.c, ra-conflict.c, toplev.c, tree-eh.c, tree-sra.c,
	tree-ssa-dse.c, tree-vect-analyze.c, tree-vect-patterns.c,
	tree-vect-transform.c: Fix comment typos.
	* doc/extend.texi: Fix a typo.

From-SVN: r129291
2007-10-14 01:36:18 +00:00
Michael Matz
1596d61e6e re PR inline-asm/33600 (Breakage caused by the fix to PR33552)
gcc/
 PR inline-asm/33600
 * function.c (match_asm_constraints_1): Check for input
 being used in the outputs.

testsuite/
 * gcc.target/i386/pr33600.c: New testcase.

From-SVN: r129035
2007-10-05 15:36:16 +00:00
Michael Matz
53220215a8 re PR rtl-optimization/33552 (wrong code for multiple output asm, wrong df?)
PR rtl-optimization/33552
        * function.c (match_asm_constraints_1): Check for overlap in
        inputs and replace all occurences.

From-SVN: r128864
2007-09-28 13:31:50 +00:00
Richard Sandiford
208996c7d7 function.c (assign_parm_setup_block): Explicitly convert BLKmode parameters from word_mode to the subword type if...
gcc/
	* function.c (assign_parm_setup_block): Explicitly convert BLKmode
	parameters from word_mode to the subword type if such a truncation
	is not a no-op.

From-SVN: r128696
2007-09-23 19:08:56 +00:00
Jan Hubicka
e89d601008 decl.c (java_expand_body): Kill.
* decl.c (java_expand_body): Kill.
	(LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.

	* toplev.c (process_options): all frontends now do unit-at-a-time.
	* cgraphunit.c: update comments.
	(cgraph_expand_function): call passmanager dirrectly; emit thunks.
	* c-decl.c (finish_function): use cgraph_add_new_function.

	* method.c (use_thunk): Use tree_rest_of_compilation
	* cp-objecp-common.h (LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.
	(LANG_HOOKS_CALLGRAPH_EMIT_ASSOCIATED_THUNKS): Define.
	* cp-tree.h (expand_body): Kill.
	(emit_associated_thunks): Declare.
	* semantics.c (emit_associated_thunks): Export.
	(expand_body): Kill.

	* misc.c (gnat_expand_body): Kill.
	(LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.

	* f95-lang.c (gfc_expand_function): Kill.
	(LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Kill.

	* function.c (expand_function_end): We are always unit-at-a-time.

From-SVN: r128367
2007-09-11 10:39:53 +00:00
Laurynas Biveinis
ba4807a0d3 revert: regrename.c (copyprop_hardreg_forward_1): New variable next.
Revert:
	2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>
	* regrename.c (copyprop_hardreg_forward_1): New variable next. Use
	FOR_BB_INSNS_SAFE instead of for loop.
	* cse.c (cse_extended_basic_block): Likewise.
	* postreload.c (reload_cse_regs_1): New variable next. Make sure
	that the for loop does not invoke NEXT_INSN on a deleted insn.
	* function.c (instantiate_virtual_regs): Likewise.
	* lower-subreg.c (remove_retval_note): Likewise.
	(decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
	FOR_BB_INSNS.
	* emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
	a deleted insn.
	* cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
	insn, if it's a jump.
	(try_redirect_by_replacing_jump): New variable jump_p. Call
	tablejump_p before delete_insn_chain.
	* reload1.c (reload): New variable next. Make sure that the for
	loop does not invoke NEXT_INSN on a deleted insn.
	(fixup_eh_region_note): Make the loop terminate if i becomes NULL.
	(delete_output_reload): New variable prev. Make sure the the for
	loops do not invoke PREV_INSN on a deleted insn.

From-SVN: r128284
2007-09-09 02:23:47 +00:00
Laurynas Biveinis
62a4a967a9 regrename.c (copyprop_hardreg_forward_1): New variable next.
2007-09-05  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* regrename.c (copyprop_hardreg_forward_1): New variable next. Use
	FOR_BB_INSNS_SAFE instead of for loop.
	* cse.c (cse_extended_basic_block): Likewise.
	* postreload.c (reload_cse_regs_1): New variable next. Make sure
	that the for loop does not invoke NEXT_INSN on a deleted insn.
	* function.c (instantiate_virtual_regs): Likewise.
	* lower-subreg.c (remove_retval_note): Likewise.
	(decompose_multiword_subregs): Use FOR_BB_INSNS_SAFE instead of
	FOR_BB_INSNS.
	* emit-rtl.c (remove_insn): Set NEXT_INSN and PREV_INSN to NULL on
	a deleted insn.
	* cfgrtl.c (delete_insn): Set JUMP_LABEL to NULL on a deleted
	insn, if it's a jump.
	(try_redirect_by_replacing_jump): New variable jump_p. Call
	tablejump_p before delete_insn_chain.
	* reload1.c (reload): New variable next. Make sure that the for
	loop does not invoke NEXT_INSN on a deleted insn.
	(fixup_eh_region_note): Make the loop terminate if i becomes NULL.
	(delete_output_reload): New variable prev. Make sure the the for
	loops do not invoke PREV_INSN on a deleted insn.

From-SVN: r128224
2007-09-07 02:58:06 +00:00
Sandra Loosemore
db2960f402 Add target hook invoked when cfun changes.
2007-09-05  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	Add target hook invoked when cfun changes.

	* doc/tm.texi (TARGET_SET_CURRENT_FUNCTION): Document.
	* target.h (struct gcc_target): Add set_current_function.
	* target-def.h (TARGET_SET_CURRENT_FUNCTION): Define.
	(TARGET_INITIALIZER): Add initializer for set_current_function.
	* tree.h (push_struct_function): New.
	* tree-inline.h (push_cfun, pop_cfun): Move declarations to...
	* function.h: Here.
	(set_cfun): Declare.
	* tree-inline.c (cfun_stack, push_cfun, pop_cfun): Moved to...
	* function.c:  Here.
	(push_function_context_to): Use allocate_struct_function
	to create null context, not init_dummy_function_start.  Use set_cfun.
	(pop_function_context_from): Use set_cfun.
	(in_dummy_function): New.
	(invoke_set_current_function_hook): New.
	(set_cfun): New.
	(push_cfun, pop_cfun): Use set_cfun.
	(push_struct_function): New.
	(allocate_struct_function): Call invoke_set_current_function_hook
	before returning.
	(prepare_function_start): Don't set cfun here.  Remove unused
	argument; fix all callers.
	(init_dummy_function_start): Fiddle with in_dummy_function.  Call
	push_struct_function.
	(init_function_start): Set cfun here.
	(expand_dummy_function_end): Fiddle with in_dummy_function.  Pop cfun.
	* omp-low.c (create_omp_child_function): Use push_struct_function
	and pop_cfun to save/restore state.
	(expand_omp_parallel): Remove unused saved_cfun variable.
	* cgraphunit.c (ipa_passes): Use set_cfun.
	* gimple-low.c (record_vars_into): Use push_cfun/pop_cfun here.
	* dwarf2out.c (dwarf2out_abstract_function): Likewise.
	* matrix-reorg.c (transform_allocation_sites): Likewise.
	(matrix_reorg): Use set_cfun.
	* gimplify.c (gimplify_function_tree): Use push_cfun/pop_cfun here.
	* tree-optimize.c (tree_rest_of_compilation): Remove one redundant
	assignment to cfun; use set_cfun for the other.
	* tree-cfg.c (move_sese_region_to_fn): Use set_cfun.
	(dump_function_to_file): Use push_cfun/pop_cfun here.
	* c-decl.c (finish_function): Use set_cfun.

	gcc/ada/
	* trans.c (Compilation_unit_to_gnu): Use set_cfun.
	* utils.c (end_subprog_body): Likewise.

	gcc/cp/
	* decl.c (finish_function): Use set_cfun.
	* method.c (use_thunk): Likewise.

	gcc/fortran/
	* trans-decl.c (build_entry_thunks): Use set_cfun.
	(gfc_generate_function_code): Likewise.

	gcc/java/
	* decl.c (finish_method): Use set_cfun.

	gcc/treelang/
	* treetree.c (tree_code_create_function_wrapup):  Use set_cfun.

From-SVN: r128132
2007-09-05 10:24:54 -04:00
Jan Hubicka
a36b8a1ee8 regrename.c (pass_regrename, [...]): Add RTL sharing verifier.
* regrename.c (pass_regrename, pass_cprop_hardreg): Add RTL sharing
	verifier.
	* fwprop.c (pass_rtl_fwprop, pass_rtl_fwprop_add): Likewise.
	* see.c (pass_see): Likewise.
	* tracer.c (pass_tracer): Likewise.
	* postreload-gcse.c (pass_gcse2): Likewise.
	* postreload.c (pass_postreload_cse): Likewise.
	* mode-switching.c (pass_mode_switching): Likewise.
	* modulo-sched.c (pass_sms): Likewise.
	* cse.c (cse_insn): Likewise.
	* web.c (pass_web): Likweise.
	* combine-stack-adj.c (pass_stack_adjustments): Likewise.
	* dce.c (pass_ud_rtl_dce, pass_fast_rtl_dce): Likewise.
	* loop-init.c (pass_rtl_loop_init): Likewise.
	(pass_rtl_loop_done, pass_rtl_move_loop_, pass_rtl_unswitch,
	pass_rtl_unroll_and, pass_rtl_doloop): Likewise.
	* global.c (pass_global_alloc): Likewise.
	* ifcvt.c (pass_rtl_ifcvt, pass_if_after_combine,
	pass_if_after_reload): Likewise.
	* reload.c (pass_peephole2, pass_split_for_shoren_branches): Likewise.
	* dse.c (pass_rtl_dse1, pass_rtl_dse2): Likewise.
	* regmove.c (pass_regmove): Likewise.
	* function.c (pass_thread_prologugues_epilogues): Likewise.
	* gcse.c (pass_gcse): Likewise.
	* rtl-factoring.c (pass_rtl_seqabstr): Likewise.
	* lower-subreg.c (pass_lower_subreg2): Likewise.
	* bt-load.c (pass_branch_target_load): Likewise.
	* emit-rtl.c (pass_unshare_all_rtl): Likewise.
	* cfgcleanup.c (pass_jump, pass_jump2): Likewise.
	* combine.c (pass_combine): Likewise.
	* bb-reorder.c (pass_duplicate_comp, pass_reorder_blocks): Likewise.
	(pass_partition_blocks): Likewise.
	* var-tracking.c (pass_variable_track): Likewise.
	* reg-stack.c (pass_stack_regs_run): Likewise.
	* sched-rgn.c (pass_sched, pass_sched2): Likewise.
	* passes.c (pass_postreload): Likewise.
	(execute_function_todo): Add TODO_verify_rtl_sharing handling code.
	* tree-pass.h (TODO_verify_rtl_sharing): New.
	(TODO_update_ssa, TODO_update_ssa_no_phi, TODO_update_ssa_full_phi,
	TODO_update_ssa_only_virtuals, TODO_remove_unused_locals,
	TODO_set_props, TODO_df_finish, TODO_df_verify,
	TODO_mark_first_instance, TODO_rebuild_alias): Renumber.

From-SVN: r128126
2007-09-05 10:49:01 +00:00