Commit Graph

120 Commits

Author SHA1 Message Date
Jan Hubicka
c9fff01f44 Fix problems in my previous commit.
From-SVN: r32930
2000-04-05 15:27:08 +00:00
Jan Hubicka
f2d33f1321 calls.c (ECF_MALLOC, [...]): New constants.
* calls.c (ECF_MALLOC, ECF_MAY_BE_ALLOCA, ECF_RETURNS_TWICE,
	 ECF_LONGJMP, ECF_FORK_OR_EXEC):  New constants.
	(ECF_IS_CONST): Rename to ECF_CONST.
	(special_function_p): Make static, change interface.
	(flags_from_decl_or_type, try_to_integrate): Break out from ...
	(expand_call) ... here; convert number of variables to flags.
	(emit_library_call_vlue_1): Likewise.
	(setjmp_call_p): New function.
	(initialize_argument_information): Accepts flags as argument;
	return flags.
	(precompute_arguments): Likewise.
	* tree.h (special_function_p): Remove.
	(setjmp_call_p): Add prototype.

From-SVN: r32904
2000-04-04 17:19:30 +00:00
Jim Wilson
3431f196c0 Fix 3 ia64 g++ testsuite failures, and groff miscompilation.
* optimize.c (expand_call_inline): Emit the return label before
	evaluating the return value.

From-SVN: r32169
2000-02-25 21:32:24 -08:00
Mark Mitchell
574a0ef53c lex.c (check_newline): Use push_srcloc and pop_srcloc, rather than duplicating functionality here.
* lex.c (check_newline): Use push_srcloc and pop_srcloc, rather
	than duplicating functionality here.
	* optimize.c: Include input.h.
	(expand_call_inline): Use push_srcloc and pop_srcloc.
	* parse.y (maybe_cv_qualifier): Remove calls to emit_line_note.
	* parse.c: Regenerated.
	* Makefile.in (lex.o): Depend on input.h.
	(optimize.o): Likewise.

From-SVN: r32142
2000-02-25 01:36:03 +00:00
Richard Kenner
06ceef4e7b c-common.c (decl_attributes): Set DECL_SIZE_UNIT.
* c-common.c (decl_attributes): Set DECL_SIZE_UNIT.
	* c-decl.c (duplicate_decls, finish_enum): Likewise.
	(finish_decl): Remove -Wlarger-than code from here.
	* flags.h (id_clash_len): Now int.
	(larger_than_size): Now HOST_WIDE_INT.
	* fold-const.c (size_int_wide): No more HIGH parm; NUMBER is signed.
	Clean up checking to see if in table.
	(make_bit_field_ref): Remove extra parm to bitsize_int.
	* ggc-common.c (ggc_mark_tree_children): Mark DECL_SIZE_UNIT.
	* print-tree.c (print_node): Print DECL_SIZE_UNIT and TYPE_SIZE_UNIT.
	* stmt.c (expand_decl): Use DECL_SIZE_UNIT for stack checking size
	and for computing size of decl.
	* stor-layout.c (layout_decl): Set DECL_SIZE_UNIT.
	Move -Wlarger-than code to here.
	(layout_record): Remove extra arg to bitsize_int.
	Set TYPE_BINFO_SIZE_UNIT.
	(layout_union): Remove extra arg to bitsize_int.
	Use proper type for size of QUAL_UNION.
	(layout_type): Remove extra arg to bitsize_int.
	* toplev.c (id_clash_len): Now int.
	(larger_than_size): Now HOST_WIDE_INT.
	(decode_W_option): Clean up id-clash and larger-than- cases.
	* tree.c (get_identifier, maybe_get_identifier): Remove unneeded casts.
	(expr_align, case FUNCTION_DECL): DECL_ALIGN is not defined.
	* tree.h (BINFO_SIZE_UNIT, TYPE_BINFO_SIZE_UNIT, DECL_SIZE_UNIT): New.
	(struct tree_decl): New field size_unit.
	(size_int_wide): No HIGH operand; NUMBER is now signed.
	(size_int_2): Deleted.
	(size_int, bitsize_int): Don't use it and rework args.
	* varasm.c (assemble_variable, output_constructor): Use DECL_SIZE_UNIT.
	* ch/decl.c (layout_enum): Set DECL_SIZE_UNIT.
	* ch/satisfy.c (safe_satisfy_decl): Likewise.
	* cp/class.c (build_primary_vtable, layout_vtable_decl): Likewise.
	(avoid_overlap, build_base_field): Likewise.
	(build_base_field, build_base_fields, is_empty_class):
	Test DECL_SIZE with integer_zero.
	(layout_class_type): Set CLASSTYPE_SIZE_UNIT.
	* cp/cp-tree.h (struct lang_type): New field size_unit.
	(CLASSTYPE_SIZE_UNIT): New macro.
	* cp/decl.c (init_decl_processing): Set DECL_SIZE_UNIT.
	(cp_finish_decl): Delete -Wlarger-than processing.
	* cp/optimize.c (remap_decl): Walk DECL_SIZE_UNIT.
	* cp/pt.c (tsubst_decl): Set DECL_SIZE_UNIT.
	* cp/tree.c (make_binfo): binfo vector is one entry longer.
	(walk_tree): Walk DECL_SIZE_UNIT.
	* f/com.c (ffecom_sym_transform): Use DECL_SIZE_UNIT.
	(ffecom_transform_common_, ffecom_transform_equiv_): Likewise.
	(duplicate_decls): Likewise.
	(ffecom_tree_canonize_ptr_): Delete extra arg to bitsize_int.
	(finish_decl): Delete -Wlarger-than processing.
	* java/class.c (build_class_ref, push_super_field): Set DECL_SIZE_UNIT.
	* java/constants.c (build_constants_constructor): Likewise.

