PR middle-end/16460
* cgraph.c (cgraph_unnest_node): New function.
(c_finalize): Rename to ....
(c_warn_unused_result_recursivly): ... this one; do only the warning
(finish_function): Finalize the toplevel function; do not lower nested tree.
* cgraph.h (cgraph_unnest_node): Declare.
* cgraphunit.c (decide_is_function_needed): Do not use cgraph
nestedness datastructure.
* cse.c (cse_insn): Do not cprop nonlocal LABEL_REFs.
* reload1.c (set_label_offsets): Fix call of set_label_offsets.
* tree-nested.c (finlize_nesting_tree_1): Use un-nesting code.
* utils.c (gnat_finalize): Remove.
(end_subprog_body): Directly call cgraph_finalize_function;
do not lower the nested functions.
* trans-decl.c (build_entry_thunks): Finalize the function; do not lower
tree.
(gfc_generate_function_code): Likewise.
From-SVN: r87770
New code to analyze file level static variables and to determine if
they escape and also code to use this information to prune clobber
lists.
From-SVN: r87455
* cgraph.c (cgraph_remove_node): Free DECL_INITIAL field of node.
* cgraphunit.c (verify_cgraph): Don't verify on syntax errors.
(cgraph_expand_function): Remove stale cgraph edges of currently
compiled function; fix non-unit-at-a-time code copying function
node for later reuse.
From-SVN: r87181
2004-05-22 Andrew Pinski <pinskia@physics.uc.edu>
* c-common.c (c_common_truthvalue_conversion): Handle
UNEQ_EXPR, UNLE_EXPR, UNGE_EXPR, UNLT_EXPR, UNGT_EXPR,
ORDERED_EXPR, and UNORDERED_EXPR as comparison operators,
i.e. set the type to truthvalue_type_node and return.
2004-05-22 Zack Weinberg <zack@codesourcery.com>
* tree.h (struct tree_decl): Add possibly_inlined bit.
(DECL_POSSIBLY_INLINED): New accessor macro.
* cgraph.h: Remove declaration of cgraph_inline_hash.
* cgraph.c: Remove definition of cgraph_inline_hash.
(hash_node): Revert to hashing DECL_UID.
(eq_node): Take two pointers to cgraph_node structures.
Compare DECL_UIDs.
(cgraph_remove_node): Pass the node directly to htab_find_slot.
(cgraph_varpool_hash_node): Rename hash_varpool_node;
hash on DECL_UID.
(eq_cgraph_varpool_node): Rename eq_varpool_node; take two
pointers to cgraph_varpool_node structures; compare DECL_UIDs.
(cgraph_node): Allocate a temporary node on the stack, fill in
its DECL field, and pass that to htab_find_slot.
(cgraph_varpool_node): Likewise.
(cgraph_function_possibly_inlined_p): If global info is ready,
return the DECL_POSSIBLY_INLINED bit.
* cgraphunit.c (cgraph_mark_inline_edge): Set DECL_POSSIBLY_INLINED
instead of mucking with cgraph_inline_hash.
From-SVN: r82140
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
(cgraph_varpool_node): Hash on the pointer to the decl, not
the DECL_UID. Fixes 64-bit bootstrap failure.
From-SVN: r82059
(cgraph_varpool_hash_node, eq_cgraph_varpool_node)
(cgraph_varpool_node):
Use DECL_UID for the key, not DECL_ASSEMBLER_NAME.
(cgraph_function_possibly_inlined_p): Use the decl itself for
the key, not DECL_ASSEMBLER_NAME.
(change_decl_assembler_name): No need to muck with the hash tables.
(cgraph_node_for_identifier, cgraph_varpool_node_for_identifier):
Delete.
* cgraphunit.c (cgraph_mark_inline_edge): Use the decl itself
for the key, not DECL_ASSEMBLER_NAME.
* cgraph.h: Remove prototypes of deleted functions.
* varasm.c (mark_referenced): Just set TREE_SYMBOL_REFERENCED.
(mark_decl_referenced): New function.
* tree.h: Prototype mark_decl_referenced.
* final.c (output_addr_const) <case SYMBOL_REF>: Call
mark_decl_referenced before assemble_name.
* c-decl.c (finish_decl): Use mark_decl_referenced.
cp:
* decl.c (cp_finish_decl): Use mark_decl_referenced.
* decl2.c (maybe_make_one_only): Likewise.
* method.c (use_thunk): Likewise.
From-SVN: r82015
PR c++/12850
* cgraph.c (cgraph_remove_node): Clear out saved/insns/arguments and
initial pointers.
* cgraphunit.c (cgraph_finalize_function): Clear out DECL_SAVED_INSNS
for functions that will be only inlined.
(cgraph_mark_function_to_output): Likewise.
(cgraph_expand_function): Sanity check that DECL_DEFER_OUTPUT is clear;
do not clear function body.
* tree-optimize.c (clear_decl_rtl): Use decl_function_context.
(tree_rest_of_compilation): Reorganize the logic releasing function
body to use callgraph datastructure.
From-SVN: r76822
PR debug/12389
* Makefile.in (dwarf2out.o): Depend on cgraph.h.
* cgraph.c (cgraph_function_possibly_inlined_p): New function.
* cgraph.h (cgraph_function_possibly_inlined_p): Declare.
(cgraph_global_info): Add flag inlined
* dwarf2out.c (gen_subprogram_die, gen_decl_die): Use
cgraph_function_possibly_inded_p
* cgraphunit.c (mark_inline): Set inlined flag.
* toplev.c (rest_of_decl_compilation): Call outlining_inline_function
only for possibly inlined functions.
* c-decl.c (duplicate_decls): Never output abstract DIE representing old
body of function.
From-SVN: r72795
* cgraph.c (cgraph_node): Use INSERT instead of 1 in
htab_find_slot_with_hash.
(cgraph_node_for_identifier): Use NO_INSERT.
(cgraph_remove_node): Use NO_INSERT.
(cgraph_varpool_node): Use INSERT.
(cgraph_varpool_node_for_identifier): Use NO_INSERT.
From-SVN: r72031
2003-09-23 Kelley Cook <kelleycook@wideopenwest.com>
* cgraph.c (dump_cgraph): Don't output newline before dump. Add in
"local" to the callgraph dump. Output "after inlining" earlier.
* cgraphunit.c: Fix dumpfile whitespace and commonize headers of the
callgraph dumps. Correct misspellings.
(cgraph_decide_inlining): Output number of insns before inlining.
Output the calling function into which a function is inlined.
(cgraph_decide_small_functions): Format dump file like always_inline.
From-SVN: r71804
* cgraph.c (cgraph_varpool_finalize_decl): Sanity check duplicated
finalization.
* cgraphunit.c (decide_is_fnction_needed): Avoid special case of nested
functions, check for COMDAT.
(cgraph_assemble_pending_functions): Break out from...
(cgraph_finalize_function): ... here; allow redefinig of extern inline
functions.
(record_call_1): Record function references only in non-unit-at-a-time
mode.
(cgraph_analyze_function): Reset current_function_decl.
(cgraph_finalize_compilation_unit): Assemble pending functions.
From-SVN: r71221
* cgraph.c (cgraph_mark_reachable_node): Only enqueue finalized
functions.
(cgraph_varpool_finalize_decl): Notice global symbol when needed.
From-SVN: r71149
* cgraph.c (cgraph_mark_reachable_node): Split out from ...
(cgraph_mark_needed_node): Remove needed argument.
* cgraph.h: Update to match.
* cgraphunit.c (decide_is_function_needed): Split out from ...
(cgraph_finalize_function): Reorg. Avoid deferred_inline_function
if we generated the function.
(record_call_1): Update for cgraph_mark_reachable_node.
* varasm.c (mark_referenced): Likewise.
* objc/objc-act.c (mark_referenced_methods): Likewise.
* decl2.c (mark_member_pointers_and_eh_handlers): Update for
change in cgraph_mark_needed_node arguments.
From-SVN: r71104
* i386.c (ix86_fntype_regparm): Rename from ...
(ix86_function_regparm): ... this one; add fastcall and local
functions.
(ix86_function_ok_for_sibcall): Update.
(ix86_return_pops_args): Likewise.
(init_cumulative_args): Likewise.
(x86_can_output_mi_thunk): Likewise.
(function_arg): Fix formating.
(x86_this_parameter): Fix fastcall.
(x86_output_mi_thunk): Likewise.
* cgraph.c (cgraph_mark_needed_node): Do not mark functions without
body as reachable; mark nested functions as needed too.
(dump_cgraph): Do not output global.calls.
* cgraph.h (cgraph_global_info): Kill.
* cgraphunit.c (cgraph_finalize_function): Enqueue needed functions.
(record_call_1): Speedup.
(cgraph_analyze_function): Break out from ...; compute inlining
parameters.
(cgraph_finalize_compilation_unit): ... here.
(cgraph_mark_inline): Kill computation of calls.
(cgraph_decide_inlining): Do not compute most of initial values.
From-SVN: r70504
2003-08-05 Steven Bosscher <steven@gcc.gnu.org>
* tree.h (DID_INLINE_FUNC): Remove macro.
(DECL_DECLARED_INLINE_P): Move from c-tree.h and cp/cp-tree.h,
add tree check for FUNCTION_DECL.
(DECL_ESTIMATED_INSNS): Move from c-common.h and java/java-tree.h.
(struct tree_decl): Rename inlined_function_flag to
declared_inline_flag.
* c-common.h (c_lang_decl): Remove.
(DECL_ESTIMATED_INSNS): Remove.
* c-tree.h (struct lang_decl): Don't include c_lang_decl.
(DECL_DECLARED_INLINE_P): Remove.
* c-decl.c (grokdeclarator): Update comment. With -finline-functions,
do not reset DECL_DECLARED_INLINE_P. Don't use DID_INLINE_FUNC.
(finish_function): Make uninlinable a bool. Fixup call to
tree_inlinable_function_p() and fix some code style issues.
* cgraph.h (disgread_inline_limits): Fix spelling: `disregard'.
* cgraph.c (dump_cgraph): Likewise.
* cgraphunit.c (cgraph_decide_inlining): Likewise
(cgraph_finalize_compilation_unit): Likewise.
Also update call to tree_inlinable_function_p().
(cgraph_default_inline_p): Don't use DID_INLINE_FUNC. Instead
look at DECL_DECLARED_INLINE and reverse logic.
* print-tree.c (print_node): Likewise.
* toplev.c (rest_of_handle_inlining): Don't use DID_INLINE_FUNC.
* tree-inline.h (tree_inlinable_function_p): Make a bool. Update
prototype.
* tree-inline.c (inlinable_function_p): Split up in this function to
check for basic inlining inhibiting conditions, and new
limits_allow_inlining() function. Warn if inlining is impossible
because the inline candidate calls alloca or uses sjlj exceptions.
(limits_allow_inlining): this new function to check if the inlining
limits are satisfied. Throttle from currfn_max_inline_insns, not from
MAX_INLINE_INSNS_SINGLE. The latter only makes sense if
MAX_INLINE_INSNS_AUTO and MAX_INLINE_INSNS_SINGLE are equal.
Update prototypes.
(tree_inlinable_function_p): Make a bool. Update call to
inlinable_function_p
(expand_call_inline): Use limits_allow_inlining() when not in
unit-at-a-time mode to decide on inlining. Don't use DID_INLINE_FUNC,
instead see if the function was declared `inline'.
cp/
* cp-tree.h (struct lang_decl): Don't include c_lang_decl.
(DECL_DECLARED_INLINE_P): Remove.
* decl2.c (import_export_decl): Only look at DECL_DECLARED_INLINE_P
if decl is a FUNCTION_DECL. This never made sense, but now it is
required to avoid a tree check failure.
* decl.c (grokfndecl): Don't touch DID_INLINE_FUNC.
* optimize.c (maybe_clone_body): Likewise.
java/
* java-tree.h (DECL_ESTIMATED_INSNS): Remove.
From-SVN: r70174
* cgraph.c (cgraph_mark_needed_node, cgraph_varpool_mark_needed_node,
cgraph_varpool_finalize_decl, cgraph_varpool_assemble_pending_decls):
Use next_needed field instead of aux to maintain the queue.
* cgraph.h (cgraph_node): Add next_needed.
(cgraph_varpool_node): Add next_needed; remove aux.
* cgraphunit.c (cgraph_finalize_compilation_unit): Use next_needed.
From-SVN: r68807
* cgraph.c (cgraph_nodes_queue): Declare.
(eq_node): Take identifier as p2.
(cgraph_node): Update htab_find_slot_with_hash call.
(cgraph_node_for_identifier): New.
(cgraph_mark_needed_node): Move here from cgraphunit.c.
* cgraph.h (cgraph_nodes_queue): Declare.
(cgraph_node_for_identifier): Declare.
* cgraphunit.c (cgraph_finalize_function): Collect entry points here
instead of in cgraph_finalize_compilation_unit; constructors and
destructors are entry points.
(cgraph_finalize_compilation_unit): Reorganize debug outout;
examine nested functions after lowerng; call collect_functions hook.
(cgraph_mark_local_functions): DECL_COMDAT functions are not local.
(cgraph_finalize_compilation_unit): Do not collect entry points.
* varasm.c: Include cgraph.h
(assemble_name): Mark referenced identifier as needed.
* cgraphunit.c (record_call_1): Use get_callee_fndecl.
From-SVN: r68390
* Makefile.in (cgraph.o): Depend on gt-cgraph.h and varray.h.
* gt-cgraph.h: New GC file.
* cgraph.c (known_fns): New static variable.
(cgraph_node): Add the decl into varray.
From-SVN: r63998