diff options
author | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-13 06:41:07 +0000 |
---|---|---|
committer | dnovillo <dnovillo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-05-13 06:41:07 +0000 |
commit | 4ee9c6840ad3fc92a9034343278a1e476ad6872a (patch) | |
tree | a2568888a519c077427b133de9ece5879a8484a5 /gcc/ChangeLog | |
parent | ebb338380ab170c91e64d38038e6b5ce930d69a1 (diff) | |
download | gcc-4ee9c6840ad3fc92a9034343278a1e476ad6872a.tar.gz |
Merge tree-ssa-20020619-branch into mainline.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@81764 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ChangeLog')
-rw-r--r-- | gcc/ChangeLog | 1123 |
1 files changed, 1123 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5891803f9a8..46d8d2e8f68 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,1126 @@ +2004-05-13 Diego Novillo <dnovillo@redhat.com> + + Merge from tree-ssa-20020619-branch. + + * Makefile.in (reload1.o-warn): Add. + (tree-alias-ander.o-warn): Add. + (GMPLIBS): Define. + (GMPINC): Define. + (BANSHEELIB): Define. + (BANSHEEINC): Define. + (TREE_DUMP_H): Define. + (TREE_SIMPLE_H): Define. + (TREE_FLOW_H): Define. + (LIBDEPS): Add BANSHEELIB. + (INCLUDES): Add BANSHEEINC and GMPINC. + (C_AND_OBJC_OBJS): Add c-simplify.o, tree-mudflap.o, + c-mudflap.o and c-pretty-print.o. + (C_OBJS): Remove c-pretty-print.o. + (OBJS-common): Remove sibcall.o. + Add tree-cfg.o, tree-dfa.o, tree-eh.o, + tree-ssa.o, tree-optimize.o, tree-simple.o, + tree-alias-type.o, gimplify.o, tree-pretty-print.o, + tree-into-ssa.o, tree-outof-ssa.o, tree-alias-common.o, + tree-ssa-ccp.o, @ANDER@, tree-ssa-dce.o, tree-ssa-copy.o, + tree-nrv.o, tree-ssa-copyrename.o, tree-ssa-pre.o, + tree-ssa-live.o, tree-ssa-operands.o, tree-ssa-alias.o, + tree-ssa-phiopt.o, tree-ssa-forwprop.o, tree-nested.o, + tree-ssa-dse.o, tree-ssa-dom.o, domwalk.o, + tree-tailcall.o, gimple-low.o, tree-iterator.o, + tree-phinodes.o, tree-ssanames.o, tree-sra.o, + tree-complex.o, tree-ssa-loop.o, rtl-profile.o and + tree-profile.o. + (OBJC-archive): Add tree-nomudflap.o. + (cc1): Add dependency on @TREEBROWSER@. + (c-decl.o): Add dependency on TREE_DUMP_H. + (c-dump.o): Likewise. + (c-common.o): Add dependency on tree-iterator.h + (c-pretty-print.o): Add dependency on DIAGNOSTIC_H. + (gtype-desc.o): Add dependency on TREE_FLOW_H. + (tree.o): Add dependency on tree-iterator.h, + BASIC_BLOCK_H and TREE_FLOW_H. + (tree-dump.o): Depend on TREE_DUMP_H instead of tree-dump.h. + (langhooks.o): Add dependency on TREE_SIMPLE_H. + (tree-alias-type.o, tree-alias-ander.o, + tree-alias-common.o, tree-ssa.o, tree-into-ssa.o, + tree-outof-ssa.o, tree-ssa-dse.o, tree-ssa-forwprop.o, + tree-ssa-phiopt.o, tree-nrv.o, tree-ssa-copy.o, + tree-ssa-dom.o, tree-ssanames.o, tree-phinodes.o, + domwalk.o, tree-ssa-live.o, tree-ssa-copyrename.o, + tree-ssa-pre.o, tree-cfg.o, tree-tailcall.o, + tree-nested.o, tree-iterator.o, tree-dfa.o, + tree-ssa-operands.o, tree-eh.o, tree-ssa-loop.o, + tree-ssa-alias.o, tree-optimize.o, c-simplify.o, + gimplify.o, gimple-low.o, tree-browser.o, tree-simple.o, + tree-mudflap.o, c-mudflap.o, tree-nomudflap.o, + tree-pretty-print.o, tree-ssa-dce.o, tree-ssa-ccp.o, + tree-sra.o, tree-complex.o, tree-profile.o, + rtl-profile.o): New rules. + (function.o): Add dependency on basic-block.h + (expr.o): Add dependency on tree-iterator.h. + (sibcall.o): Remove. + (profile.o): Depend on TREE_FLOW_H instead of TREE_H. + (cfg.o): Add dependency on TIMEVAR_H. + (cfghooks.o): Add dependency on TREE_FLOW_H. + (reg-stack.o): Add dependency on basic-block.h. + (GTFILES): Add hwint.h, tree-mudflaph.c, tree-flow.h, + c-objc-common.c, c-common.c, c-parse.in, tree-ssanames.c, + tree-eh.c, tree-phinodes.c, tree-cfg.c, tree-dfa.c, + tree-ssa-ccp.c, tree-iterator.c, gimplify.c, + tree-alias-type.h, tree-alias-common.h, + tree-alias-type.c, tree-alias-common.c, + tree-ssa-operands.h, tree-ssa-operands.c, tree-profile.c, + rtl-profile.c and tree-nested.c. + (gt-tree-alias-common.h, gt-tree-mudflap.h, + gt-tree-ssa-ccp.h, gt-tree-eh.h, gt-tree-ssanames.h, + gt-tree-iterator.h, gt-gimplify.h, gt-tree-phinodes.h, + gt-tree-cfg.h, gt-tree-nested.h): New rules. + (TEXI_GCCINT_FILES): Add cfg.texi and tree-ssa.texi. + * basic-block.h: Include predict.h + (struct edge_def): Add GTY marker. + Change field 'insns' to be a union of tree and rtx. + (EDGE_TRUE_VALUE): Define. + (EDGE_FALSE_VALUE): Define. + (EDGE_EXECUTABLE): Define. + (struct bb_ann_d): Forward declare. + (struct basic_block_def): Add GTY marker. + Remove fields head_tree and end_tree. + Add fields stmt_list, rbi and tree_annotations. + (struct reorder_block_def): Define. + (basic_block_info): Add GTY marker. + (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Change to global + variables instead of macros. + (flow_call_edges_add): Remove declaration. + (make_eh_edge): Remove declaration. + (brief_dump_cfg, find_edge, tree_predicted_by_p, + rtl_predicted_by_p, tree_predict_edge, rtl_predict_edge, + predict_edge_def, rtl_make_eh_edge, find_basic_blocks, + cleanup_cfg, delete_unreachable_blocks, merge_seq_blocks, + alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): Declare. + (try_redirect_by_replacing_jump): Modfiy return type to + edge instead of bool. + * bb-reorder.c (copy_bb): Call duplicate_block + instead of cfg_layout_duplicate_bb. + (copy_bb_p): Call can_duplicate_block_p instead of + cfg_layout_can_duplicate_bb_p. + * bitmap.c (bitmap_first_set_bit): Abort if word + wasn't found. + (bitmap_last_set_bit): Likewise. + * builtin-types.def (DEF_FUNCTION_TYPE_2): Add + (DEF_FUNCTION_TYPE_3): Add. + * builtins.c (c_strlen): Make extern. + (builtin_save_expr): New. + (expand_builtin_nonlocal_goto): New. + (expand_builtin_constant_p): Remove. + (expand_builtin_mathfn): Call builtin_save_expr instead + of save_expr. + (expand_builtin_mathfn_2): Likewise. + (expand_builtin_strcmp): Likewise. + (expand_builtin_strncmp): Likewise. + (expand_builtin_strcat): Likewise. + (fold_builtin_cabs): Likewise. + (expand_builtin_alloca): Don't trigger if -fmudflap is + given. + (build_string_literal): Set TREE_INVARIANT on new node. + (expand_builtin_profile_fun): New. + (round_trampoline_addr): New. + (expand_builtin_init_trampoline): New. + (expand_builtin_adjust_trampoline): New. + (expand_builtin) <BUILT_IN_NEXT_ARG>: Call simplify_builtin_next_arg. + <BUILT_IN_CONSTANT_P>: Return const0_rtx; + <BUILT_IN_STACK_ALLOC, BUILT_IN_STACK_SAVE, + BUILT_IN_STACK_RESTORE, BUILT_IN_NONLOCAL_GOTO, + BUILT_IN_PROFILE_FUNC_ENTER, BUILT_IN_PROFILE_FUNC_EXIT, + BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE>: + Handle. + (fold_builtin_expect): New. + (fold_builtin_isascii): Don't return non-constant results + in GIMPLE form. + (fold_builtin_isdigit): Likewise. + (fold_builtin_1): New. + (fold_builtin): Call it. + (build_function_call_expr): Update call to build a new + CALL_EXPR. + (purge_builtin_constant_p): Remove. + (simplify_builtin, simplify_builtin_memcmp, + simplify_builtin_strcmp, simplify_builtin_strncmp, + simplify_builtin_strpbrk, simplify_builtin_strstr, + simplify_builtin_strchr, simplify_builtin_strrchr, + simplify_builtin_strcat, simplify_builtin_strncat, + simplify_builtin_strspn, simplify_builtin_strcspn, + simplify_builtin_next_arg, simplify_builtin_va_start, + simplify_builtin_sprintf): New. + * builtins.def (BUILT_IN_STACK_ALLOC, + BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE, + BUILT_IN_INIT_TRAMPOLINE, BUILT_IN_ADJUST_TRAMPOLINE, + BUILT_IN_NONLOCAL_GOTO, BUILT_IN_PROFILE_FUNC_ENTER, + BUILT_IN_PROFILE_FUNC_EXIT): Define. + * c-common.c: Include tree-iterator.h and hashtab.h. + (lang_statement_code_p): Declare. + (lang_gimplify_stmt): Declare. + (fix_string_type): Set TREE_INVARIANT for value. + (pointer_int_sum): Rely on build to set TREE_CONSTANT. + (c_type_hash): New. + (c_common_get_alias_set): Handle multiple type nodes + referring to "the same" type, currently for C90 only. + (c_add_case_label): Use create_artificial_label. + (finish_label_address_expr): Don't set TREE_CONSTANT on + result. + (c_expand_expr): Don't handle STMT_EXPR. + (handle_alias_attribute): Marke aliased variables to be + TREE_STATIC. + (handle_nonnull_attribute): Initialize arg_num. + (check_function_nonnull): Likewise. + (c_walk_subtrees): New. + (c_estimate_num_insns_1): Don't handle + EXPR_WITH_FILE_LOCATION nor FILE_STMT. + (c_decl_uninit_1): Remove. + (c_decl_uninit): Remove. + (c_warn_unused_result): New. + * c-common.def (ASM_STMT): Change number of operands + to 4. + (FILE_STMT): Remove. + * c-common.h (lang_expand_stmt, lang_expand_decl_stmt): + Remove. + (lang_gimplify_stmt): Add. + (expand_stmt): Remove. + (ASM_CV_QUAL, ASM_STRING, ASM_OUTPUTS, ASM_INPUTS, + ASM_CLOBBERS, STMT_EXPR_WARN_UNUSED_RESULT, + ASM_VOLATILE_P, FILE_STMT_FILENAME_NODE, + FILE_STMT_FILENAME, STMT_LINENO, STMT_LINENO_FOR_FN_P, + ASM_INPUT_P, DECL_C_HARD_REGISTER): Remove. + (genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt, + genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt, + genrtl_while_stmt, genrtl_do_stmt, genrtl_return_stmt, + genrtl_for_stmt, genrtl_break_stmt, genrtl_continue_stmt, + genrtl_scope_stmt, genrtl_switch_stmt, genrtl_case_label, + genrtl_compound_stmt, genrtl_asm_stmt, + genrtl_cleanup_stmt, c_decl_uninit): Remove. + (c_do_switch_warnings, c_gimplify_expr, c_walk_subtrees, + c_tree_chain_matters_p, c_warn_unused_result, + c_genericize, c_gimplify_stmt, stmt_expr_last_stmt): + Declare. + * c-convert.c (convert): Make convert work when + converting to compatible types across translation unit. + * c-decl.c: Include langhooks.h, tree-mudflap.h, + tree-simple.h, diagnostic.h and tree-dump.h + (merge_decls): Initialize oldtype to NULL. + (finish_decl): Use DECL_HARD_REGISTER instead of + DECL_C_HARD_REGISTER. + (check_bitfield_type_and_width): Check for null + lang_type_specific when check the precision of an enum. + (grokdeclarator): Immediately layout an ARRAY_TYPE used + in a pointer-to-array declarator. + (finish_struct): Clear allocated struct lang_type. + (finish_enum): Set enum_min and enum_max. Set + TYPE_MIN/MAX_VALUE to the limits of the compatible type, + not to the enumerators. + (set_decl_nonlocal): New. + (store_parm_decls): Use it via walk_tree. + (c_finalize): New. + (finish_function): When !targetm.have_ctors_dtors, + record static constructors and destructors here... + (c_expand_body_1): ... not here. + (c_expand_decl): Rename from c_expand_decl_stmt. + Handle all C-specific expansion semantics. + * c-dump.c (dump_stmt): Use EXPR_LOCUS instead of + STMT_LINENO. + * c-format.c (handle_format_arg_attribute): Initialize + format_num. + * c-lang.c: Include tree-inline.h + (LANG_HOOKS_EXPAND_DECL, + LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P, + LANG_HOOKS_TREE_INLINING_WALK_SUBTREES, + LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P, + LANG_HOOKS_GIMPLIFY_EXPR, LANG_HOOKS_TYPES_COMPATIBLE_P): Define. + (LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_STMT, + LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Remove. + (c_types_compatible_p): New. + * c-mudflap.c: New file. + * c-objc-common.c: Include tree-mudflap.h + (start_cdtor, finish_cdtor): Collapse + together into + (build_cdtor): ...here. Update to construct a complete tree + for the function. No need to call push_scope, pop_scope, or + clear_last_expr, or set current_function_cannot_inline. + (c_missing_noreturn_ok_p): Change prototype to return + bool. + (c_objc_common_init): Don't set lang_missing_noreturn_ok_p. + * c-opts.c (c_common_handle_option): Move handling of -fdump- to + opts.c. + (c_common_post_options): Don't ever use rtl inlining. + * c-parse.in: Use EXPR_LOCUS instead of STMT_LINENO. + * c-pragma.c (handle_pragma_redefine_extname): Define + always. + (init_pragma): Activate #pragma redefine_extname for mudflap. + * c-pretty-print.c (pp_c_statement): Remove FILE_STMT. + (pp_c_initializer): Accept any type CONSTRUCTOR. + (pp_c_initializer_list): Fix code expectations for VECTOR_TYPE and + COMPLEX_TYPE. + (decl_name_str): New local function. + (pp_c_direct_declarator): Call it. + (pp_c_primary_expression): Call it. + (pp_c_id_expression): Call it. + (pp_c_statement): Call it. + (print_c_tree): Create new pp object. + * c-pretty-print.h (pp_c_tree_decl_identifier, + print_c_tree): Declare. + * c-semantics.c: Include langhooks.h + (lang_expand_stmt, lang_expand_decl_stmt, + find_reachable_label_1, find_reachable_label, + expand_unreachable_if_stmt, expand_unreachable_stmt, + genrtl_do_stmt_1): Remove. + (begin_stmt_tree): Don't check for changed filename. + Call annotate_with_locus. + (finish_stmt_tree): Don't set line for end of function. + (build_stmt): Don't check type nodes for + side effects. + (build_stmt): Set TREE_SIDE_EFFECTS. + Set EXPR_LOCUS instead of STMT_LINENO. + (lang_expand_stmt, lang_expand_decl_stmt, + expand_cond, genrtl_do_pushlevel, genrtl_goto_stmt, genrtl_expr_stmt, + genrtl_expr_stmt_value, genrtl_decl_stmt, genrtl_if_stmt, + genrtl_while_stmt, genrtl_do_stmt_1, genrtl_do_stmt, + genrtl_return_stmt, genrtl_for_stmt, genrtl_break_stmt, + genrtl_continue_stmt, genrtl_scope_stmt, genrtl_switch_stmt, + genrtl_case_label, genrtl_compound_stmt, genrtl_asm_stmt, + genrtl_cleanup_stmt, expand_stmt, find_reachable_label, + find_reachable_label_1, expand_unreachable_if_stmt, + expand_unreachable_stmt): Remove. + (prep_stmt): Use EXPR_LOCUS instead of STMT_LINENO. + * c-simplify.c: New file. + * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): Define. + (struct lang_type): Add fields enum_min and enum_max. + (c_expand_decl_stmt, c_missing_noreturn_ok_p): Remove. + (c_expand_decl, c_missing_noreturn_ok_p, + c_types_compatible_p): Declare. + * c-typeck.c (tagged_types_tu_compatible_p): Allow for + compiler-generated TYPE_DECLs without a DECL_ORIGINAL_TYPE. + (default_function_array_conversion): Rely on build to + set TREE_CONSTANT. + (parser_build_binary_op, pointer_diff): Likewise. + (build_unary_op, build_binary_op): Likewise. + (build_array_ref): + (build_external_ref): Set TREE_INVARIANT. + (build_c_cast, pop_init_level): Likewise. + (process_init_element): Use ASM_VOLATILE_P. + (build_asm_expr): Adapt to GENERIC/GIMPLE syntax. + (c_finish_case): Call c_do_switch_warnings. + * c.opt (fdump-): Remove. + * calls.c (try_to_integrate): Remove. + (prepare_call_address): Replace fndecl arg with a + precomputed static chain value. + (emit_call_1): New argument for full call expr. + (flags_from_decl_or_type): Call special_function_p. + (initialize_argument_information): Add argument + may_tailcall. + (purge_reg_equiv_notes): New. + (expand_call): Do not try to expand calls inline. + (fixup_tail_calls): New. + * cfg.c: Include timevar.h and ggc.h. + (bb_pool, edge_pool): Remove. + (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Declare. + (entry_exit_blocks): Remove. + (rbi_pool): Declare. + (init_flow): Do not create pools. + Allocate entry/exit block. + (free_edge, alloc_block, expunge_block, unchecked_make_edge): Use GGC. + (alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New. + (unlink_block): Clear b->prev_bb and b->next_bb. + (compact_blocks): Clear all slots of BASIC_BLOCK array. + (dump_flow_info): Work on trees too. + (dump_cfg_bb_info): New. + (brief_dump_cfg): New. + * cfganal.c (need_fake_edge_p, flow_call_edges_add): Remove. + (find_edge): New. + * cfgbuild.c (rtl_make_eh_edge): Rename from + make_eh_edge. Update all users. + (find_basic_blocks): Don't call VARRAY_FREE on + basic_block_info. + * cfgcleanup.c (outgoing_edges_match): Initialize newpos1 + and newpos2. + (delete_unreachable_blocks): Return changed status. + (merge_seq_blocks): New. + * cfghooks.c: Include tree-flow.h + (tree_register_cfg_hooks, ir_type): New. + (redirect_edge_and_branch): Change return type to edge. + (predict_edge, predicted_by_p, can_duplicate_block_p, + duplicate_block, block_ends_with_call_p, + block_ends_with_condjump_p, flow_call_edges_add): New. + * cfghooks.h (redirect_edge_and_branch): Change return + type to edge. + (predict_edge, predicted_by_p, can_duplicate_block_p, + duplicate_block, block_ends_with_call_p, + block_ends_with_condjump_p, flow_call_edges_add): Declare. + (redirect_edge_and_branch): Change return type to edge. + (struct cfg_hooks): Add fields block_ends_with_call_p, + block_ends_with_condjump_p, flow_call_edges_add, + predict_edge, predicted_by_p, can_duplicate_block_p and + duplicate_block. + (tree_cfg_hooks, ir_type, tree_register_cfg_hooks): Declare. + * cfglayout.c (cfg_layout_pool, cfg_layout_initialize_rbi): Removed. + (fixup_reorder_chain): Use initialize_bb_rbi. + (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Hookized. + (cfg_layout_initialize): Use cfg.c rbi pool manipulation functions. + (can_copy_bbs_p, copy_bbs): Use cfghooks for bb duplication. + (insn_locators_initialize): Use new info about blocks. + * cfglayout.h (typedef struct reorder_block_def): Moved to + basic_block.h. + (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Declaration + removed. + * cfgloop.c: Include tree.h and tree-flow.h. + * cfgloop.h (create_loop_notes): Declare. + * cfgloopmanip.c (create_loop_notes): New. + * cfgrtl.c (cfg_layout_create_basic_block): Use initialize_bb_rbi. + (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Fill in can_duplicate_block_p + and duplicate_block fields. + (create_basic_block_structure): Don't look at + RTX_INTEGRATED_P. + (rtl_block_ends_with_call_p): New. + (rtl_block_ends_with_condjump_p): New. + (need_fake_edge_p): Moved from cfganal.c. + (rtl_flow_call_edges_add): Moved from cfganal.c (flow_call_edges_add). + (rtl_cfg_hooks): Add rtl_block_ends_with_call_p, + rtl_block_ends_with_condjump_p, rtl_flow_call_edges_add. + (cfg_layout_rtl_cfg_hooks): Ditto. + * cgraph.c (cgraph_mark_reachable_node): Don't force nested + functions to be reachable. + * cgraphunit.c (decide_is_function_needed): + * cgraphunit.c (decide_is_function_needed): Nested functions of extern + inline functions don't need to be output. + (cgraph_assemble_pending_functions): Don't do anything + special for nested functions. + (cgraph_mark_functions_to_output): Likewise. + (cgraph_finalize_function): Don't zap DECL_STRUCT_FUNCTION. + (cgraph_analyze_function): Use estimate_num_insns. + (cgraph_mark_functions_to_output): Likewise. + (cgraph_estimate_growth, cgraph_clone_inlined_nodes): Likewise. + (cgraph_expand_function): Allow functions to not be + emitted. + (cgraph_remove_unreachable_nodes): + (cgraph_recursive_inlining_p): Simplify. + (lookup_recursive_calls, + cgraph_decide_recursive_inlining): New. + (cgraph_decide_inlining_*): Update calls of + cgraph_mark_inline. + * combine.c (get_pos_from_mask): Always set *plen. + * common.opt (fdump-, fmudflap, fmudflapth, fmudflapir, + ftree-based-profiling, ftree-ccp, ftree-ch, + ftree-combine-temps, ftree-copyrename, ftree-dce, + ftree-dominator-opts, ftree-dse, ftree-loop-optimize, + ftree-points-to, ftree-pre, ftree-sra, ftree-ter, + ftree-lrs): Add. + * config.in (HAVE_LD_PIE, HAVE_BANSHEE, PREFIX_INCLUDE_DIR): + Undefine. + * configure.ac: Add --enable-tree-browser option. + Add --with-libbanshee option. + Add GMPLIBS and GMPINC. + * configure: Regenerate. + * coverage.c (tree_ctr_tables): New. + (coverage_counter_alloc): Use it. + (build_ctr_info_value): Ditto. + (coverage_counter_ref): Ditto. Rename to rtl_coverage_counter_ref. + (tree_coverage_counter_ref): New. + * coverage.h (coverage_counter_ref): Remove declaration. + (rtl_coverage_counter_ref): Declare. + (tree_coverage_counter_ref): Declare. + * cppexp.c (append_digit): Rearrange unsignedp/overflow setting. + (eval_token, num_binary_op, num_part_mul, num_div_op): Likewise. + * cse.c (fold_rtx): Do not handle CONSTANT_P_RTX. + (struct cse_basic_block_data): Rename enum values to not + conflict with profile.h; update all uses. + * dbxout.c (dbxout_symbol_location): Don't mention integrate.c + in comments. + * defaults.h (TRAMPOLINE_ALIGNMENT): Move from function.c. + * diagnostic.h (debug_output_buffer, dump_generic_node, + print_generic_stmt, print_generic_stmt_indented, + print_generic_expr, print_generic_decl, + debug_generic_expr, debug_generic_stmt, debug_c_tree): + Declare. + * dominance.c: Cache immediate dominators. + * domwalk.c: New file. + * domwalk.h: New file. + * dwarf2out.c (is_fortran): Support DW_LANG_Fortran95. + (gen_subprogram_die): Generate a DIE for a named + return value. + (loc_descriptor_from_tree): Treat RESULT_DECL like VAR_DECL. + (add_location_or_const_value_attribute): Likewise. + (add_bound_info): Likewise. + (gen_decl_die): Likewise. + * emit-rtl.c (maybe_set_first_label_num): New. + (copy_most_rtx): Don't copy the integrated flag. + Copy the new return_val flag. + * et-forest.c (MAX_NODES): Define. + (record_path_before_1): Abort if len is greater than + MAX_NODES. + * except.c (gen_eh_region, gen_eh_region_cleanup, gen_eh_region_try, + gen_eh_region_catch, gen_eh_region_allowed, + gen_eh_region_must_not_throw, get_eh_region_number, + get_eh_region_may_contain_throw, get_eh_region_tree_label, + set_eh_region_tree_label, expand_resx_expr): New. + (expand_eh_region_start, expand_start_catch): Use them. + (expand_end_catch): Tidy. + (note_eh_region_may_contain_throw): Take region argument. + (note_current_region_may_contain_throw): New. + (get_exception_filter): Export. + (collect_eh_region_array): Export. + (remove_unreachable_regions): Check ERT_TRY based on reachability + of catches, not reachability of continue_label. Never remove + ERT_MUST_NOT_THROW regions. + (collect_rtl_labels_from_trees): New. + (convert_from_eh_region_ranges): Use it. + (connect_post_landing_pads): Handle dying cleanups. + (struct reachable_info): Add callback data. + (add_reachable_handler): Invoke the callback. + (foreach_reachable_handler): New. + (reachable_handlers): Use it. + (arh_to_landing_pad, arh_to_label): New. + (can_throw_internal_1): Split out from can_throw_internal. + (can_throw_external_1): Similarly. + * except.h: Update. + * explow.c (emit_stack_save): Remove savearea mode check. + (update_nonlocal_goto_save_area): New. + (allocate_dynamic_stack_space): Use it. + (probe_stack_range): Never emit loop notes. + * expmed.c (extract_fixed_bit_field): Always propagate the + target for the shift if it is a REG. + * expr.c: Include tree-iterator.h + (is_zeros_p): Remove. + (categorize_ctor_elements_1, categorize_ctor_elements): New. + (count_type_elements): New. + (mostly_zeros_p): Use them. + (expr_wfl_stack): Remove. + (convert_move): Do nothing if to and from are the same. + (emit_block_move_via_loop): Don't emit LOOP notes. + (emit_move_insn): Don't handle CONSTANT_P_RTX. + (emit_move_insn_1): Don't generate inline warnings. + (expand_vars, expand_var): Split from ... + (expand_expr_1): ... here. + (expand_expr_real, expand_expr_real_1): Use new macros + EXPR_LOCATION and EXPR_HAS_LOCATION. + * expr.h (simplify_builtin_fputs, + simplify_builtin_strcpy, simplify_builtin_strncpy, + expand_var, fixup_tail_calls, + update_nonlocal_goto_save_area): Declare. + (lookup_static_chain, expand_inline_function, + mark_seen_cases): Remove. + (prepare_call_address): Change type of 2nd argument to + rtx. + * final.c (profile_function): Update static chain test. + (final): Don't look at RTX_INTEGRATED_P. + * flags.h (flag_mudflap, flag_mudflap_threads, + flag_mudflap_ignore_reads, flag_tree_pre, flag_tree_ccp, + flag_tree_dce, flag_tree_combine_temps, + flag_tree_live_range_split, flag_tree_dom, flag_tree_ch, + flag_tree_dse, flag_tree_sra, flag_tree_copyrename, + flag_tree_points_to): Declare. + (enum pta_type): Declare. + * flow.c (lang_missing_noreturn_ok_p): Remove. + (check_function_return_warnings): Remove. + (update_life_info): Update comments. + (free_basic_block_vars): Don't call VARRAY_FREE for + basic_block_info. + (regno_uninitialized): Remove. + * fold-const.c (int_const_binop): Make extern. + (non_lvalue): Rely on build to set TREE_CONSTANT. + (operand_equal_p): Replace only_const argument with + flags. Allow pure functions if OEP_PURE_SAME. + (fold): Use OEP_ONLY_CONST. + (invert_truthvalue) <NOP_EXPR> Break if argument is of + boolean type. + (fold_relational_hi_lo, + nondestructive_fold_binary_to_constant, + nondestructive_fold_unary_to_constant, + fold_read_from_constant_string): New. + * function.c (struct function): Remove calls_constant_p. + (current_function_calls_constant_p): Remove. + (inline_function_decl): Remove. + (put_var_into_stack): Don't use it. + (fix_lexical_addr): Likewise. + (inline_function_decl): Remove extern declaration. + (TRAMPOLINE_ALIGNMENT): Move to defaults.h. + (trampolines_created): Move to varasm.c. + (free_after_compilation): Update for removed fields. + (allocate_struct_function): Likewise. + (delete_handlers, lookup_static_chain): Remove. + (fix_lexical_addr): Don't consider non-local variable refs. + (trampoline_address): Remove. + (round_trampoline_addr): Move to builtins.c. + (adjust_trampoline_addr): Remove. + (expand_function_start): Update for changes to static chain + and nonlocal goto handling. + (initial_trampoline): Move to varasm.c. + (expand_function_end): Don't build trampolines or kill + unreferenced nonlocal goto labels. + (free_after_compilation): Don't set it. + (expand_function_end): Likewise. + (setjmp_vars_warning): Rename from + uninitialized_vars_warning, remove uninitialized vars warning. + (uninitialized_vars_warning): Remove old comment + and check for DECL_INITIAL, replace with a check of TREE_NO_WARNING + and do not call the langhook. + (expand_function_start, expand_function_end): Don't do + function instrumentation here. + (clear_block_marks): Rename from reorder_blocks_0, export. + (blocks_nreverse): Export. + (uninitialized_vars_warning): Use DECL_RTL_SET_P to test for presence + of rtl. + (reset_block_changes, record_block_change, finalize_block_changes, + check_block_change, free_block_changes): New functions. + (assign_parms): Setting of current_function_stdarg + moved ... + (allocate_struct_function): ... here. + * function.h (struct function): Remove x_nonlocal_labels, + x_nonlocal_goto_handler_slots, x_nonlocal_goto_stack_level, + x_context_display, x_trampoline_list, needs_context. + Add static_chain_decl, nonlocal_goto_save_area. + (struct function): Remove x_clobber_return_insn. + Add tail_call_emit field, last_label_uid, + unexpanded_var_list, dont_emit_block_notes, + ib_boundaries_block, function_end_locus and saved_tree/saved_args. + (clear_block_marks): Declare. + * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Add -fmudflapth support. + (mfwrap_spec, mflib_spec): Declare. + (cpp_unique_options, cc1_options): Ditto. + (default_compilers): Add .F and .f90. + (static_specs): Add mfwrap and mflib. + * gcse.c (want_to_gcse_p, gcse_constant_p): Don't handle + CONSTANT_RTX_P. + (reg_used_on_edge, reg_killed_on_edge, bypass_block): + Update to match insns field in struct edge_def. + * gdbinit.in (pgs, pge): Define. + * genattrtab.c (ATTR_PERMANENT_P): Use the return_val flag + instead of the integrated flag. + * gengtype-lex.l (IWOrD): Add HOST_WIDEST_INT + * gengtype-yacc.y (bitfieldlen): Add empty action. + (struct_fields): Accept unnamed bitfields. + (bitfieldlen): Split from ... + (bitfieldopt): ... here. + * gengtype.c (ifiles): Add tree-alias-type.h and + tree-flow.h. + * genrecog.c (validate_pattern): Do not handle + CONSTANT_P_RTX. + * gimple-low.c: New file. + * gimplify.c: New file. + * haifa-sched.c (priority): Do not handle CONSTANT_P_RTX. + (restore_line_notes): Do not set RTX_INTEGRATED_P. + * ifcvt.c (dead_or_predicable): Initialize local variable + 'earliest'. + * input.h (expr_wfl_stack): Remove. + * integrate.c (INTEGRATE_THRESHOLD): Remove. + (setup_initial_hard_reg_value_integration): Likewise. + (initialize_for_inline): Likewise. + (note_modified_parmregs): Likewise. + (integrate_parm_decls): Likewise. + (process_reg_param): Likewise. + (save_parm_insns): Likewise. + (copy_insn_list): Likewise. + (copy_insn_notes): Likewise. + (compare_blocks): Likewise. + (find_block): Likewise. + (inlining): Likewise. + (function_cannot_inline_p): Likewise. + (parmdecl_map): Likewise. + (in_nonparam_insns): Likewise. + (save_for_inline): Likewise. + (FIXED_BASE_PLUS): Likewise. + (expand_inline_function): Likewise. + (copy_rtx_and_substitute): Don't look at map->integrating, + map->inline_target, and inlining, since we are never copying + for integrating. + Don't abort on RTX_INTEGRATED_P. + (old_fun): Remove. + (output_inline_function): Remove. + * integrate.h (struct inline_map): Remove fields integrating, + block_map, leaf_reg_map, inline_target, and local_return_label. + * jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test, + copy_loop_headers, never_reached_warning): Removed. + (any_uncondjump_p): Reject nonlocal goto. + * langhooks-def.h (lhd_types_compatible_p, + lhd_expand_decl, lhd_gimplify_expr): Declare. + (LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P, + LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P, + LANG_HOOKS_FUNCTION_LEAVE_NESTED, + LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P, + LANG_HOOKS_GIMPLIFY_EXPR, + LANG_HOOKS_GIMPLE_BEFORE_INLINING, + LANG_HOOKS_EXPAND_DECL, LANG_HOOKS_TYPES_COMPATIBLE_P, + LANG_HOOKS_GIMPLIFY_EXPR, + LANG_HOOKS_GIMPLE_BEFORE_INLINING): Define. + (LANG_HOOKS_DECL_UNINIT, LANG_HOOKS_RTL_EXPAND_START, + LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_RTL_EXPAND_END, + LANG_HOOKS_FUNCTION_LEAVE_NESTED, + LANG_HOOKS_RTL_EXPAND_INITIALIZER, + LANG_HOOKS_DECL_UNINIT, + LANG_HOOKS_RTL_EXPAND_INITIALIZER): Remove. + * langhooks.c: Include tree-simple.h. + (lhd_expand_decl): New. + (lhd_types_compatible_p): New. + (lhd_decl_uninit): Remove. + (lhd_gimplify_expr): New. + * langhooks.h (struct lang_hooks_for_rtl_expansion): + Remove. + (struct lang_hooks_for_functions): Add field + missing_noreturn_ok_p. + (struct lang_hooks): Add field expand_decl, + types_compatible_p, gimplify_expr and + gimple_before_inlining. + Remove fields decl_uninit and rtl_expand + * opts.c (decode_options): Set flag_tree_ccp, + flag_tree_dce, flag_tree_dom, flag_tree_dse, + flag_tree_pre, flag_tree_ter, + flag_tree_live_range_split, flag_tree_sra, + flag_tree_copyrename and flag_tree_ch at -O1 and higher. + (common_handle_option): Handle OPT_fdump_, OPT_fmudflap, + OPT_fmudflapth, OPT_fmudflapir, + OPT_ftree_based_profiling, OPT_ftree_ccp, OPT_ftree_dce, + OPT_ftree_combine_temps, OPT_ftree_ter, OPT_ftree_lrs, + OPT_ftree_dominator_opts, OPT_ftree_copyrename, + OPT_ftree_ch, OPT_ftree_dse, OPT_ftree_sra, + OPT_ftree_points_to_ and OPT_ftree_pre. + * output.h (regno_uninitialized, find_basic_blocks, + cleanup_cfg, delete_unreachable_blocks, + check_function_return_warnings): Remove. + * params.def (PARAM_MAX_INLINE_INSNS_RECURSIVE, + PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO, + PARAM_MAX_INLINE_RECURSIVE_DEPTH, + PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO, + PARAM_GLOBAL_VAR_THRESHOLD, PARAM_MAX_ALIASED_VOPS): + * params.h (GLOBAL_VAR_THRESHOLD, MAX_ALIASED_VOPS): + Define. + * passes.c (rest_of_decl_compilation): + (rest_of_handle_sibling_calls): Remove. + (rest_of_handle_inlining): Remove. + (rest_of_handle_gcse): Do not run + purge_builtin_constant_p. + (rest_of_compilation): Update. + Do not call copy_loop_headers. + Do rtl-based profiling only when + !flag_tree_based_profiling. Register rtl-based profiling + hooks. + * predict.c: Include tree-flow.h, ggc.h, tree-dump.h + (predicted_by_p): Rename to ... + (rtl_predicted_by_p): .. this one; make global + (tree_predicted_by_p): New. + (dump_prediction): Add FILE argument. + (predict_edge): Rename to ... + (rtl_predict_edge): .. this one. + (tree_predict_edge): New. + (combine_predictions_for_insn): Update calls of predict_edge. + (predict_loops): Break out from ... + (estimate_probability): ... here; update comments; move updating + of unknown probabilities from ... + (estimate_bb_frequencies): ... here. + (combine_predictions_for_bb): New. + (tree_predict_by_opcode): New. + (tree_estimate_probability): New. + * predict.def (PRED_TREE_POINTER, PRED_TREE_OPCODE_POSITIVE, + PRED_TREE_OPCODE_NONEQUAL, PRED_TREE_FPOPCODE): New predictors. + * predict.h: Add include guard. + (predict_edge, predict_edge_def): Move prototypes to basic_block.h + * pretty-print.c (pp_write_text_to_stream): Make extern. + * pretty-print.h (pp_write_text_to_stream): Declare. + * print-rtl.c (print_rtx): Don't print the integrated flag. + Print the return_val flag. + * print-tree.c: Use TREE_FILENAME and TREE_LINENO instead + of DECL_SOURCE_FILE and DECL_SOURCE_LINE respectively. + Remove support for EXPR_WITH_FILE_LOCATION nodes. + (print_node): Print TREE_INVARIANT and TREE_VISITED. + * profile.c: Include cfghooks.h, tree-flow.h. + (profile_hooks): New. + (profile_dump_file): New. + (instrument_edges): Use hooks instead of RTL-specific code. + (instrument_values): Ditto. + (get_exec_counts): Ditto. + (compute_branch_probabilities): Ditto. + (compute_value_histograms): Ditto. + (branch_prob): Ditto. + (find_spanning_tree): Ditto. + (end_branch_prob): Ditto. + (gen_edge_profiler): Move to rtl-profile.c (rtl_gen_edge_profiler). + (gen_interval_profiler): Ditto (rtl_gen_interval_profiler). + (gen_pow2_profiler): Ditto (rtl_gen_pow2_profiler). + (gen_one_value_profiler): Ditto (rtl_gen_one_value_profiler). + (tree_register_profile_hooks): New. + (rtl_register_profile_hooks): New. + * ra-rewrite.c (rewrite_program): Clear variable info. + * recog.c (immediate_operand): Do not handle CONSTANT_P_RTX. + * regs.h: Add include guards. + * reload.c (decompose): Clear val using memset. + * rtl.def (CONSTANT_P_RTX): Remove. + * rtl.h (CONSTANT_P): Do not handle CONSTANT_P_RTX. + (copy_loop_headers): Remove. + (struct rtx_def): Replace the integrated flag with the + return_val flag. + (maybe_set_first_label_num): Declare. + (init_branch_prob): Move declaration to value-prof.h. + (end_branch_prob): Ditto. + (branch_prob): Ditto. + (never_reached_warning): Don't declare it. + * rtlanal.c (get_related_value): Initialize get_jump_table_offset + (hoist_insn_to_edge): Update to match field insns in + struct edge_def. + * sbitmap.c (sbitmap_realloc): New. + * sbitmap.h (sbitmap_realloc): Declare. + * sibcall.c: Remove file. + * simplify-rtx.c (simplify_rtx): Do not handle + CONSTANT_P_RTX. + * stmt.c (parse_output_constraint): Don't warn for read-write + memory operand. + (tail_recursion_args): Use types_compatible_p langhook. + (force_label_rtx): Don't look at inline_function_decl. + (label_rtx): Set LABEL_PRESERVE_P appropriately. + (expand_label): Handle DECL_NONLOCAL and FORCED_LABEL. + (declare_nonlocal_label): Remove. + (expand_goto): Don't handle nonlocal gotos. + (expand_nl_handler_label): Remove. + (expand_nl_goto_receivers): Remove. + (expand_end_bindings): Don't expand_nl_goto_receivers. Use + update_nonlocal_goto_save_area. + (expand_expr_stmt_value): Check TREE_NO_WARNING. + (warn_if_unused_value): Likewise. + (expand_start_loop, expand_loop_continue_here, + expand_end_loop): Don't create loop notes. + (all_cases_count, BITARRAY_TEST, BITARRAY_SET, + mark_seen_cases, check_for_full_enumeration_handling): Remove. + (expand_end_case_type): Don't do warn_switch handling. + (pushcase, pushcase_range) Update add_case_node calls. + (add_case_node): Add dont_expand_label argument. + (same_case_target_p): Don't search rtl. + (expand_start_bindings_and_block, expand_end_bindings): + Don't emit block notes when dont_emit_block_notes. + (using_eh_for_cleanups_p): Export. + (expand_return): Allow any typed rhs. + (expand_stack_alloc): New. + (expand_stack_save, expand_stack_restore): New. + (containing_blocks_have_cleanups_or_stack_level): New + function. + (asm_op_is_mem_input): New fn. + (expand_asm_expr): New fn. + (warn_if_unused_value): Check operand 0 of SAVE_EXPR + nodes. + * stor-layout.c (layout_type): Just return if type is + error_mark_node. + (update_alignment_for_field): Export. + (variable_size): We don't care about global_bindings_p if + the frontend doesn't want a list of the expressions. + * system.h: Poison INTEGRATE_THRESHOLD. + * timevar.def (TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG, + TV_TREE_CLEANUP_CFG, TV_TREE_PTA, TV_TREE_MAY_ALIAS, + TV_TREE_INSERT_PHI_NODES, TV_TREE_SSA_REWRITE_BLOCKS, + TV_TREE_SSA_OTHER, TV_TREE_OPS, + TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SRA, TV_TREE_CCP, + TV_TREE_SPLIT_EDGES, TV_TREE_PRE, TV_TREE_PHIOPT, + TV_TREE_FORWPROP, TV_TREE_DCE, TV_TREE_CD_DCE, + TV_TREE_DSE, TV_TREE_LOOP, TV_TREE_CH, + TV_TREE_SSA_TO_NORMAL, TV_TREE_SSA_TO_NORMAL, + TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY, + TV_TREE_STMT_VERIFY, TV_DOM_FRONTIERS, + TV_CONTROL_DEPENDENCES): Define. + * toplev.c: Include tree-alias-common.h + (current_file_decl, flag_mudflap, flag_mudflap_threads, + flag_mudflap_ignore_reads, flag_tree_based_profiling, + flag_tree_gvn, flag_tree_points_to, flag_tree_ccp, + flag_tree_dce, flag_tree_ch, flag_tree_sra, + flag_tree_combine_temps, flag_tree_ter, + flag_tree_live_range_split, flag_tree_dom, + flag_tree_copyrename, flag_tree_dse): Declare. + (f_options): Add tree-based-profiling, tree-gvn, + tree-pre, tree-ccp, tree-dce, + tree-dominator-opts, tree-copyrename, tree-dse, + tree-combine-temps, tree-ter, tree-lrs and tree-ch. + (wrapup_global_declarations): Don't output nested inlined functions. + (general_init): Call init_tree_optimization_passes. + (process_options): Sorry for -ftree-based-profiling plus + -ftest-coverage or -fprofile-values. + * toplev.h (init_tree_optimization_passes, + flag_tree_based_profiling): Declare. + * tracer.c (tail_duplicate): Use cfghooks for bb duplication. + * tree-alias-ander.c: New file. + * tree-alias-ander.h: New file. + * tree-alias-common.c: New file. + * tree-alias-common.h: New file. + * tree-alias-type.c: New file. + * tree-alias-type.h: New file. + * tree-browser.c: New file. + * tree-browser.def: New file. + * tree-cfg.c: New file. + * tree-complex.c: New file. + * tree-dfa.c: New file. + * tree-dump.c (dump_enable_all): New. + (dequeue_and_dump): Do not handle EXPR_WITH_FILE_LOCATION. + (dump_node): Remove const from field suffix and swtch. + (dump_files): Add null entry, .generic, .nested, .vcg, + .xml and a match-all entry. + (extra_dump_files, extra_dump_files_in_use, + extra_dump_files_alloced): Declare + (dump_option_value_info): Add raw, details, stats, + blocks, vops, lineno, uid and all. + (dump_register): New. + (get_dump_file_info): New. + (dump_begin): Call it. + Do nothing for TDI_none. + (dump_begin): Include phase number in dump filename. + (dump_enable_all): New. + (dump_switch_p_1): Split out from dump_switch_p. + (dump_switch_p): Handle extra_dump_files. + Start our scan at TDI_none + 1. + If -fdump-tree-all was given, call dump_enable_all. + * tree-dump.h: Include splay-tree.h. + (dump_function, dump_function_to_file, dump_register): + Declare. + * tree-eh.c: New file. + * tree-flow-inline.h: New file. + * tree-flow.h: New file. + * tree-inline.c: Re-write to handle inlining on GIMPLE. + * tree-inline.h (walk_tree, + walk_tree_without_duplicates): Move to tree.h. + (estimate_num_insns): Declare. + * tree-into-ssa.c: New file. + * tree-iterator.c: New file. + * tree-iterator.h: New file. + * tree-mudflap.c: New file. + * tree-mudflap.h: New file. + * tree-nested.c: New file. + * tree-nomudflap.c: New file. + * tree-nrv.c: New file. + * tree-optimize.c (dump_flags, vars_to_rename, + in_gimple_form, all_passes, pass_gimple, + pass_rebuild_bind, pass_all_optimizations, pass_del_cfg): Declare. + (execute_gimple, execute_rebuild_bind, + gate_all_optimizations, execute_del_cfg, + register_one_dump_file, register_dump_files, dup_pass_1, + init_tree_optimization_passes, execute_todo, + execute_one_pass, execute_pass_list): New. + (clear_decl_rtl): Remove. + (tree_rest_of_compilation): Update to use tree + optimizers. + * tree-outof-ssa.c: New file. + * tree-pass.h: New file. + * tree-phinodes.c: New file. + * tree-pretty-print.c: New file. + * tree-profile.c: New file. + * tree-simple.c: New file. + * tree-simple.h: New file. + * tree-sra.c: New file. + * tree-ssa-alias.c: New file. + * tree-ssa-ccp.c: New file. + * tree-ssa-copy.c: New file. + * tree-ssa-copyrename.c: New file. + * tree-ssa-dce.c: New file. + * tree-ssa-dom.c: New file. + * tree-ssa-dse.c: New file. + * tree-ssa-forwprop.c: New file. + * tree-ssa-live.c: New file. + * tree-ssa-live.h: New file. + * tree-ssa-loop.c: New file. + * tree-ssa-operands.c: New file. + * tree-ssa-operands.h: New file. + * tree-ssa-phiopt.c: New file. + * tree-ssa-pre.c: New file. + * tree-ssa.c: New file. + * tree-ssanames.c: New file. + * tree-tailcall.c: New file. + * tree.c: Include tree-iterator.h, basic-block.h and + tree-flow.h. + (tree_node_kind): Add phi_nodes and ssa names. + (tree_size): Handle PHI_NODE, EPHI_NODE, SSA_NAME, + EUSE_NODE, EKILL_NODE, EEXIT_NODE and STATEMENT_LIST. + (make_node_stat): Handle PHI_NODE and SSA_NAME. + <'c'> Set TREE_INVARIANT. + (copy_node_stat): Abort if trying to copy a + STATEMENT_LIST. + Clear TREE_VISITED. + Clear annotation field. + (build_constructor): Copy TREE_INVARIANT from vals. + Don't clear TREE_CONSTANT. + (expr_first, expr_last, expr_length): Remove. + (staticp): Pass unknown component references to the language. + (save_expr): Check TREE_INVARIANT instead of TREE_CONSTANT. + (skip_simple_arithmetic): Likewise. + (stabilize_reference_1): Likewise. + (tree_node_structure): Handle PHI_NODE, EPHI_NODE, + EUSE_NODE, EKILL_NODE, EEXIT_NODE, SSA_NAME and + STATEMENT_LIST. + (lhd_unsave_expr_now): Remove. + (unsafe_for_reeval): Handle LABEL_EXPR and BIND_EXPR. + (recompute_tree_invarant_for_addr_expr): New. + (build1_stat): Clear EXPR_LOCUS and TREE_BLOCK. + Call recompute_tree_invarant_for_addr_expr. + Set TREE_INVARIANT accordingly. + (build2_stat): Don't handle CALL_EXPR. + (build3_stat): Don't call build2_stat for CALL_EXPRs. + (build_expr_wfl): Remove. + (annotate_with_file_line, annotate_with_locus): New. + (simple_cst_equal): Call simple_cst_list_equal to compare + CONSTRUCTOR_ELTS pointers. + (iterative_hash_expr): Don't hash types associated + with conversions. Instead hash on the signedness of the + toplevel object and the operand of the conversion. + (dump_tree_statistics): Call ssanames_print_statistics + and phinodes_print_statistics. + (ephi_node_elt_check_failed, phi_node_elt_check_failed, + add_var_to_bind_expr, build_empty_stmt, is_essa_node, + needs_to_live_in_memory): New. + (initializer_zerop): Handle VECTOR_CST. Don't check + AGGREGATE_TYPE_P for CONSTRUCTOR. + * tree.def (FILTER_EXPR, CASE_LABEL_EXPR, RESX_EXPR, + SSA_NAME, EUSE_NODE, EKILL_NODE, EPHI_NODE, EEXIT_NODE, + PHI_NODE, CATCH_EXPR, EH_FILTER_EXPR, STATEMENT_LIST): Define. + (GOTO_SUBROUTINE_EXPR): Change type to 's'. + (CALL_EXPR): Add another operand. + (EXPR_WITH_FILE_LOCATION): Remove. + (SWITCH_EXPR): Add another operand. + * tree.h: Update various comments. + (union tree_ann_d): Forward declare. + (struct tree_common): Add fields nowarning_flag, + invariant_flag and visited. + (EREF_NODE_CHECK, EPHI_NODE_ELT_CHECK, + PHI_NODE_ELT_CHECK, EREF_NODE_CHECK, PHI_NODE_ELT_CHECK, + EPHI_NODE_ELT_CHECK, TREE_BLOCK, + STRIP_USELESS_TYPE_CONVERSION, CALL_EXPR_TAILCALL, + TREE_NO_WARNING, FORCED_LABEL, TREE_INVARIANT, + IS_EMPTY_STMT, EXPR_LOCUS, SET_EXPR_LOCUS, EXPR_FILENAME, + EXPR_LINENO, EXPR_LOCATION, EXPR_HAS_LOCATION, + EXIT_EXPR_COND, SWITCH_COND, SWITCH_BODY, SWITCH_LABELS, + CASE_LOW, CASE_HIGH, CASE_LABEL, BIND_EXPR_VARS, + BIND_EXPR_BODY, BIND_EXPR_BLOCK, GOTO_DESTINATION, + ASM_STRING, ASM_OUTPUTS, ASM_INPUTS, ASM_CLOBBERS, + ASM_INPUT_P, ASM_VOLATILE_P, COND_EXPR_COND, + COND_EXPR_THEN, COND_EXPR_ELSE, LABEL_EXPR_LABEL, + CATCH_TYPES, CATCH_BODY, EH_FILTER_TYPES, + EH_FILTER_FAILURE, EH_FILTER_MUST_NOT_THROW, + SSA_NAME_VAR, SSA_NAME_DEF_STMT, SSA_NAME_VERSION, + SSA_NAME_OCCURS_IN_ABNORMAL_PHI, SSA_NAME_IN_FREE_LIST, + PHI_RESULT, PHI_REWRITTEN, PHI_NUM_ARGS, + PHI_ARG_CAPACITY, PHI_ARG_ELT, PHI_ARG_EDGE, PHI_ARG_DEF, + EREF_PROCESSED, EREF_ID, EREF_NAME, EREF_STMT, + EREF_RELOAD, EREF_SAVE, EREF_CLASS, EREF_INJURED, + EREF_TEMP, EUSE_DEF, EUSE_PHIOP, EUSE_INSERTED, + EUSE_LVAL, EPHI_NUM_ARGS, EPHI_ARG_CAPACITY, + EPHI_ARG_ELT, EPHI_ARG_EDGE, EPHI_ARG_PRED, EPHI_ARG_DEF, + EPHI_ARG_INJURED, EPHI_ARG_DELAYED_RENAME, + EPHI_ARG_HAS_REAL_USE, EPHI_ARG_STOPS, + EPHI_ARG_PROCESSED2, EPHI_IDENTITY, EPHI_IDENT_INJURED, + EPHI_REP_OCCUR_KNOWN, EPHI_IDENTICAL_TO, EPHI_DOWNSAFE, + EPHI_CANT_BE_AVAIL, EPHI_DEAD, EPHI_USES, EPHI_STOPS, + TREE_VISITED, SSA_VAR_P, DECL_NUM_STMTS, + DECL_HARD_REGISTER, DECL_PTA_ALIASVAR, LABEL_DECL_UID, + DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL, + STATEMENT_LIST_HEAD, STATEMENT_LIST_TAIL, TDF_RAW, + TDF_DETAILS, TDF_STATS, TDF_BLOCKS, TDF_VOPS, TDF_LINENO, + TDF_UID,): Define. + (TREE_NO_UNUSED_WARNING, EXPR_WFL_EMIT_LINE_NOTE, + EXPR_WFL_NODE, EXPR_WFL_FILENAME_NODE, EXPR_WFL_FILENAME, + EXPR_WFL_LINECOL, EXPR_WFL_LINENO, EXPR_WFL_COLNO, + EXPR_WFL_SET_LINECOL): Remove. + (phi_node_elt_check_failed, ephi_node_elt_check_failed, + make_phi_node, init_phinodes, fini_phinodes, + release_phi_node, phinodes_print_statistics, + init_ssanames, fini_ssanames, make_ssa_name, + release_ssa_name, ssanames_print_statistics, + annotate_with_file_line, build_empty_stmt, + annotate_with_locus, expr_only, categorize_ctor_elements, + count_type_elements, add_var_to_bind_expr, is_essa_node, + expand_stack_alloc, expand_stack_save, + expand_stack_restore, add_case_node, operand_equal_p, + nondestructive_fold_unary_to_constant, + nondestructive_fold_binary_to_constant, + fold_read_from_constant_string, int_const_binop, + strip_float_extensions, simplify_builtin, c_strlen, + recompute_tree_invarant_for_addr_expr, + needs_to_live_in_memory, make_vector, + setjmp_vars_warning, update_alignment_for_field, + expand_asm_expr, asm_op_is_mem_input, + containing_blocks_have_cleanups_or_stack_level, + create_artificial_label, gimplify_function_tree, + get_name, unshare_expr, walk_tree, + walk_tree_without_duplicates, in_gimple_form): Declare. + (struct tree_exp): Add fields locus and block. + (struct tree_ssa_name, struct edge_def, struct + tree_phi_node, struct tree_eref_common, struct + tree_euse_node, struct ephi_arg_d, struct tree_ephi_node, + union alias_var_def, struct tree_statement_list_node, + struct tree_statement_list, enum operand_equal_flag): Declare. + (enum tree_node_structure_enum): Add TS_SSA_NAME, + TS_PHI_NODE, TS_EPHI_NODE, TS_EUSE_NODE, TS_EREF_NODE, + TS_STATEMENT_LIST. + (union tree_node): Add fields ssa_name, phi, eref, ephi, + euse and stmt_list. + (function_cannot_inline_p, uninitialized_vars_warning, + save_for_inline, output_inline_function, all_cases_count, + check_for_full_enumeration_handling, + declare_nonlocal_label): Remove. + (enum tree_dump_index): Add TDI_none, TDI_tu, + TDI_generic, TDI_nested, TDI_vcg, TDI_xml. + * unroll.c (unroll_loop): Don't clear map->inline_target. + * unwind-sjlj.c (uw_install_context): Make a proper static inline + function. + * value-prof.c (value_prof_hooks): New. + (find_values_to_profile): Rename to rtl_find_values_to_profile. + Move rtl-specific bits in from branch_prob. + (value_profile_transformations): Rename to + rtl_value_profile_transformations. + (struct value_prof_hooks): New. + (rtl_value_prof_hooks): New. + (rtl_register_value_prof_hooks): New. + (tree_find_values_to_profile): New stub. + (tree_value_profile_transformations): New stub. + (tree_value_prof_hooks): New stub. + (tree_register_value_prof_hooks): New stub. + (find_values_to_profile): New. + (value_profile_transformations): New. + * value-prof.h: Add multiple inclusion guard. + (struct histogram_value): Change rtx fields to void *. + (rtl_register_value_prof_hooks): New declaration. + (tree_register_value_prof_hooks): New declaration. + (find_values_to_profile): New declaration. + (free_profiled_values): New declaration. + (value_profile_transformations): New declaration. + (struct profile_hooks): New declaration. + (init_branch_prob): Declaration moved from rtl.h. + (branch_prob): Declaration moved from rtl.h. + (end_branch_prob): Declaration mooved from rtl.h. + (tree_register_profile_hooks): New declaration. + (rtl_register_profile_hooks): New declaration. + (tree_profile_hooks): New declaration. + (rtl_profile_hooks): New declaration. + * varasm.c: Include tree-mudflap.h. + (TRAMPOLINE_ALIGNMENT): Remove. + (make_decl_rtl): Call mudflap_enqueue_decl. + (assemble_static_space): + (assemble_trampoline_template): Set and return + TRAMPOLINE_ALIGNMENT. + * varray.c (element): Add GENERIC_PTR_NOGC entry. + Add entry for 'tree *'. + Add entry for struct edge_def *. + (varray_copy): New. + * varray.h (enum varray_data_enum): Add + VARRAY_DATA_GENERIC_NOGC, VARRAY_DATA_EDGE and + VARRAY_DATA_TREE_PTR. + (union varray_data_tag): Corresponding changes. + (VARRAY_GENERIC_PTR_NOGC_INIT, VARRAY_EDGE_INIT, + VARRAY_TREE_PTR_INIT, VARRAY_GENERIC_PTR_NOGC, + VARRAY_EDGE, VARRAY_TREE_PTR, + VARRAY_PUSH_GENERIC_PTR_NOGC, VARRAY_PUSH_EDGE, + VARRAY_PUSH_TREE_PTR, VARRAY_TOP_GENERIC_PTR_NOGC, + VARRAY_TOP_EDGE, VARRAY_TOP_TREE_PTR): Define. + + * config/*/*: Various updates for changed macros, tree + codes, etc. Check ChangeLog.tree-ssa. + + * doc/cfg.texi: New file. + * doc/tree-ssa.texi: New file. + * doc/c-tree.texi: Document new codes. + * doc/gccint.texi: Include new files. + * doc/install.texi: Document new features. + * doc/invoke.texi: Document new switches. + * doc/passes.texi: Document new passes. + * doc/rtl.texi: Update changed RTL codes. + * doc/sourcebuild.texi: Update build instructions. + * doc/standards.texi: Document Fortran changes. + * doc/tm.texi: Update. + 2004-05-12 Paolo Bonzini <bonzini@gnu.org> Replace several arrays with a struct of arrays. |