From-SVN: r32068
2000-02-19 20:11:00 -05:00
Jim Wilson
aa1eac0c9f Fix winsup (cygwin) build failure with VLAs and inline functions.
* cp/optimize.c (remap_decl): Add walk_tree calls for DECL_SIZE (t)
	and TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (t))).

From-SVN: r31663
2000-01-27 20:56:59 -08:00
J"orn Rennecke
e09d24ffb1 calls.c (special_function_p): New argument fork_or_exec.
gcc:
	* calls.c (special_function_p): New argument fork_or_exec.
	(expand_call): When profile_arc_flag is set and the function
	is in the fork_or_exec group, call __bb_fork_func first.
	* libgcc2.c, _bb module (__bb_fork_func): New function.
	(__bb_exit_func): If fcntl F_SETLKW is available, use it to lock
	output file.
	* config/svr4.h (TARGET_HAS_F_SETLKW): Define.
	* tree.h (special_function_p): Update prototype.

gcc/cp:
	* cp/optimize.c (calls_setjmp_r): Supply new argument
	to special_function_p.

From-SVN: r31635
2000-01-26 22:27:31 +00:00
Kaveh R. Ghazi
158991b7e5 call.c: PROTO -> PARAMS.
* call.c: PROTO -> PARAMS.
        * class.c: Likewise.
        * cp-tree.h: Likewise.
        * cvt.c: Likewise.
        * decl.c: Likewise.
        * decl.h: Likewise.
        * decl2.c: Likewise.
        * dump.c: Likewise.
        * errfn.c: Likewise.
        * error.c: Likewise.
        * except.c: Likewise.
        * expr.c: Likewise.
        * init.c: Likewise.
        * input.c: Likewise.
        * lex.c: Likewise.
        * lex.h: Likewise.
        * method.c: Likewise.
        * optimize.c: Likewise.
        * parse.y: Likewise.
        * pt.c: Likewise.
        * repo.c: Likewise.
        * rtti.c: Likewise.
        * search.c: Likewise.
        * semantics.c: Likewise.
        * spew.c: Likewise.
        * tree.c: Likewise.
        * typeck.c: Likewise.
        * typeck2.c: Likewise.
        * xref.c: Likewise.

From-SVN: r31632
2000-01-26 20:51:37 +00:00
Mark Mitchell
ef97bf6bdd optimize.c (copy_body_r): Clear the operand three of a TARGET_EXPR when copying it.
* optimize.c (copy_body_r): Clear the operand three of a
	TARGET_EXPR when copying it.

From-SVN: r31435
2000-01-15 04:36:04 +00:00
Mark Mitchell
a97901e608 Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
* Makefile.in (INTREGRATE_H): Rename to INTEGRATE_H.
	* function.c (insert_block_after_note): Remove.
	(retrofit_block): Likewise.
	(identify_blocks): Fix indentation.
	(reorder_blocks): Don't NULL out NOTE_SOURCE_FILE for a
	NOTE_INSN_BLOCK_BEG or NOTE_INSN_BLOCK_END.
	* function.h (insert_block_after_note): Remove prototype.
	(retrofit_block): Likewise.
	* integrate.c (expand_inline_function): Don't call
	find_loop_tree_blocks.  Use expand_start_bindings_and_block, not
	just expand_start_bindings.  Use the block_map to remap old
	NOTE_BLOCKs to new ones.
	(integrate_decl_tree): Keep track of remapped blocks.
	* integrate.h (struct inline_remap): Add block_map.
	* stmt.c (expand_fixup): Don't try to retrofit_blocks.  Just set
	NOTE_BLOCK on the notes.
	(expand_start_bindings): Rename to ...
	(expand_start_bindings_and_block): Add parameter.  Set NOTE_BLOCK.
	(expand_end_bindings): Set NOTE_BLOCK.
	* toplev.c (rest_of_compilation): In function-at-a-time-mode,
	reconstruct the BLOCK tree.
	* tree.h (expand_start_bindings): Macroize.  Call ...
	(expand_start_bindings_and_block): New function.

	* optimize.c (struct inline_data): Remove scope_stmt.
	(remap_block): Don't use insert_block_after_note.  Don't update
	scope_stmt.
	(expand_call_inline): Don't update scope_stmt.
	(optimize_function): Don't initialize scope_stmt.
	* semantics.c (expand_stmt): Set NOTE_BLOCK for newly emitted
	NOTE_INSN_BLOCK_BEG/NOTE_INSN_BLOCK_END notes.

From-SVN: r30982
1999-12-16 17:50:29 +00:00
Jason Merrill
5afb79e7f8 function.c (retrofit_block): Abort if we don't find a suitable insn.
* function.c (retrofit_block): Abort if we don't find a suitable insn.
        (insert_block_after_note): Abort if we don't have a previous block.
        Remove FN parameter.
        * function.h: Adjust.

        * tree.c (walk_tree): Walk operand subtrees in forward order.
        * optimize.c (expand_call_inline): Likewise.
        (optimize_function): Initialize id->scope_stmt to something useful.
        (remap_block): Assume id->scope_stmt has a useful value.

From-SVN: r30965
1999-12-15 19:09:35 -05:00
Jason Merrill
8890f3d8df tweak comments
From-SVN: r30961
1999-12-15 14:33:38 -05:00
Jason Merrill
8cb360d3a2 optimize.c (expand_call_inline): Set BLOCK_ABSTRACT_ORIGIN on the outermost block to point to the inlined...
* optimize.c (expand_call_inline): Set BLOCK_ABSTRACT_ORIGIN on the
        outermost block to point to the inlined function decl.

From-SVN: r30945
1999-12-15 04:03:06 -05:00
Mark Mitchell
d7d5e42f2d cp-tree.h (remap_save_expr): Add walk_subtrees parameter.
* cp-tree.h (remap_save_expr): Add walk_subtrees parameter.
	* optimize.c (copy_body_r): Pass it.
	* tree.c (remap_save_expr): Clear walk_subtrees for an
	already-handled SAVE_EXPR.
	(cp_unsave_r): Pass walk_subtrees to remap_save_expr.

From-SVN: r30926
1999-12-14 18:52:40 +00:00
Mark Mitchell
92e8164f76 optimize.c (initialize_inlined_parameters): Take FN to which the parameters belong as an argument.
* optimize.c (initialize_inlined_parameters): Take FN to which the
	parameters belong as an argument.
	(expand_call_inline): Expand calls into the parameter
	initializations before pushing the function onto the list of
	functions we are presently expanding.

From-SVN: r30888
1999-12-13 08:40:04 +00:00
Kaveh R. Ghazi
486837a79c class.c (get_vtable_name): Use a literal format string and VTABLE_NAME_PREFIX macro instead of...
* class.c (get_vtable_name): Use a literal format string and
	VTABLE_NAME_PREFIX macro instead of VTABLE_NAME_FORMAT.
	(prepare_fresh_vtable): Likewise.

	* cp-tree.h (VTABLE_NAME_PREFIX): Define this instead of
	VTABLE_NAME_FORMAT.

	* decl.c (make_rtl_for_local_static): Remove unused variable `type'.

	* init.c (build_vec_init): Initialize variable `try_body'.

	* lex.c (yyerror): Don't call a variadic function with a
	non-literal format string.

	* optimize.c (optimize_function): Call memset, not bzero.

	* pt.c (for_each_template_parm_r): Add static prototype.

From-SVN: r30868
1999-12-11 19:02:10 +00:00
Mark Mitchell
95fabfd362 cp-tree.h (calls_setjmp_p): Declare.
* cp-tree.h (calls_setjmp_p): Declare.
	* decl.c (finish_function): Mark functions that call setjmp as
	uninlinable.
	* optimize.c (calls_setjmp_r): New function.
	(calls_setjmp_p): Likewise.

From-SVN: r30789
1999-12-05 17:58:46 +00:00
Mark Mitchell
5679f67863 optimize.c (expand_call_inline): Wrap the expanded call in an EXPR_WITH_FILE_LOCATION node to get correct line...
* optimize.c (expand_call_inline): Wrap the expanded call in an
	EXPR_WITH_FILE_LOCATION node to get correct line numbers for
	inlined functions.

From-SVN: r30784
1999-12-05 02:46:48 +00:00
Mark Mitchell
390f4e9a7d optimize.c (inline_data): Remove fns_top.
* optimize.c (inline_data): Remove fns_top.  Add scope_stmt.  Add
	in_target_cleanup_p.
	(remap_decl): New function.
	(remap_block): Likewise.
	(copy_scope_stmt): Likewise.
	(copy_body_r): Use remap_decl and copy_scope_stmt.
	(copy_body): Use VARRAY_TOP_TREE.
	(initialize_inlined_parameters): Likewise.
	(declare_return_variable): Likewise.
	(inlinable_function_p): Check flag_inline_trees.
	(expand_call_inline): Handle SCOPE_STMTs and TARGET_EXPRs
	specially.  Use VARRAY_PUSH_TREE.  Create a BLOCK for the
	parameters of the inlined function.
	(optimize_function): Prevent recursion into partially complete
	functions.

From-SVN: r30781
1999-12-05 01:00:28 +00:00
Mark Mitchell
46e8c075d0 Make-lang.in (CXX_SRCS): Add optimize.c.
1999-11-25  Mark Mitchell  <mark@codesourcery.com>

	* Make-lang.in (CXX_SRCS): Add optimize.c.
	* Makefile.in (CXX_OBJS): Add optimize.o.
	(CXX_TREE_H): Add splay-tree.h, system.h, and $(CONFIG_H).
	(spew.o, lex.o, decl.o, decl2.o, typeck2.o, typeck.o): Adjust.
	(class.o, call.o, friend.o, init.o, method.o, cvt.o): Likewise.
	(search.o, tree.o, ptree.o, rtti.o, except.o, expr.o): Likewise.
	(xref.o, pt.o, error.o, errfn.o, repo.o, semantics.o): Likewise.
	(dump.o): Likewise.
	(optimize.o): New target.
	* class.c: Don't include splay-tree.h.
	* cp-tree.def (CTOR_COMPLETE): Rename to CTOR_STMT.
	* cp-tree.h: Include splay-tree.h.
	(DECL_UNINLINABLE): New macro.
	(CTOR_BEGIN_P, CTOR_END_P): New macros.
	(flag_inline_trees): New variable.
	(local_variable_p): New function.
	(nonstatic_local_decl_p): Likewise.
	(optimize_function): Likewise.
	(cplus_unsave_expr_now): Remove.
	(copy_tree_r): Declare.
	(remap_save_expr): Likewise.
	* decl.c (local_variable_p): Don't
	make it static.
	(local_variable_p_walkfn): New function.
	(make_rtl_for_local_static): Remove code to try to avoid writing
	out static constants.
	(emit_local_var): Fix indentation.
	(nonstatic_local_decl_p): New function.
	(check_default_argument): Use local_variable_p_walkfn, not
	local_variable_p, when walking the tree.
	(start_function): Set the DECL_CONTEXT for automatically generated
	labels.
	(finish_constructor_body): Use CTOR_STMT to mark the end of a
	constructor.
	* decl2.c: Don't include splay-tree.h.
	(flag_inline_trees): Define.
	* dump.c: Don't include
	splay-tree.h.
	* except.c (expand_end_catch_block): Fix comment formatting.
	(expand_end_eh_spec): Set DECL_CONTEXT on temporary variables.
	(expand_throw): Tidy comment.
	* init.c (build_vec_delete_1): Use create_temporary_var.
	* lex.c (cplus_tree_code_type): Make it static.
	(cplus_tree_code_length): Likewise.
	(cplus_tree_code_name): Likewise.
	* optimize.c: New file.
	* semantics.c (finish_goto_stmt): Set DECL_UNLINABLE for functions
	with computed gotos.
	(setup_vtbl_ptr): Mark the beginnings of constructors with
	CTOR_STMT.
	(expand_stmt): Handle CTOR_STMT, not CTOR_COMPLETE.
	(expand_body): Call optimize_function.  Save bodies if we're doing
	inlining on trees.
	* tree.c: Don't include splay-tree.h.  Include insn-config.h and
	integrate.h.
	(copy_tree_r): Make it public.
	(statement_code_p): New function.
	(mark_local_for_remap_r): Likewise.
	(cp_usave_r): Likewise.
	(cp_unsave): Likewise.
	(build_cplus_new): Set DECL_CONTEXT for temporary variables.
	(walk_tree): Walk into `s' class nodes.  Walk statement chains.
	(copy_tree_r): Handle 's' class nodes.  Restore chains for
	statements.  Nullify scopes.  Don't copy types.
	(init_tree): Set lang_unsave to cp_unsave.
	(remap_save_expr): Define.
	* ir.texi: Document CTOR_STMT.

From-SVN: r30669
1999-11-25 20:32:04 +00:00