From b9de1157289455b0ca26daff519d4a0ddcd1fa13 Mon Sep 17 00:00:00 2001 From: Dan Albert Date: Wed, 24 Feb 2016 13:48:45 -0800 Subject: Update 4.8.1 to 4.8.3. My previous drop was the wrong version. The platform mingw is currently using 4.8.3, not 4.8.1 (not sure how I got that wrong). From ftp://ftp.gnu.org/gnu/gcc/gcc-4.8.3/gcc-4.8.3.tar.bz2. Bug: http://b/26523949 Change-Id: Id85f1bdcbbaf78c7d0b5a69e74c798a08f341c35 --- gcc-4.8.1/gcc/ChangeLog.tree-ssa | 19345 ------------------------------------- 1 file changed, 19345 deletions(-) delete mode 100644 gcc-4.8.1/gcc/ChangeLog.tree-ssa (limited to 'gcc-4.8.1/gcc/ChangeLog.tree-ssa') diff --git a/gcc-4.8.1/gcc/ChangeLog.tree-ssa b/gcc-4.8.1/gcc/ChangeLog.tree-ssa deleted file mode 100644 index c4b25fdd2..000000000 --- a/gcc-4.8.1/gcc/ChangeLog.tree-ssa +++ /dev/null @@ -1,19345 +0,0 @@ -2004-05-11 Diego Novillo - - * tree-cfg.c (delete_tree_cfg): Update call to - free_basic_block_vars. - -2004-05-10 Diego Novillo - - * tree-ssa-live.h: Fix typo in #include guard. - -2004-05-08 Jeff Sturm - - * tree-eh.c (lower_catch): Lower catch body in context of - catch_region. - -2004-05-07 Richard Henderson - - * tree-eh.c (tree_could_trap_p): Use get_base_address on references. - -2004-05-07 Diego Novillo - - * doc/invoke.texi: Remove documentation for -ftree-copyprop. - Update documentation for -ftree-pre. - -2004-05-06 Richard Henderson - - * stmt.c (parse_output_constraint): Don't warn for read-write - memory operand. - * gimplify.c (gimplify_asm_expr): Force in-out memory operands - to minimal lvalues, then expand to non-matching constraints. - -2004-05-06 Zack Weinberg - - * c-decl.c (finish_function): When !targetm.have_ctors_dtors, - record static constructors and destructors here... - (c_expand_body_1): ... not here. - * c-objc-common.c (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_objc_common_finish_file): Just call build_cdtor for static - ctors/dtors, then clear the variables. Do this before calling - cgraph_finalize_compilation_unit and cgraph_optimize. - -2004-05-06 Richard Henderson - - * fold-const.c (fold): Don't build COND_EXPR from comparisons for - boolean and integer result types. Handle X ^ X for TRUTH_XOR_EXPR. - -2004-05-05 Richard Henderson - - * tree-nested.c (create_tmp_var_for): Disallow variable sized types. - (convert_nonlocal_reference): Set val_only false for the base of a - component or array reference. - (convert_local_reference): Likewise. - -2004-05-05 Richard Henderson - - * gimplify.c (create_tmp_var): Disallow variable sized objects. - (gimplify_modify_expr): Don't memcpy for VA_ARG_EXPR. - -2004-05-05 Richard Henderson - - * fold-const.c (operand_equal_p): Replace only_const argument with - flags. Allow pure functions if OEP_PURE_SAME. - (fold, nondestructive_fold_binary_to_constant): Use OEP_ONLY_CONST. - * tree-cfg.c (phi_alternatives_equal): Fix operand_equal_p flag type. - * tree-ssa-dom.c (avail_expr_eq): Use OEP_PURE_SAME. - * tree.h (enum operand_equal_flag): New. - (operand_equal_p): Update argument list. - -2004-05-05 Richard Henderson - - * tree-ssa-operands.c (get_call_flags): Remove. - (get_expr_operands): Use call_expr_flags. - * tree-alias-common.c (call_may_clobber): Likewise. - (call_may_return): Likewise. - -2004-04-05 Andrew Pinski - - PR c/15062 - * c-typeck.c (build_asm_expr): Mark the output operands - to an asm addressable, if necessary. - -2004-05-05 Steven Bosscher - - * Makefile.in (GTFILES): Remove duplicate basic-block.h. - -2004-05-04 Richard Henderson - - * gimplify.c (build_addr_expr_with_type): Set TREE_ADDRESSABLE. - (gimplify_modify_expr): Turn variable-width assignment into memcpy. - * tree-nested.c (convert_local_reference): Set val_only after default. - -2004-05-04 Diego Novillo - - * tree-cfg.c (tree_cfg2vcg): Rename from tree_cfg2dot. Update all - users. - Emit flowgraph using VCG syntax. - * tree-dump.c (dump_files): Rename -fdump-tree-dot to - -fdump-tree-vcg. - * tree.h (enum tree_dump_index): Rename TDI_dot to TDI_vcg. - * doc/invoke.texi: Update documentation to describe - -fdump-tree-vcg. - -2004-05-03 Andrew Pinski - - * objc/objc-act.c (build_objc_string_object): - Add the fields to the purpose of the list for - the constructor. - -2004-05-03 Richard Henderson - - * c-simplify.c (gimplify_if_stmt): Loop for else-if. - -2004-05-03 Andrew Pinski - - PR optimization/15245 - * tree-ssa-phiopt.c (conditional_replacement): Use fold_convert - instead of convert. - -2004-05-03 Diego Novillo - - * gimplify.c (gimplify_compound_lval): Gimplify non-constant - array indices into a temporary variable. - -2004-04-30 Richard Henderson - - * builtins.c (validate_arglist): Don't reject side effects. - (simplify_builtin_strcpy): Do reject side effects in length. - -2004-04-30 Jeff Law - - * tree-outof-ssa.c (eliminate_build): Move code which verifies - that all of a PHI's arguments do not have a partition if the - result does not have a partition from here to... - (rewrite_trees): Here. - -2004-04-24 Zdenek Dvorak - - * tree-cfg.c (factored_computed_goto_label, - factored_computed_goto): Removed. - (disband_implicit_edges): Unfactor computed gotos without - using them. - -2004-04-23 Per Bothner - - * expr.c (expr_wfl_stack): Remove unused global. - - Pre-patches for future source_location / location_t merge. - * tree.h (EXPR_LOCATION, EXPR_HAS_LOCATION): New macros. - * expr.c (expand_expr_real, expand_expr_real_1): Use new macros. - * gimple-low.c (lower_stmt): Likewise. - * gimplify.c (annotate_all_with_locus): Likewise. - * print-tree.c (print_node): Likewise. - * tree-inline.c (expand_call_inline): Likewise. - * tree-pretty-print.c (tree-pretty-print.c): Likewise. - * tree-sra.c (scalarize_structure_assignment, emit_scalar_copies, - scalarize_call_expr): Likewise. - * tree-ssa-pre.c (code_motion): Likewise. - -2004-04-23 Andrew Pinski - - * c-simplify.c (gimplify_decl_stmt) [TYPE_DECL]: - Do not check the type. - -2004-04-22 Jeff Law - - * tree-into-ssa.c (rewrite_initialize_block_local_data): Mark all - arguments as potentially unused. Do not bother to VARRAY_CLEAR - the block_defs. Instead abort if we are presented with a block - which has a nonempty block_defs. Wrap entire thing inside - #ifdef ENABLE_CHECKING. - * tree-ssa-dom.c (dom_opt_initialize_block_local_data): Similarly - - * tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Do not mark - arguments to bypassed PHIs as needing to be rewritten. - -2004-04-21 Richard Henderson - - PR middle-end/14978 - * tree-nested.c (convert_nonlocal_reference): Set val_only when - processing any otherwise unhandled expression. - -2004-04-21 Jeff Law - - * tree-ssa-copy.c (cprop_operand): Break out of cprop_into_stmt. - (cprop_into_stmt): Use cprop_operand. Rearrange slightly to avoid - switch statement inside a loop. - - * tree-flow.h (var_ann_d): Add "current_def" field. - (register_new_def): Lose last argument (currdefs table). - * tree-into-ssa.c (currdefs): Remove. - (rewrite_into_ssa): Initialize current_def field on each variable's - annotation. Remove initialization/clearing of currdefs. - (set_value_for, get_value_for): Kill. - (rewrite_initialize_block): Update call to register_new_def. - (rewrite_stmt): Similarly. - (rewrite_finalize_block): Get/set a _DECL node's current - definition from its annotation. - (get_reaching_def): Similarly. - (register_new_def): Similarly. Lose last argument. - * tree-ssa-dom.c (currdefs): Remove. - (get_value_for, set_value_for): Simplify. - (tree_ssa_dominator_optimize): Initialize current_def on each - variable's annotation. Remove initialization/clearing of currdefs. - (thread_across_edge): Lose unnecessary argument to register_new_def. - (record_equivalences_from_phis): Likewise. - (register_definitions_for_stmt): Likewise. - (restore_currdefs_to_original_value): Get/set a _DECL node's current - definition from its annotation. Lose unnecessary "table" argument. - (dom_opt_finalize_block): Corresponding changes. - - * tree-dfa.c (free_df_for_stmt): Release memory back to the GC - system immediately. - -2004-04-21 Ben Elliston - - PR middle-end/14730 - * expr.c (expand_expr_real_1) : Discard out of bounds - case label values and ranges. Saturate case range values that - exceed the minimum or maximum permitted value for the controlling - expression type to TYPE_MIN_VALUE or TYPE_MAX_VALUE. - -2004-04-20 Jeff Law - - * tree-into-ssa.c (register_new_def): Avoid pushing useless - information onto the block local definition stack. - - * tree-into-ssa.c (register_new_def): If there is no current - reaching definition for SSA_NAME_VAR (DEF), then just push - SSA_NAME_VAR (DEF) onto the stack. - (rewrite_finalize_block): If we pop a _DECL node from the stack, - then the _DECL node has no current reaching definition. - * tree-ssa-dom.c (restore_currdefs_to_original_value): Similarly. - -2004-04-19 Jeff Law - - * tree-ssa-dom.c: Reinstate all changes from 2004-04-12. - (lookup_avail_expr): Do not access a hash table object after - it has been freed. - -2004-04-19 Daniel Berlin - - * doc/passes.texi: Add blurb about PRE. - -2004-04-19 Andrew Pinski - - * tree-ssa-phiopt.c (conditional_replacement): - Catch some more non-gimple. - -2004-04-19 Jan Hubicka - - * predict.c (combine_predictions_for_bb): Fix pasto. - -2004-04-18 Jan Hubicka - - * tree-inline.c (estimate_num_insn_1): Deal properly with - builtin_constant_p and builtin_expect. - -2004-04-17 Andrew MacLeod - - * doc/invoke.texi (tree-ter, tree-lrs): Document options. - -2004-04-17 Paul Brook - - * Makefile.in: Set GMPLIBS and GMPINC. - * configure.ac: Add GMPLIBS and GMPINC. - * configure: Regenerate. - -2004-04-16 Andrew MacLeod - - * common.opt (ftree-lrs): New common option. - * flags.h (flag_tree_live_range_split): New flag. - * opts.c (decode_options): Turn on LRS by default. - (common_handle_option): Set LRS flag to specified value. - * toplev.c (flag_tree_live_range_split): Initialize. - (lang_independent_options f_): Add tree-lrs. - * tree-outof-ssa.c (rewrite_out_of_ssa): Use LRS flag. - * tree-ssa-copyrename.c (copy_rename_partition_coalesce): Don't coalesce - variables if one is a hardware register. Coalesce inlined user vars. - (rename_ssa_copies): Scan blocks first, then PHI nodes. - -2004-04-15 Andrew Pinski - - * builtins.c (fold_builtin_isascii): Do not return non-gimple - code when we are in gimple form. - (fold_builtin_isdigit): Do not return non-gimple - code when we are in gimple form. - - * c-simplify.c (gimplify_decl_stmt): Handle TYPE_DECL. - -2004-04-14 Paul Brook - - * Makefile.in (GMPLIBS, GMPINC): Don't set. - * configure.ac: Remove checks for GMP. - * configure: Regenerate. - -2004-04-13 Diego Novillo - - * fold-const.c, tree-ssa-ccp.c, tree-ssa-dom.c, - tree-ssa.c, tree.c: Replace all uses of TREE_UNSIGNED with - TYPE_UNSIGNED or DECL_UNSIGNED. - - * c-semantics.c (build_stmt): Don't check type nodes for - side effects. - -2004-04-13 Jeff Law - - * tree-ssa-dom.c: Revert all changes from 2004-04-12. - -2004-04-12 Jeff Law - - * tree-ssa-dom.c (struct expr_hash_elt): Add new field for hash value. - (initialize_hash_element): New LHS argument. Callers changed. - Initialize the hash value field. - (remove_local_expressions_from_table): Use htab_remove_elt_with_hash. - (update_rhs_and_lookup_avail_expr): Similary. - (lookup_avail_expr): Use htab_find_slot_with_hash. Simplify slightly - and pass LHS to initialize_hash_element. - (record_cond): Also use htab_find_slot_with_hash. Initialize the - hash table entry with initialize_hash_element. - (avail_expr_eq): Use the saved hash value rather than calling into - the hash functions again. - - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Slightly rearrange - code to clear tables before each iteration to be clearer. - - * tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Use - DEF_OPS and VDEF_OPS instead of STMT_DEF_OPS and STMT_VDEF_OPS. - -2004-04-12 Diego Novillo - - * flags.h (flag_tree_loop): Remove. Update all users. - * opts.c (common_handle_option) : Remove. - * toplev.c (f_options): Remove -ftree-loop-optimize. - * tree-optimize.c (init_tree_optimization_passes): Don't - schedule pass_loop. - * tree-ssa-loop.c (tree_ssa_loop_opt): Remove. - (gate_loop): Remove. - * doc/invoke.texi: Remove documentation for -ftree-loop-optimize. - -2004-04-12 Diego Novillo - - * c-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Remove. - * c-semantics.c (expand_stmt_toplev): Remove. - * langhooks-def.h (LANG_HOOKS_RTL_EXPAND_INITIALIZER): Remove. - (LANG_HOOKS_RTL_EXPAND_START): Remove. - (LANG_HOOKS_RTL_EXPAND_STMT): Remove. - (LANG_HOOKS_RTL_EXPAND_END): Remove. - * langhooks.h (struct lang_hooks_for_rtl_expansion): Remove. - (struct lang_hooks): Update. - * tree-optimize.c (tree_rest_of_compilation): Don't call - lang_hooks.rtl_expand.start nor lang_hooks.rtl_expand.end. - Call expand_expr_stmt_value instead of - lang_hooks.rtl_expand.stmt. - * objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Remove. - - -2004-04-12 Richard Henderson - - * c-common.c (c_do_switch_warnings): Use EXPR_LOCUS instead - of STMT_LINENO. - (c_walk_subtrees): Likewise. - (c_estimate_num_insns_1): Remove FILE_STMT. - * c-common.def (FILE_STMT): Remove. - * c-common.h (FILE_STMT_FILENAME_NODE): Remove. - (FILE_STMT_FILENAME, STMT_LINENO, STMT_LINENO_FOR_FN_P): Remove. - (c_common_stmt_codes): Remove FILE_STMT. - * c-dump.c (dump_stmt): Use EXPR_LOCUS instead of STMT_LINENO. - * c-parse.in (lineno_stmt, lineno_label): Likewise. - * c-pretty-print.c (pp_c_statement): Remove FILE_STMT. - * c-semantics.c (add_stmt): Don't emit FILE_STMT. Do set - EXPR_LOCUS if not yet set. - (finish_stmt_tree): Don't set line for end of function. - (build_stmt): Set EXPR_LOCUS instead of STMT_LINENO. - (prep_stmt): Use EXPR_LOCUS instead of STMT_LINENO. - * c-simplify.c (c_gimplify_stmt): Remove FILE_STMT. - (gimplify_block): Save and restore entire locus. - (stmt_expr_last_stmt): Use EXPR_LOCUS instead of STMT_LINENO. - * doc/c-tree.texi (FILE_STMT, FILE_STMT_FILENAME, STMT_LINENO): Remove. - -2004-04-12 Jeff Law - - * tree-ssa-dom.c (true_exprs, false_exprs): Kill. - (struct expr_hash_elt): New structure for the expression hash table. - (struct dom_walk_block_data): Kill block local true_exprs and - false_exprs. - (get_eq_expr_value): One less local varray argument. Fix prototype. - Use record_cond rather than record_cond_is_{true,false}. - (true_false_expr_hash, true_false_expr_eq): Kill. - (record_cond_is_true, record_cond_is_false): Collapse into ... - (record_cond): New function. - (tree_ssa_dominator_optimize): Kill references to true_exprs and - false_exprs. Use "free" as the free function for the avail_exprs - hash table. - (dom_opt_initialize_block_local_data): No longer initialize - block local true/false expressions. - (initialize_hash_element): New function. - (remove_local_expressions_from_table): Use initialize_hash_element. - (update_rhs_and_lookup_avail_expr): Similarly. - (dom_opt_finalize_block): Record true/false expressions into the - main avail_expr hash table. Unwind main hash table appropriately. - Use record_cond rather than record_cond_is_{true,false}. - (record_equivalences_from_incoming_edge): Pass block local avail_exprs - varray instead of block local true/false varrays to get_eq_expr_value. - (dump_dominator_optimization_stats): Update to reflect that the - true/false expression hash tables are gone. - (lookup_avail_expr): Simplify slightly now that we only have one - expression hash table. - (avail_expr_hash, avail_expr_eq): Generalize slightly to handle new - hash table entry structure and having true/false expression information - in the available expression hash table. - -2004-04-09 Jeff Law - - * tree-ssa_dom.c (register_definitions_for_stmt): Accept a statement - annotation rather than the statement itself. Callers changed. - Use [V]DEF_OPS rather than STMT_[V]DEF_OPS. - * tree-ssa-operands.c (get_stmt_operands): Slightly reorganize to - avoid unnecessary calls to stmt_ann. - * tree-ssa-pre.c (expr_phi_insertion): Get the statement's annotation - and use [V]USE_OPS rather than STMT_[V]USE_OPS. - (same_e_version_phi_result): Similarly - (process_left_occs_and_kills): Similarly for [V]DEF_OPS and - STMT_[V]DEF_OPS. - * tree-ssa.c (replace_immediate_uses): Similarly. - (verify_ssa): Similarly. Also verify that VDEF_OPs uses are dominated - by their sets. - - * tree-into-ssa.c (insert_phi_nodes_for): Use passed in worklist - varray instead of allocated one for every variable we rewrite into - SSA form. - (insert_phi_nodes_1): Pass worklist varray from caller to - insert_phi_nodes_for. - (insert_phi_nodes): Allocate a worklist for insert_phi_nodes_for - and pass it to insert_phi_nodes_1. - -2004-04-08 Jeff Law - - * tree-ssa-dom.c (nonzero_vars): Turn it into a bitmap. - (tree_ssa_dominator_optimize): Update initialization, clearing and - freeing of nonzero_vars. - (restore_nonzero_vars_to_original_value): New function. - (dom_opt_finalize_block): Use it. - (record_var_is_nonzero): Only record the variable into the block - local nonzero vars array if it did not already have a nonzero property. - (lookup_avail_expr): Lookup the nonzero property of an SSA_NAME with - a bitmap test. - - * fold-const.c (fold): Remove attempt to share code which - simplifies tests against the highest/lowest value of a - range between the main folder and the nondestructive folder. - -2004-04-08 Brian Booth - Diego Novillo - - * tree-into-ssa.c (invalidate_name_tags): New function. - Mark aliases of invalidated name tags for renaming. - (rewrite_into_ssa): Call invalidate_name_tags. - -2004-04-07 Diego Novillo - - * gimplify.c (gimplify_call_expr): Remove argument POST_P. - Update all callers. - Don't use POST_P when gimplifying the call expression. - -2004-04-07 Diego Novillo - - * doc/tree-ssa.texi: Add documentation for the dominator - walker. - -2004-04-07 Andrew MacLeod - - * tree-outof-ssa.c: Update comments and reformat for legibility. - * tree-ssa-copyrename.c: Update comments and reformat for legibility. - * tree-ssa-live.c: Update comments and reformat for legibility. - * tree-ssa-live.h: Update comments and reformat for legibility. - -2004-04-07 Diego Novillo - - * gimplify.c (gimplify_call_expr): Don't use POST_P when - gimplifying CALL_EXPR arguments. - -2004-04-06 Diego Novillo - - * tree-dfa.c: Update comments and reformat for legibility. - (find_vars_r): Remove special casing of MODIFY_EXPR and - simplify logic. - (compute_reached_uses, compute_reaching_defs, remove_decl, - find_decl_location): Remove. - (discover_nonconstat_array_refs_r, - discover_nonconstant_array_refs): Move ... - * tree-outof-ssa.c: ... here. - -2004-04-05 Richard Henderson - - * tree-simple.c (is_gimple_min_invariant): Disallow &a+i. - * tree-ssa-ccp.c (maybe_fold_stmt_addition): Rename from - maybe_fold_stmt_plus. Handle MINUS_EXPR. - (fold_stmt_r): Pass MINUS_EXPR to it. - -2004-04-05 Ben Elliston - - * Makefile.in (OBJS-common): Remove tree-browser.o. - (cc1): Depend on @TREEBROWSER@ and include in list of objects. - * configure.ac: Add --enable-tree-browser option. - * configure: Rebuild. - -2004-04-05 Andrew Pinski - - * tree-ssa-ccp.c (fold_stmt_r): Fix whitespace formatting. - (set_rhs): Likewise. - -2004-04-03 Paolo Bonzini - Diego Novillo - - * tree-alias-common.c (find_func_aliases): Support - assigning to BIT_FIELD_REFs. - * tree-cfg.c (verify_expr): Don't allow assign to - a register with BIT_FIELD_REF. - * tree-dfa.c (get_virtual_var): Add consistency check on - the shape of expected VARs. - (discover_nonconstant_array_refs_r): Go through BIT_FIELD_REFs. - * tree-simple.c: Document that BIT_FIELD_REFs are valid lvalues. - * tree-ssa.c (set_is_used): Go through BIT_FIELD_REFs. - * tree-ssa-operands.c (get_expr_operands): Mark VA_ARG_EXPR - nodes as making volatile references. - -2004-04-02 Fariborz Jahanian - - * c-convert.c (convert): Make convert work when converting - to compatible types across translation unit. - -2004-04-02 Andrew Pinski - - * Makefile.in (stage2_build): Remove support for - rebuilding libbanshee. - * configure.ac: Remove support for rebuilding - libbanshee. - * config.gcc (powerpc-*-darwin*): Do not rebuild - libbanshee. - -2004-04-01 Kazu Hirata - - * tree-ssa-forwprop.c: Add a comment about forward propagation - of TRUTH_NOT_EXPR. - -2004-04-01 Diego Novillo - - * tree-optimize.c (tree_rest_of_compilation): Fix typo in - setting of in_gimple_form. - -2004-04-01 Jeff Law - - * fold-const.c (fold_relational_hi_lo): Do not return non-gimple - code when we are in gimple form. - * tree-optimize.c (tree_rest_of_compilation): Note when we are in - gimple form. - * tree-ssa-ccp.c (ccp_fold): Tighten tests on return value from - nondestructive_fold_{unary,binary}_to_constant. - * tree.h (in_gimple_form): Declare. - - * tree-ssa.c (ssa_remove_edge): Correct looping structure. - (ssa_redirect_edge): Similarly - -2004-03-30 Brian Booth - - * tree-pretty-print.c (dump_vops): Add flags argument and - propagate it to dump_generic_node calls. - (dump_generic_node): Update dump_vops call. - -2004-03-29 Diego Novillo - - * configure.ac: Emit confirmation messages for libbanshee. - * configure: Regenerate. - -2004-03-29 Jan Hubicka - - PR 14756 - * cgraphunit.c (cgraph_decide_inlining): Rewrite handling of - always_inline functions. - -2004-03-28 Jan Hubicka - - * tree-inline.c (expand_call_inline): Remove fixme introduced by - nested function patch. - -2004-03-26 Diego Novillo - - * tree-ssa-operands.c (get_stmt_operands): Remove always-true - predicate. - - * tree-ssa-alias.c (maybe_create_global_var): Create - .GLOBAL_VAR if there are no call-clobbered variables. - * tree-ssa-operands.c (get_stmt_operands): Add call-clobbering - VDEFs for asm ("":::"memory") if there are call-clobbered - variables or if .GLOBAL_VAR has been created. - - -2004-03-26 Diego Novillo - - * passes.c (rest_of_compilation): Re-enable .01.rtl - dumps. - -2004-03-25 Diego Novillo - - * tree-pretty-print.c (dump_generic_node) : Remove. - * tree-inline.c (estimate_num_insns_1) : Remove. - * fold-const.c (fold_relational_hi_lo): Change type of argument - 'type_p' to const tree and rename it to 'type'. Update - all callers. - -2004-03-25 Diego Novillo - - * Makefile.in (C_AND_OBJC_OBJS): Remove c-call-graph.o - (c-call-graph.o): Remove. - * c-call-graph.c: Remove. - * c-tree.h (print_call_graph): Remove. - (debug_call_graph): Remove. - * tree-cfg.c: Update/add comments everywhere. - (pre_insert_on_edge): Rename from bsi_insert_on_edge_immediate. - * tree-flow.h (build_tree_cfg): Make static. - (tree_cfg2dot): Likewise. - (verify_stmt): Likewise. - * tree-ssa-pre.c (insert_one_operand): Call pre_insert_on_edge. - -2004-03-25 Diego Novillo - - * tree-ssa-alias.c (struct alias_info): Change type of field - 'num_references' to varray_type. Update all users. - -2004-03-24 Jeff Law - - * c-mudflap (mflang_flush_calls): Use push_scope/pop_scope instead - of pushlevel and poplevel. - -2004-03-23 Richard Henderson - - PR middle-end/14694 - * c-common.c (handle_alias_attribute): Mark aliased variables - to be TREE_STATIC. - -2004-03-23 Jeff Law - - * tree-into-ssa.c (register_new_def): Lose unnecessary VAR argument, - instead derive VAR from DEF argument. - (rewrite_initialize_block, rewrite_stmt, rewrite_operand): Corresponding - changes. - * tree-ssa-dom.c (register_definitions_for_stmt): Corresponding changes. - (record_equivalences_from_phis): Likewise. - (restore_currdefs_to_original_value): New, extracted from ... - (dom_opt_finalize_block): Use restore_currdefs_to_original_value. - Restore currdefs after threading across a true edge. - (thread_across_edge): Register new defintions when we walk through - a PHI node or real statement. - * tree-flow.h (register_new_def): Updated. - -2004-03-23 Zdenek Dvorak - - * tree-ssa-dce.c (find_obviously_necessary_stmts, - perform_tree_ssa_dce): Do not remove loops. - -2004-03-19 Diego Novillo - - PR optimization/14643 - * tree-ssa-alias.c (group_aliases_into): Don't add a variable - to its own may-alias set. - (create_alias_map_for): New. - (setup_pointers_and_addressables): Call it. - Fix allocation of AI->ADDRESSABLE_VARS and AI->POINTERS. - If there are no addressable variables and more than one - dereferenced pointers, add type tags to the ADDRESSABLE_VARS - array. - (get_tmt_for): Add comment about using alias set equality when - checking for existing tags. - -2004-03-19 Kazu Hirata - - * fold-const.c (fold_relational_const): Remove dead code. - -2004-03-19 Dale Johannesen - - * tree-ssa-dse.c (dse_optimize_stmt): Redirect uses feeding into - a deleted store correctly. - -2004-03-19 Jeff Law - - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Fix typo. - Eliminate unnecessary test of VAL. - - * tree-dfa.c (find_hidden_use_vars): Also look inside the - PENDING_SIZES list for hidden uses. - * tree-optimize.c (tree_rest_of_compilation): Expand used variables - before setting up parameters. - * tree-ssa-copyrename.c (rename_ssa_copies): Do nothing for copies - where the LHS has a hidden use. - -2004-03-18 Diego Novillo - - * Makefile.in (TREE_FLOW_H): Reformat. - (OBJS-common): Add tree-into-ssa.o and tree-outof-ssa.o. - (tree-ssa.o): Remove dependency on domwalk.h and tree-ssa-live.h - (tree-into-ssa.o): New. - (tree-outof-ssa.o): New. - (GTFILES): Remove tree-ssa.c. - (gt-tree-ssa.h): Remove. - * tree-into-ssa.c: New file. - Move all the functions used to rename into SSA from tree-ssa.c. - Update/add comments. - Remove unused variables and structures. - Don't use GGC for memory allocation. - * tree-outof-ssa.c: New file. - Move all the functions used to rename out of SSA from - tree-ssa.c. - Update/add comments. - * tree-ssa-alias.c (compute_points_to_and_addr_escape): Add - bibliographic reference. - -2004-03-18 Jeff Law - - * Makefile.in (tree-tailcall.o): Depend on langhooks.h. - * tree-tailcall.c: Include langhooks.h. - (find_tail_calls): Use types_compatible_p langhook instead of - equality test of TYPE_MAIN_VARIANT. - - * tree-nested.c (get_chain_decl): Mark the chain decl with - TREE_NO_WARNING. - -2004-03-18 Devang Patel - - * tree-ssa-live.c (new_tree_live_info): Set num_blocks to - last_basic_block instead of n_basic_blocks. - (calculate_live_on_entry): Use last_basic_block instead of - n_basic_blocks. - (calculate_live_on_exit): Same. - -2004-03-17 Jeff Law - - * tree-tailcall.c (find_tail_calls): Tighten test for tail recursion. - -2004-03-17 Diego Novillo - - PR optimization/14511 - * tree-ssa-alias.c (compute_flow_insensitive_aliasing): Do not - ignore read-only variables. - (may_alias_p): Fix pointer-to-var calculation when 'var' is an - array. - -2004-03-17 Jan Hubicka - - * tree-ssa.c (rewrite_into_ssa, compute_global_livein): Fix. - -2004-03-17 Paolo Bonzini - - * builtins.c (expand_builtin_constant_p, - purge_builtin_constant_p): Remove. - (expand_builtin): Expand __builtin_constant_p to zero. - * function.c (struct function): Remove calls_constant_p. - (current_function_calls_constant_p): Remove. - * passes.c (rest_of_handle_gcse): Do not run - purge_builtin_constant_p. - * rtl.def (CONSTANT_P_RTX): Die die die. - - * cse.c (fold_rtx): Do not handle CONSTANT_P_RTX. - * expr.c (emit_move_insn): Likewise. - * gcse.c (want_to_gcse_p, gcse_constant_p): Likewise. - * genrecog.c (validate_pattern): Likewise. - * recog.c (immediate_operand): Likewise. - * rtl.h (CONSTANT_P): Likewise. - * simplify-rtx.c (simplify_rtx): Likewise. - * config/alpha/alpha.c (input_operand): Likewise. - * config/arm/arm.c (THUMB_LEGITIMATE_CONSTANT_P): Likewise. - * config/c4x/c4x.c (const_operand): Likewise. - * config/cris/cris.c (cris_gotless_symbol, - cris_got_symbol): Likewise. - * config/frv/frv.h (LEGITIMATE_PIC_OPERAND_P): Likewise. - * config/ia64/ia64.c (gr_reg_or_5bit_operand, - gr_reg_or_6bit_operand, gr_reg_or_8bit_operand, - gr_reg_or_8bit_adjusted_operand, - gr_reg_or_8bit_and_adjusted_operand, - gr_reg_or_14bit_operand, gr_reg_or_22bit_operand, - shift_count_operand, shift_32bit_count_operand): Likewise. - * config/m32r/m32r.c (move_src_operand): Likewise. - * config/mips/mips.c (mips_const_insns): Likewise. - * config/mmix/mmix.c (mmix_constant_address_p): Likewise. - * config/pa/pa.c (move_src_operand): Likewise. - * config/rs6000/rs6000.c (input_operand): Likewise. - * config/sparc/sparc.c (input_operand): Likewise. - * config/v850/v850.c (movsi_source_operand): Likewise. - * config/xtensa/xtensa.c (move_operand, - xtensa_emit_move_sequence): Likewise. - * config/ia64/ia64.h (PREDICATE_CODES): Do not mention CONSTANT_P_RTX. - * config/pa/pa.h (PREDICATE_CODES): Likewise. - -2004-03-16 Diego Novillo - - * tree-dump.c (struct dump_option_value_info): Add TDF_UID. - * tree.h (TDF_UID): Define. - * doc/invoke.texi: Document -ftree-dump-...-uid. - * tree-pretty-print.c (debug_generic_expr): Add TDF_UID. - (debug_generic_stmt): Likewise. - (dump_decl_name): New function. - (dump_generic_node): Call it. - (print_declaration): Add new argument 'flags'. Update all users. - (print_struct_decl): Likewise. - * tree-alias-ander.c, tree-cfg.c, tree-dfa.c, tree-mudflap.c, - tree-nrv.c, tree-sra.c, tree-ssa-alias.c, tree-ssa-ccp.c, - tree-ssa-copy.c, tree-ssa-dom.c, tree-ssa-dse.c, - tree-ssa-forwprop.c, tree-ssa-operands.c, tree-ssa-pre.c, - tree-ssa.c, tree-tail-call.c: Call print_generic_* with - 'dump_flags'. - -2004-03-16 Dale Johannesen - - * Makefile.in (tree-ssa-phiopt.o): add langhooks.h dependency. - (tree-nrv.o): Ditto. - (tree-ssa-copy.o): Ditto. - (tree-ssa-dom.o): Ditto. - (tree-ssa-ccp.o): Ditto. - * c-common.c: Add #include hashtab.h. - (c_type_hash): New. - (c_common_get_alias_set): Handle multiple type nodes referring - to "the same" type, currently for C90 only. - * c-decl.c (current_file_decl): Move to toplev.c. - * c-lang.c (LANG_HOOKS_TYPES_COMPATIBLE_P): Define to - c_types_compatible_p. - (c_types_compatible_p): New. - * c-tree.h (c_types_compatible_p): New declaration. - * c-typeck.c (tagged_types_tu_compatible_p): Allow for - compiler-generated TYPE_DECLs without a DECL_ORIGINAL_TYPE. - * gimplify.c (canonicalize_addr_expr): Use types_compatible_p langhook. - (cpt_same_type): Ditto. - * langhooks-def.h (lhd_types_compatible_p): New declaration. - LANG_HOOKS_TYPES_COMPATIBLE_P: New. - * langhooks.c (lhd_types_compatible_p): New. - * langhooks.h (struct lang_hooks): Add types_compatible_p. - * stmt.c (tail_recursion_args): Use types_compatible_p langhook. - * toplev.c (current_file_decl): New, moved from c-decl.c. - * tree-nrv.c: Include langhooks.h. - (tree_nrv): Use types_compatible_p langhook. - * tree-ssa-ccp.c: Include langhooks.h. - (maybe_fold_offset_to_array_ref): Use types_compatible_p langhook. - (maybe_fold_offset_to_component_ref): Ditto (2 places). - (fold_stmt_r): Make sure rhs of COMPONENT_REF is in lhs type. - * tree-ssa-copy.c: Include langhooks.h. - (cprop_into_stmt): Use types_compatible_p langhook. - * tree-ssa-dom.c: Include langhooks.h. - (avail_expr_p): Use types_compatible_p langhook. - * tree-ssa-phiopt.c: Include langhooks.h. - (conditional_replacement): Use types_compatible_p langhook. - * tree-ssa.c (tree_ssa_useless_type_conversion_1): Use - types_compatible_p langhook. - * tree.h (current_file_decl): New declaration. - -2004-03-16 Dale Johannesen - - PR optimization/14498 - * gimplify.c (copy_if_shared_r): Mark VA_ARGS_EXPRs as volatile. - (mark_decls_volatile_r): Moved higher in file (unchanged). - -2004-03-16 Daniel Berlin - - PR optimization/14562 - * tree-ssa-pre.c (generate_expr_as_of_bb): Don't use names_match_p. - (generate_vops_as_of_bb): Ditto. - -2004-03-12 Diego Novillo - - PR optimization/14553 - * tree-ssa.c (replace_immediate_uses): Call propagate_value to - update operands. - -2004-03-12 Diego Novillo - - * tree-alias-common.c (create_alias_vars): Add #if - HAVE_BANSHEE around test for PTA_ANDERSEN. - -2004-03-11 Diego Novillo - - * tree-dfa.c (struct walk_state): Remove fields 'is_store' and - 'is_indirect_ref'. Update all users. - * tree-flow.h (struct var_ann_d): Remove fields 'is_stored', - 'is_dereferenced_store' and 'is_dereferenced_load'. Update - all users. - * tree-simple.c (get_base_address): Handle BIT_FIELD_REF. - * tree-ssa-alias.c (struct alias_info): Add fields - 'written_vars', 'dereferenced_ptrs_store' and - 'dereferenced_ptrs_load'. - (init_alias_info): Initialize them. - (delete_alias_info): Free them. - (find_ptr_dereference): New. - (ptr_is_dereferenced_by): Call it. - Add new argument 'is_store'. Set to true if the - expression is an indirect store operation. - (compute_points_to_and_addr_escape): If the statement - makes a store, load or write operation, update the - corresponding bitmap. - (compute_flow_insensitive_aliasing): Test the - 'written_vars' bitmap to determine if alias sets should - be computed. - (setup_pointers_and_addressables): Always assume that - volatile pointers and hidden pointers have been used in a - memory store operation. - * tree-ssa-operands.c (add_stmt_operand): Do add an - operand for may-aliased variables before computing - aliases. - -2004-03-11 Zdenek Dvorak - - * tree-optimize.c (init_tree_optimization_passes): Move - pass_tail_recursion and pass_ch after pass_may_alias. - * tree-ssa-loop.c (mark_defs_for_rewrite): Mark type tags - for rewriting. - * tree-ssa.c (mark_def_sites): Process the operand of a - VDEF before the result. - -2004-03-11 Richard Henderson - - PR 14204 - * tree-ssa.c (warn_uninit): Don't warn for hard register variables. - -2004-03-10 Richard Henderson - - * tree-simple.c (get_base_var, get_base_decl): Remove. - * tree-simple.h: Likewise. - * tree-dfa.c (discover_nonconstant_array_refs_r): Use get_base_address. - * tree-ssa-alias.c (ptr_is_dereferenced_by): Likewise. - (add_pointed_to_var, is_escape_site): Likewise. - * tree-ssa-ccp.c (get_default_value): Expect only SSA_NAME and DECLs. - * tree-ssa-operands.c (add_stmt_operand): Likewise. - (note_addressable): Use get_base_address. - * tree-ssa-dce.c (need_to_preserve_store): Expect only SSA_NAME. - * tree-ssa.c (set_is_used): Inline get_base_decl. - -2004-03-10 Richard Henderson - - * tree-nested.c (convert_nonlocal_reference): Clear TREE_INVARIANT - on modified ADDR_EXPRs. - -2004-03-10 Andrew Pinski - - * Makefile.in (tree-ssa-forwprop.o): Fix the dependences. - -2004-03-09 Jeff Law - - * tree-flow-inline.h (may_propagate_copy): Do not allow propagation of - a constant for a virtual operand. - -2004-03-08 Richard Henderson - - * calls.c (initialize_argument_information): Add - parameter may_tail_call. Set to false for invisible - pass-by-reference arguments that require stack - allocation. - Update all users. - -2004-03-07 Jeff Law - - * tree-ssa-dom.c: (get_eq_expr_value): Fix typo when comparing a - boolean against a constant. - * tree-ssa-forwprop.c (record_single_argument_cond_exprs): Do not - record the same SSA_NAME more than once. Only record the SSA_NAME - tested, not the COND_EXPR. - (substitute_single_use_vars): Substitute booleans which are - set from a TRUTH_NOT_EXPR even if they have more than one use site. - -2004-03-05 Jeff Law - - * tree-ssa-dce.c (remove_dead_stmt): Clear PENDING_STMT after - redirect_edge_and_branch call. - - * tree-ssa-forwprop.c (record_single_argument_cond_exprs): Also - record COND_EXPRs with single use vars defined by SSA_NAME + CONST - expressions. - (substitute_single_use_vars): Corresponding changes to rewrite - COND_EXPRs using single use vars defined by SSA_NAME + CONST - expressions. - -2004-03-05 Ulrich Weigand - - * config/s390/s390.c (s390_expand_movstr): Do not use - expand_exit_loop_top_cond, manually copy loop header. - (s390_expand_clrstr): Likewise. - (s390_expand_cmpmem): Likewise. - -2004-03-04 Diego Novillo - - * tree-ssa-alias.c (compute_flow_sensitive_aliasing): If - a name tag has been marked call-clobbered, also mark the - corresponding type tag. - -2004-03-04 Zdenek Dvorak - - * tree-ssa-loop-live.c (coalesce_tpa_members): Update the root - variable of the partition. - -2004-03-04 Jeff Law - - * tree-ssa-dce.c (remove_dead_stmt): Redirect an existing edge - rather than deleting the old ones and creating a new one when - removing a dead conditional. - - * fold-const.c (fold): When rebuilding the expression after a - call to fold_relational_hi_lo, make sure to convert the type of - the second argument to the type of the first. - -2004-03-04 Diego Novillo - - * cgraphunit.c (cgraph_optimize): Do not do memory release - check if there have been errors. - -2004-03-03 Jeff Law - - * tree-ssa-phiopt.c (conditional_replacement): Clear EDGE_TRUE_VALUE - and EDGE_FALSE_VALUE on the remaining edge after eliminating a PHI. - -2004-03-03 Andrew MacLeod - - * tree-ssa-copyrename.c (gate_copyrename): Really check it in. - * tree-ssa.c (create_temp): Use DECL_ARTIFICIAL from original decl. - -2004-03-02 Zdenek Dvorak - - * tree-tailcall.c (struct tailcall): Remove return_block and return_bsi - fields, add m and a fields. - (m_acc, a_acc): New. - (find_tail_calls): Find tail calls on whose results simple operations - are performed. - (independent_on_stmt_p, process_assignment, - propagate_through_phis, adjust_accumulator_values, - adjust_return_value): New. - (eliminate_tail_call): Update the accumulators if needed. - (optimize_tail_call): Do not create phis. - (tree_optimize_tail_calls): Create phis and accumulators as needed. - Adjust return values. - -2004-03-02 Diego Novillo - - * tree-ssa-operands.c (get_expr_operands): Mark CALL_EXPRs - with has_volatile_ops if aliases haven't been computed yet. - (add_stmt_operand): Use 'true' instead of '1'. - -2004-03-02 Diego Novillo - - PR optimization/14266 - * tree-ssa-alias.c (create_global_var): Mark GLOBAL_VAR for - renaming. - -2004-03-01 Richard Henderson - - * tree.c (associative_tree_code): Remove MINUS_EXPR, LSHIFT_EXPR, - RSHIFT_EXPR. - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Use - is_gimple_min_invariant and is_gimple_var. Handle minus_expr - specially. - -2004-03-01 Richard Henderson - - * cfgbuild.c (rtl_make_eh_edge): Rename from make_eh_edge. - * basic-block.h, except.c: Update decl and uses. - -2004-03-01 Frank Ch. Eigler - - * doc/passes.texi: Add information about mudflap. - -2004-03-01 Andrew Pinski - - PR middle-end/13066 - * fold-const (fold): Call fold_convert when building - a TRUTH_*_EXPR tree. - -2004-03-01 Andrew MacLeod - - * common.opt : Add tree-copyrename option. Remove duplicate tree-sra. - * flags.h (flag_tree_copyrename): Declare. - * opts.c (decode_options): Turn copyrename on by default at -O. - (common_handle_option): Handle -ftree-copyrename. - * toplev.c (flag_tree_copyrename): Declare. - * tree-ssa-copyrename.c (gate_copyrename): New. Check flag. - (pass_rename_ssa_copies): Initialize with gated routine. - (lang_independent_options f_): Add tree-copyrename. - * doc/invoke.texi: Add -fdump-tree-copyrename and -ftree-copyrename. - * doc/passes.texi: Add blurb for copy renaming. - -2004-03-01 Jeff Law - - * tree-ssa-dom.c (true_false_expr_hash): Update comments slightly. - (true_false_expr_eq): Update comments slightly. Avoid using - operand_equal_p, instead check the code and operands directly. - -2004-03-01 Andrew MacLeod - - * Makefile.in (tree-ssa-copyrename.o): New object. - * timevar.def (TV_TREE_COPY_RENAME): New time variable. - * tree-optimize.c (init_tree_optimization_passes): Add copy rename - pass. - * tree-pass.h (pass_rename_ssa_copies): New pass structure. - * tree-sra.c (lookup_scalar): Copy DECL_ARITIFICIAL flag from base. - * tree-ssa-copyrename.c : New file. - (copy_rename_partition_coalesce): Coalesce partitions for renaming. - (rename_ssa_copies): Find renamable copies. - (pass_rename_ssa_copies): Initialize. - * tree-ssa-live.c (register_ssa_partition): Move to tree-ssa-live.h. - * tree-ssa-live.h (register_ssa_partition): Moved from tree-ssa-live.c. - -2004-02-29 David Edelsohn - - * doloop.c (doloop_optimize): Increment n_iterations if loop->top - present. - -2004-02-29 Diego Novillo - - * gimple-low.c (pass_remove_useless_vars): Add TODO_dump_func. - -2004-02-27 Richard Henderson - - PR middle-end/14310 - * explow.c (emit_stack_save): Remove savearea mode check. - -2004-02-27 Richard Henderson - - * builtins.c (simplify_builtin_strcmp): Don't export. Remove - length parameters. Remove conversion to memcmp. - (simplify_builtin_strncmp): Likewise. - * expr.h: Don't declare them. - * tree-ssa-ccp.c (ccp_fold_builtin): Don't call them. - -2004-02-27 Dale Johannesen - - * tree-cfg.c (cleanup_control_expr_graph): Prevent edge - probability from overflowing due to roundoff errors. - -2004-02-27 Jeff Law - - * tree-cfg.c (verify_expr): Do not walk down into types. - Expand checking to verify that unary/binary operators have - gimple operands. - * tree-ssa-ccp.c (ccp_fold_builtin, case BUILT_IN_STRLEN): Do not - create non-gimple code. Similarly for BUILTIN_IN_STRCPY and - BUILT_IN_STRNCPY. - * tree-ssa-phiopt.c (conditional_replacement): Do not create - non-gimple code. - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise. - - * tree-simple.c (is_gimple_min_invariant): Subtraction of a - constant from a constant pointer is a gimple invariant as well. - * tree-ssa-operands.c (get_expr_operands): Handle subtraction - of a constant from a constant pointer too. - - * fold-const.c (fold): Tighten test for optimizing an equality - comparison of the address of two variables. - - * tree-inline.c (setup_one_parameter): Improve test for when we - need to gimplify the initialization statements. - -2004-02-27 Diego Novillo - - PR optimization/14312 - * tree-pretty-print.c (dump_generic_node): Mark tail calls. - * tree-ssa-alias.c (compute_may_aliases): Restore call to - dump_referenced_vars. - (compute_points_to_and_addr_escape): If the address of a - variable V is stored into a non-pointer variable, mark V as - call-clobbered. - * tree-tailcall.c (suitable_for_tail_opt_p): Check for - call-clobbered instead of TREE_ADDRESSABLE. - Ignore memory tags. - (optimize_tail_call): Add newline to dump output. - -2004-02-27 Diego Novillo - - PR optimization/13347 - * tree-sra.c (scalarize_structure_assignment): Use STRIP_NOPS - instead of STRIP_USELESS_TYPE_CONVERSION to remove type casts - from RHS of the assignment. - - * tree-ssa.c (tree_ssa_useless_type_conversion_1): Reformat - and rephrase comments. - * tree.h (STRIP_USELESS_TYPE_CONVERSION): Reformat comment. - -2004-02-26 Zdenek Dvorak - - * tree-cfg.c (tree_redirect_edge_and_branch_1): Allow to redirect - RETURN_EXPR branches. - -2004-02-26 Jeff Law - - * tree-nrv.c (tree_nrv): Only perform NRV optimization when the - return value lives in memory. - - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): If an - operand is unsigned, then we can eliminate more ABS expressions - and turned div/mod expression into shift/and expressions. - - * fold-const.c (fold): An equality comparison of the address of - two non-weak variables has known compile-time result. - -2004-02-26 Andrew Pinski - - * tree-ssa-phiopt.c (conditional_replacement): - s/tree_dump_flags/dump_flags/. - - * tree-ssa-phiopt.c (tree_ssa_phiopt): Split into ... - (conditional_replacement): Here. - -2004-02-26 Andrew MacLeod - - * tree-ssa.c (find_replaceable_in_bb): Don't repalce expressions in - volatile statements. - -2004-02-25 Richard Henderson - - PR opt/14288 - * gimplify.c (gimple_push_cleanup): Add VAR argument. Set - TREE_NO_WARNING if in a conditional context. - (gimplify_target_expr): Pass new argument. - * tree-sra.c (lookup_scalar): Copy TREE_NO_WARNING to replacement. - -2004-02-24 Kazu Hirata - - * doc/invoke.texi: Replace -fdump-tree-all-ssa with - -fdump-tree-all. - -2004-02-24 Kazu Hirata - - PR target/14285 - * config/arm/arm.c (arm_compute_func_type): Replace - "current_function_needs_context" with "cfun->static_chain_decl - != NULL". - (arm_compute_initial_elimination_offset): Likewise. - * config/h8300/h8300.c (h8300_emit_stack_adjustment): - Likewise. - * config/sh/sh.c (output_stack_adjust): Likewise. - (sh5_schedule_saves): Likewise. - * config/xtensa/xtensa.c (compute_frame_size): Likewise. - -2004-02-24 Richard Henderson - - * c-simplify.c (c_genericize): s/dump_flags/local_dump_flags/. - * predict.c, tree-alias-ander.c, tree-cfg.c, tree-nrv.c, - tree-optimize.c, tree-pass.h, tree-sra.c, tree-ssa-alias.c, - tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, tree-ssa-dom.c, - tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-loop.c, - tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa.c, tree-tailcall.c: - s/tree_dump_flags/dump_flags/. - -2004-02-24 Richard Henderson - - * predict.c, tree-alias-ander.c, tree-cfg.c, tree-mudflap.c, - tree-nrv.c, tree-optimize.c, tree-pass.h, tree-profile.c, tree-sra.c, - tree-ssa-alias.c, tree-ssa-ccp.c, tree-ssa-copy.c, tree-ssa-dce.c, - tree-ssa-dom.c, tree-ssa-dse.c, tree-ssa-forwprop.c, tree-ssa-loop.c, - tree-ssa-operands.c, tree-ssa-phiopt.c, tree-ssa-pre.c, tree-ssa.c, - tree-tailcall.c: s/tree_dump_file/dump_file/g. - -2004-02-24 Diego Novillo - - * doc/tree-ssa.texi: Fix formatting mark ups. - -2004-02-24 Jeff Law - - * gimple-low.c (remove_useless_vars): Now static. - (pass_remove_useless_vars): New. - * tree-flow.h (remove_useless_vars): Remove prototype. - * tree-nrv.c (struct nrv_data): Remove visited hashtable. - (finalize_nrv_r): Do not descend into types. No need to update - the visited hashtable. - (tree_nrv): No need to allocate/free the visited hashtable. - Clear the used flag on the variable's annotation. - * tree-optimize.c (init_tree_optimizatio_passes): Link in - pass_remove_useless_vars. - * tree-pass.h (pass_remove_useless_vars): Declare. - * tree-ssa.c (rewrite_out_of_ssa): Do not remove useless vars here. - - * Makefile.in (OBJS-common): Add tree-nrv.o. - (tree-nrv.o): Add dependencies. - * timevar.def (TV_TREE_NRV): New timevar. - * tree-nrv.c: New file implementing NRV on generic trees. - * tree-optimize.c (init_tree_optimization_passes): Link in - tree_nrv optimization pass. - * tree-pass.h (tree_nrv): Declare. - * doc/invoke.texi: Add -fdump-tree-nrv documentation. - -2004-02-24 Sebastian Pop - - * tree-flow.h (walk_use_def_chains_fn): Return a boolean. - True for stopping the use-def walk, false otherwise. - * tree-ssa-alias.c (collect_points_to_info_r): Same. - Always return false, and never stopping the def-use walk as before. - * tree-ssa.c (walk_use_def_chains_1): Stop when the result of the - callback function is true. - * doc/tree-ssa.texi: Document the behavior of the callback - function for walk_use_def_chains. - -2004-02-24 Richard Henderson - - * doc/passes.texi: Rewrite. - -2004-02-23 Diego Novillo - - * Makefile.in (TEXI_GCCINT_FILES): Add cfg.texi and tree-ssa.texi - * tree-ssa-alias.c (compute_may_aliases): Update documentation. - * doc/gccint.texi: Add node for Tree SSA documentation. - Include tree-ssa.texi. - * doc/tree-ssa.texi: New file. - -2004-02-23 Dale Johannesen - - * config/rs6000/rs6000.md: Roll in changes from mainline: - (movdf_softfloat64): Add POWER form of nop. - (movsf_hardfloat): Ditto, and accept CTR-to-CTR copy. - (movdf_hardfloat64): Ditto. - -2004-02-23 Jeff Law - - * ggc-page.c (struct page_entry): New field PREV. - (ggc_alloc): Update PREV field appropriately. - (sweep_pages): Likewise. - (ggc_free): Likewise. Use PREV field rather than loop to - improve ggc_free performance. - - * Makefile.in (OBJC-common): Add tree-ssa-copy.o. - (tree-ssa-copy.o): Add dependencies. - * tree-flow.h (propagate_value, replace_exp): Prototype. - (cprop_into_stmt, cprop_into_successor_phis): Likewise. - * tree-ssa-copy.c: New file, most functions copied from tree-ssa-dom.c - (cprop_into_stmt): Handle pointer & reference types better. - * tree-ssa-dom.c (opt_stats_d): Kill uninteresting stats. - (dump_dominator_optimization_stats): Corresponding changes. - (cprop_into_stmt): Moved into tree-ssa-copy.c. - (propagate_value): Likewise. - (cprop_into_phis): Simplify using code fromi tree-ssa-copy.c. - (optimize_stmt): Pass additional argument to cprop_into_stmt. - * tree-ssa-pre.c (generate_expr_as_of_bb): Use replace_exp. - (generate_vops_as_of_bb): Similarly. - -2004-02-21 Jan Hubicka - - * cgraphunit.c (decide_is_function_needed): Nested functions of extern - inline functions don't need to be output. - (expand_function): Re-enable sanity check. - -2004-02-21 Zdenek Dvorak - - * tree-ssa-loop.c (do_while_loop_p): New function. - (copy_loop_headers): Do not peel do-while loops. - -2004-02-21 Jan Hubicka - - * tree-cfg.c (cleanup_control_expr_graph): Update profile. - - * tree-cfg.c (disband_implicit_edges): Set fallthru edges correctly. - - * cfg.c (dump_flow_info): Work on trees too. - - * tree-pretty-print.c (dump_generic_bb_stuff): Do not touch bb - annotations when not allocated. - -2004-02-21 Jeff Law - - * tree-ssa-dom.c (cprop_into_stmt): Look at the type's main variant - to determine if the two operands of a copy have equivalent types. - -2004-02-20 Jeff Law - - * tree-flow-inline.h (may_propagate_copy): Do not perform ABNORMAL_PHI - and DECL_HARD_REGISTER tests on virtual operands. - * tree-flow.h (propagate_copy): Kill prototype. - (propagate_value): New prototype. - * tree-ssa-dom.c (propagate_copy): Now static. - (propagate_value): No longer static. - -2004-02-20 Richard Henderson - - PR middle-end/14218 - * c-simplify.c (mark_labels_r): Move to ... - * gimplify.c (force_labels_r): ... here, and rename. - (gimplify_init_constructor): Invoke it. - * tree-simple.h (force_labels_r): Declare. - -2004-02-20 Richard Henderson - - PR opt/14194 - * tree-ssa-ccp.c (substitute_and_fold): Also mark new vars - if fold_stmt was successful. - -2004-02-20 Diego Novillo - - * doc/invoke.texi: Add documentation for parameters - global-var-threshold and max-aliased-vops. - * params.def (PARAM_GLOBAL_VAR_THRESHOLD): Reformat help message. - (PARAM_MAX_ALIASED_VOPS): Rename from PARAM_MAX_ALIAS_SET_SIZE. - * params.h (MAX_ALIASED_VOPS): Rename from MAX_ALIAS_SET_SIZE. - Update all users. - * tree-ssa-alias.c (struct alias_map_d): Document fields. - Add fields total_alias_vops, grouped_p and may_aliases. - (struct alias_info): Change fields addressable_vars and - pointers to malloc'd arrays. Update all users. - Add fields num_references and total_alias_vops. - (compute_may_aliases): Add more comments. - (init_alias_info): Initialize new fields in struct alias_info. - (delete_alias_info): Corresponding changes. - (compute_points_to_and_addr_escape): Count references to - potentially aliased variables and pointer dereferences. - (compute_flow_insensitive_aliasing): Remove old grouping - heuristic. - Count the number of virtual operands induced by all the alias - sets created and call group_aliases if the number exceeds the - threshold set by --param max-aliased-vops. - (total_alias_vops_cmp): New. - (group_aliases_into): New. - (group_aliases): New. - * tree-ssa-operands.c (get_expr_operands): Change dump file - message when no flow-sensitive alias information is available. - (add_stmt_operand): Reformat comment. - * tree-ssa.c (init_tree_ssa): Don't call bitmap_clear. - - * tree-simple.c (get_base_decl): Fix typo in comment. - - * tree-pretty-print.c (print_call_name): Handle matrices of - function pointers. - -2004-02-20 Zdenek Dvorak - - * Makefile.in (tree-ssa-loop.o): Add tree-inline.h dependency. - * basic-block.h (struct reorder_block_def): Moved from cfglayout.h. - (alloc_rbi_pool, initialize_bb_rbi, free_rbi_pool): New. - * bb-reorder.c (copy_bb): Use cfghooks for bb duplication. - * cfg.c (rbi_pool): New variable. - (alloc_rbi_pool, free_rbi_pool, initialize_bb_rbi): New functions. - * cfghooks.c (can_duplicate_block_p, duplicate_block): New functions. - * cfghooks.h (struct cfg_hooks): Add can_duplicate_block_p and - duplicate_block hooks. - (can_duplicate_block_p, duplicate_block): 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. - * cfglayout.h (typedef struct reorder_block_def): Moved to - basic_block.h. - (cfg_layout_can_duplicate_bb_p, cfg_layout_duplicate_bb): Declaration - removed. - * 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. - * common.opt (ftree-ch): Add. - * flags.h (flag_tree_ch): Declare. - * jump.c (next_nonnote_insn_in_loop, duplicate_loop_exit_test, - copy_loop_headers): Removed. - * loop-unswitch.c (unswitch_loop): Use cfghooks for bb duplication. - * opts.c (decode_options): Enable flag_tree_ch at -O1. - (common_handle_option): Handle -ftree_ch. - * rtl.h (copy_loop_headers): Declaration removed. - * timevar.def (TV_TREE_CH): New. - * toplev.c (flag_tree_ch): New. - (rest_of_compilation): Do not call copy_loop_headers. - * tracer.c (tail_duplicate): Use cfghooks for bb duplication. - * tree-cfg.c (build_tree_cfg): Call alloc_rbi_pool. - (create_bb): Call initialize_bb_rbi. - (delete_tree_cfg): Call free_rbi_pool. - (tree_duplicate_bb): Hookize. - (tree_can_duplicate_bb_p): New. - (tree_cfg_hooks): Fill in can_duplicate_block_p and duplicate_block - fields. - * tree-flow.h (tree_duplicate_bb): Declaration removed. - * tree-optimize.c (init_tree_optimization_passes): Add pass_ch. - * tree-pass.h (pass_ch): Declare. - * tree-ssa-loop.c: Include tree-inline.h. - (call_expr_p, should_duplicate_loop_header_p, mark_defs_for_rewrite, - duplicate_blocks, copy_loop_headers, gate_ch): New functions. - (pass_ch): New. - * doc/invoke.texi (-fdump-tree-ch, -ftree-ch): Document. - -2004-02-19 David Edelsohn - - * config/rs6000/aix.h (MFWRAP_SPEC): Define. - (MFLIB_SPEC): Define. - -2004-02-19 Jeff Law - - * tree-ssa-phiopt.c (tree_ssa_phiopt): TRUTH_NOT_EXPR is valid - gimple code. - -2004-02-19 Steven Bosscher - - * tree-cfg.c (cleanup_dead_labels): New function to remove - redundant labels. - - Remove the RTL inliner. - * calls.c (try_to_integrate): Remove. - (expand_call): Do not try to expand calls inline. - * dbxout.c (dbxout_symbol_location): Don't mention integrate.c - in comments. - * expmed.c (extract_fixed_bit_field): Always propagate the - target for the shift if it is a REG. - * expr.c (emit_move_insn_1): Don't generate inline warnings. - (expand_expr_real_1): Don't look at inline_function_decl. - Don't output inlined functions here. - * expr.h (expand_inline_function): Remove prototype. - * emit-rtl.c (copy_most_rtx): Don't copy the integrated flag. - Copy the new return_val flag. - * final.c (final): Don't look at RTX_INTEGRATED_P. - * cfgrtl.c (create_basic_block_structure): Likewise. - * haifa-sched.c (priority): Likewise. - (restore_line_notes): Likewise. - * function.c (inline_function_decl): Remove. - (put_var_into_stack): Don't use it. - (fix_lexical_addr): Likewise. - * function.c (inline_function_decl): Remove extern declaration. - * genattrtab.c (ATTR_PERMANENT_P): Use the return_val flag - instead of the integrated flag. - * 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. - * print-rtl.c (print_rtx): Don't print the integrated flag. - Print the return_val flag. - * rtl.h (struct rtx_def): Replace the integrated flag with the - return_val flag. - (RTX_INTEGRATED_P): Remove. - (notice_rtl_inlining_of_deferred_constant): Remove prototype. - * stmt.c (force_label_rtx): Don't look at inline_function_decl. - * toplev.c (rest_of_handle_inlining): Remove. - (rest_of_compilation): Don't call it, and never jump to exit. - Call convert_from_eh_region_ranges. - (wrapup_global_declarations): Don't output nested inlined functions. - * tree.h (function_cannot_inline_p): Remove prototype. - (save_for_inline): Ditto. - (output_inline_function): Ditto. - * unroll.c (unroll_loop): Don't clear map->inline_target. - * varasm.c (notice_rtl_inlining_of_deferred_constant): Remove. - - * system.h: Poison INTEGRATE_THRESHOLD. - * config/avr/avr.h: Remove define. - * config/ip2k/ip2k.h: Likewise. - - * unwind-sjlj.c (uw_install_context): Make a proper static inline - function. - - * doc/rtl.texi: Remove references to the integrated flag. - * doc/tm.texi: Remove documentation of INTEGRATE_THRESHOLD. - -2004-02-17 Andrew Macleod - - * tree-ssa-live.c (coalesce_tpa_members): Don't coalesce partitions - which are not in the same TPA group. - * tree-ssa.c (rewrite_out_of_ssa): Coalesce via list first. - -2004-02-17 Brian Booth - - * tree-ssa-ccp.c (substitute_and_fold): Update stmt after - calling fold_stmt. - -2004-02-16 Andrew Pinski - - * config/rs6000/rs6000.c (output_function_profiler): Check - cfun->static_chain_decl instead of current_function_needs_context. - -2004-02-16 Jeff Law - - * tree-ssa.dse.c (dse_optimize_stmt): Dump info when we delete - stores. - - * tree-ssa-dse.c: Update comments. - - * Makefile.in (OBJS-common): Add tree-ssa-dse.o - (tree-ssa-dse.o): Add dependencies. - * common.opt (ftree-dse): New option. - * flags.h (flag_tree_dse): New. - (flag_tree_dom): Fix comments. - * opts.c (decode_options): Turn on flag_tree_dse. - (common_handle_option): Handle OPT_ftree_dse. - * timevar.def (TV_TREE_PHIOPT): Update text. - (TV_TREE_DSE): New timevar. - * toplev.c (flag_tree_dse): New. - (flag_tree_dom): Fix comments. - (lang_independent_options): Add -ftree-dse. - * tree-dfa.c (redirect_immediate_use): New function. - (redirect_immediate_uses): New function. - * tree-flow.h (stmt_ann_d): Add UID field. - (redirect_immediate_uses): Declare. - * tree-optimize.c (init_tree_optimization_passes): Link in DSE pass. - * tree-pass.h (pass_dse): Declare. - * tree-ssa-dse.c: New file implementing DSE. - * doc/invoke.texi: Document new option. - -2004-02-16 Richard Henderson - - * tree-nested.c: New file. - * Makefile.in (OBJS-common, GTFILES, tree-nested.o): Add it. - * builtin-types.def (BT_FN_VOID_PTR_PTR, BT_FN_VOID_PTR_PTR_PTR): New. - * builtins.c (expand_builtin_nonlocal_goto): New. - (expand_builtin_apply): Fix prepare_call_address args. - (round_trampoline_addr): Move from function.c. - (expand_builtin_init_trampoline): New. - (expand_builtin_adjust_trampoline): New. - (expand_builtin): Invoke them. - (build_function_call_expr): Add CALL_EXPR chain operand. - * builtins.def (BUILT_IN_INIT_TRAMPOLINE, - BUILT_IN_ADJUST_TRAMPOLINE, BUILT_IN_NONLOCAL_GOTO): New. - * c-decl.c (finish_function): Call lower_nested_functions. - (c_expand_decl): Don't declare_nonlocal_label. - * calls.c (prepare_call_address): Replace fndecl arg with a - precomputed static chain value. - (expand_call): Precompute the static chain value. Use - update_nonlocal_goto_save_area. - * cgraph.c (cgraph_mark_reachable_node): Don't force nested - functions to be reachable. - (cgraph_clone_node): Don't abort cloning functions containing - nested functions. - * cgraphunit.c (cgraph_assemble_pending_functions): Don't do - anything special for nested functions. - (cgraph_mark_functions_to_output): Likewise. - (cgraph_estimate_growth, cgraph_clone_inlined_nodes): Likewise. - (cgraph_optimize): Likewise. - (cgraph_finalize_function): Don't zap DECL_SAVED_INSNS. - (cgraph_expand_function): Allow functions to not be emitted. - * defaults.h (TRAMPOLINE_ALIGNMENT): Move from function.c. - * dwarf2out.c (gen_subprogram_die): Generate DW_AT_static_link. - * emit-rtl.c (maybe_set_first_label_num): New. - * explow.c (update_nonlocal_goto_save_area): New. - (allocate_dynamic_stack_space): Use it. - * expr.c (expand_expr_real_1) : Don't force_label_rtx. - : Ignore the possibility of non-local labels. - : Don't do trampoline_address. - * expr.h (lookup_static_chain): Remove. - (prepare_call_address): Update 2nd arg. - (update_nonlocal_goto_save_area): Declare. - * final.c (profile_function): Update static chain test. - * function.c (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. - * 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. - * gimple-low.c (record_vars): Don't record functions. - * gimplify.c (declare_tmp_vars): Export. - (create_artificial_label): Set type. - (gimplify_expr): Don't consider nonlocal gotos. - * integrate.c (expand_inline_function): Kill lookup_static_chain ref. - * jump.c (any_uncondjump_p): Reject nonlocal goto. - * rtl.h (maybe_set_first_label_num): Declare. - * stmt.c (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. - * tree-cfg.c (make_edges): Handle abnormal edges out of block - falling through to EXIT. - (make_ctrl_stmt_edges): Don't check GOTO_EXPR for nonlocal goto. - Handle computed goto with no destinations. - (tree_can_merge_blocks_p): Don't merge blocks with nonlocal labels. - (remove_useless_stmts_label, stmt_starts_bb_p): Likewise. - (tree_forwarder_block_p): Likewise. - (nonlocal_goto_p): Remove. - (tree_verify_flow_info): Update to match. - * tree-dump.c (dump_files): Add tree-nested. - * tree-flow.h (nonlocal_goto_p): Remove. - * tree-inline.c (setup_one_parameter): Split out from ... - (initialize_inlined_parameters): ... here. Handle static chain. - (inline_forbidden_p_1): Update nonlocal goto check. - (expand_call_inline): Disable mysterious cgraph abort. - * tree-optimize.c (tree_rest_of_compilation): Save DECL_SAVED_INSNS. - * tree-pretty-print.c (dump_generic_node): Print static chain - and nonlocal label. - * tree-simple.h (declare_tmp_vars): Declare. - (lower_nested_functions): Declare. - * tree-ssa-dom.c (propagate_value): Avoid sharing problems. - * tree-ssa-operands.c (get_expr_operands): Walk static chain - field of call_expr. - * tree.def (CALL_EXPR): Add static chain operand. - * tree.h (NONLOCAL_LABEL): Remove. - (TDI_nested): New. - * varasm.c (TRAMPOLINE_ALIGNMENT): Remove. - (initial_trampoline): Move from function.c. - (assemble_trampoline_template): Set and return it. - (trampolines_created): Move from function.c. - -2004-02-16 Steven Bosscher - - * tree-flow.h (cleanup_control_expr_graph): Don't declare here. - * tree-cfg.c (cleanup_control_expr_graph): Make static. - (find_edge_taken_cond_expr): Return an edge if the true and false - edges of a branch lead to the same basic block. - -2004-02-13 Diego Novillo - - * tree-phinodes.c (resize_phi_node): Do not use ggc_realloc to - allocate a new PHI node. - -2004-02-12 Diego Novillo - - * tree-flow.h (kill_redundant_phi_nodes): Remove declaration. - * tree-optimize.c (init_tree_optimization_passes): Add - pass_redundant_phi after DOM and CCP. - (execute_todo): Do not call kill_redundant_phi_nodes. - * tree-pass.h (TODO_redundant_phi): Remove. - Update all users. - Adjust values for all the other TODO_* entries. - (pass_redundant_phi): Declare. - * tree-ssa.c (replace_immediate_uses): Call mark_new_vars_to_rename - if a pointer was replaced. - (kill_redundant_phi_nodes): Make static. - (pass_redundant_phi): Define. - -2004-02-12 Dale Johannesen - - * Makefile.in (OBJS-common): Add rtl-profile.o, tree-profile.o. - (profile.o): Add tree-flow.h dependency. - (rtl-profile.o): New rule. - (tree-profile.o): New rule. - (GTFILES): Add tree-profile.c, rtl-profile.c. - * basic-block.h (flow_call_edges_add): Remove. - * cfganal.c (need_fake_edge_p): Move to cfgrtl.c. - (flow_call_edges_add): Move to cfgrtl.c. - * cfghooks.c: (block_ends_with_call_p): New. - (block_ends_with_condjump_p): New. - (flow_call_edges_add): New. - * cfghooks.h: (struct cfg_hooks): add block_ends_with_call_p, - block_ends_with_condjump_p, flow_call_edges_add. - (block_ends_with_call_p): New declaration. - (block_ends_with_condjump_p): New declaration. - (flow_call_edges_add): New declaration. - * cfgrtl.c (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. - * common.opt (ftree-based-profiling): New. - * 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): New declaration. - (tree_coverage_counter_ref): New declaration. - * opts.c (OPT_ftree_based_profiling): New. - * 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. - * rtl-profile.c: New file. - * rtl.h (init_branch_prob): Move declaration to value-prof.h. - (end_branch_prob): Ditto. - (branch_prob): Ditto. - * toplev.c (flag_tree_based_profiling): New. - (f_options): Add -ftree-based-profiling. - (compile_file): Register rtl-based CFG and profiling hooks. - (rest_of_compilation): Do rtl-based profiling only when - !flag_tree_based_profiling. Register rtl-based profiling hooks. - (process_options): Sorry for -ftree-based-profiling plus - -ftest-coverage or -fprofile-values. - * toplev.h (flag_tree_based_profiling): New. - * tree-cfg.c (tree_block_ends_with_call_p): New. - (tree_block_ends_with_condjump_p): New. - (need_fake_edge_p): New. - (tree_flow_call_edges_add): New (largely from flow_call_edges_add - in cfganal.c). - (tree_cfg_hooks): Add tree_block_ends_with_call_p, - tree_block_ends_with_condjump_p, tree_flow_call_edges_add. - * tree-optimize.c (init_tree_optimization_passes): - Add pass_tree_profile. - * tree-pass.h: Ditto. - * tree-profile.c: New file. - * 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. - * doc/invoke.texi: Document -ftree-based-profiling. - -2004-02-12 Jeff Law - - * domwalk.c (walk_dominator_tree): Move statement walking from - clients into here. Walk statements in forward or backward order - as requested by the client. Walk either the dominator tree or - the post-dominator tree as requested by the client. - * domwalk.h (dom_walk_data): Add two fields to control direction of - statement walk and dominator vs post-dominator tree walk. Add - BSI argument to the per-statement callbacks. - * tree-ssa-dom.c (optimize_stmt): Update prototype so that it can - be directly used as a callback for the dominator tree walker. - Update stmts_to_rescan here. - (tree_ssa_dominator_optimize): Initialize new fields in the dominator - walker structure. Use optimize_stmt instead of dom_opt_walk_stmts - for statement callback. - (dom_opt_walk_stmts): Kill. No longer used. - * tree-ssa.c (mark_def_sites): Update prototype so that it can be - called as the per-statement callback. No longer walk statements here. - (mark_def_sites_initialize_block): New. - (rewrite_stmt): Update prototype so that it can be called as the - per-statement callback. - (rewrite_walk_stmts): Kill. No longer used. - (rewrite_into_ssa): Initialize new fields in the dominator walker - structure. Use rewrite_stmt instead of rewrite_walk_stmts. Add - mark_def_sites_initialize_block callback. - -2004-02-12 Steven Bosscher - - * doc/cfg.texi: New file. - * doc/ggcint.texi: Include it. Add a new chapter. - -2004-02-11 Jeff Law - - * Makefile.in (OBJS-common): Add tree-ssa-forwprop.o - (tree-ssa-forwprop.o): Add dependencies. - * timevar.def (TV_TREE_FORWPROP): New timevar. - * tree-optimize.c (init_tree_optimization_passes): Link in - the forward propagation pass. - * tree-pass.h (pass_forwprop): Declare. - * tree-ssa-forwprop.c: New file with forward propagation pass. - * doc/invoke.texi: Document dump for forward propagation pass. - -2004-02-11 Andrew MacLeod - - * tree-ssa.c (rewrite_out_of_ssa): Don't use coalesce list until new - bug resolved. - -2004-02-11 Andrew MacLeod - - * tree-ssa-live.c (compare_pairs): New. Coalesce list cost function. - (sort_coalesce_list): Use qsort() to sort list by cost. - (coalesce_tpa_members): Use correct partition representatives. Add more - debug information. Allow coalesce by list, root_var, or both. - (tpa_dump): Show partition index. - * tree-ssa-live.h (SSANORM_COALESCE_PARTITIONS): New flag. - (SSANORM_USE_COALESCE_LIST): New flag. - * tree-ssa.c (create_temp): Don't mark as used when created. - (coalesce_ssa_name): Create coalesce list if requested. Add more - debug output. - (assign_vars): Add additional debug info. - (remove_ssa_form): Perform TER after assign_vars(). - (rewrite_vars_out_of_ssa): Pass coalesce partitions flag to - remove_ssa_form. - (rewrite_out_of_ssa): Add coalesce list flag to remove_ssa_form call. - -2004-02-10 Jeff Law - - * Makefile.in (OBJS-common): Add tree-ssa-phiopt.o - (tree-ssa-phiopt.o): Add dependencies. - * timevar.def (TV_TREE_PHIOPT): New timevar. - * tree-cfg.c (extract_true_false_edges_from_block): Moved here from - tree-ssa-dom.c. - (tree_verify_flow_info): Use extract_true_false_edges_from_block. - * tree-flow.h (extract_true_false_edges_from_block): Declare. - * tree-ssa-dom.c (extract_true_false_edges_from_block): Moved into - tree-cfg.c. - (get_eq_expr_value): Improve type check. - * tree-optimize.c (init_tree_optimization_passes): Link in - phiopt pass. - * tree-pass.h (pass_phiopt): Declare. - * tree-ssa-phiopt.c: New file with PHI node optimization pass. - * doc/invoke.texi: Document dump for PHI node optimization. - -2004-02-10 Richard Henderson - - * tree-sra.c (lookup_scalar): Handle unnamed fields. - -2004-02-10 Diego Novillo - - * Makefile.in (OBJS-common): Add tree-ssa-alias.o. - (tree-ssa-alias.o): New rule. - (tree-ssa-operands.o): Add dependency on $(TIMEVAR_H) and tree-pass.h - (gt-tree-dfa.h): Remove. - * timevar.def (TV_TREE_OPS): Rename from unused entry TV_TREE_DFA. - * tree-ssa-alias.c: New file. - * tree-dfa.c (struct alias_stats_d, alias_stats, dump_alias_stats, - may_alias_p, add_may_alias, global_var, aliases_computed_p, - compute_may_aliases): Move to tree-ssa-alias.c. - (struct walk_state): Remove fields 'is_asm_expr' and 'num_calls'. - Update all users. - (compute_alias_sets, create_memory_tags, may_access_global_mem_p, - get_memory_tag_for, promote_call_clobbered_vars, - find_addressable_vars): Remove. - (call_clobbered_vars): Move to tree-ssa-alias.c and convert to - bitmap. - (find_referenced_vars): Move logic to create .GLOBAL_VAR to - tree-ssa-alias.c. - (create_ssa_name_ann): New. - (dump_variable): Rearrange. - (dump_dfa_stats): Do not show the number of call clobbered - variables. - (find_vars_r): Do not try to determine if an assignment my access - global memory. - (add_referenced_var): Remove hacks to establish global memory - dependencies. - If the variable needs to live in memory mark it call-clobbered. - * tree-flow-inline.h (ssa_name_ann): New. - (get_ssa_name_ann): New. - (set_may_alias_global_mem): Remove. - (may_alias_global_mem_p): Remove. - (set_may_point_to_global_mem): Remove. - (may_point_to_global_mem_p): Remove. - (is_call_clobbered): New - (mark_call_clobbered): New - (mark_non_addressable): New - * tree-flow.h (enum tree_ann_type): Add SSA_NAME_ANN. - (enum mem_tag_kind): Declare. - (struct var_ann_d): Remove fields 'is_call_clobbered', - 'may_alias_global_mem' and 'may_point_to_global_mem'. - Replace bitfield 'mem_tag' with enum bitfield 'mem_tag_kind'. - Rename field 'mem_tag' to 'type_mem_tag'. - (struct stmt_ann_d): Change type of field 'addresses_taken' to a - bitmap. Update all users. - (struct ssa_name_ann_d): Declare. - (union tree_ann_d): Add field 'ssa_name'. - (ssa_name_ann_t): New type. - (struct bb_ann_d): Add field 'has_escape_site'. - (num_call_clobbered_vars): Remove. - (call_clobbered_var): Remove. - (call_clobbered_vars): Change to bitmap. - (dump_points_to_info): Declare. - (debug_points_to_info): Declare. - (walk_use_def_chains_fn): New type. - (walk_use_def_chains): Declare. - (is_call_clobbered): Declare. - (mark_call_clobbered): Declare. - * tree-simple.c (needs_to_live_in_memory): Move to tree.c. - (is_gimple_non_addressable): Update comment. - (is_gimple_call_clobbered): Remove. - (get_call_expr_in): New. - (get_base_var): Rename from get_base_symbol. Update all callers. - Don't strip SSA_NAME wrappers. - (get_base_decl): New. - (get_base_address): New. - * tree-simple.h (is_gimple_call_clobbered): Remove. - (needs_to_live_in_memory): Remove. - (get_base_decl): Declare. - (get_base_var): Declare. - (get_base_address): Declare. - * tree-ssa-dce.c (need_to_preserve_store): Reduce to calling - needs_to_live_in_memory. - * tree-ssa-operands.c: Include tree-pass.h and timevar.h - (get_stmt_operands): Push/pop TV_TREE_OPS time var. - Call mark_call_clobbered for asms that store to memory. - (get_expr_operands): When adding operands for INDIRECT_REF - expressions, use flow-sensitive aliasing, if available. - Assume that malloc-like function calls won't clobber. - (add_call_clobber_ops): - (add_call_read_ops): - * tree-ssa.c (rewrite_into_ssa): If any variable in vars_to_rename - is a pointer, invalidate all name memory tags. - (create_temp): Call is_call_clobbered and mark_call_clobbered. - (walk_use_def_chains_1): New. - (walk_use_def_chains): New. - - * tree.c (needs_to_live_in_memory): New. - * tree.h (DECL_NEEDS_TO_LIVE_IN_MEMORY_INTERNAL): Define. - (struct tree_decl): Add bitfield 'needs_to_live_in_memory'. - Update unused bits comment. - (needs_to_live_in_memory): Declare. - - * tree-simple.h (get_call_expr_in): Declare. - * tree-sra.c (scalarize_stmt): Call get_call_expr_in when handling - function calls. - * tree-ssa-ccp.c (likely_value): Likewise. - - * params.def (PARAM_MAX_CLOBBERED_VARS_GLOBAL_VAR): Remove. - (PARAM_MAX_CALLS_GLOBAL_VAR): Remove. - (PARAM_GLOBAL_VAR_THRESHOLD): Define. - (PARAM_MAX_ALIAS_SET_SIZE): Define. - Update all users. - * params.h (MAX_CALLS_FOR_GLOBAL_VAR): Remove. - (MAX_CLOBBERED_VARS_FOR_GLOBAL_VAR): Remove. - (GLOBAL_VAR_THRESHOLD): Define. - (MAX_ALIAS_SET_SIZE): Define. - -2004-02-09 Richard Henderson - - * langhooks.h (lang_hooks_for_functions): Add missing_noreturn_ok_p. - * langhooks-def.h, c-lang.c, objc/objc-lang.c - (LANG_HOOKS_FUNCTION_MISSING_NORETURN_OK_P): New. - * c-objc-common.c (c_missing_noreturn_ok_p): Return bool. - (c_objc_common_init): Don't set lang_missing_noreturn_ok_p. - * c-tree.h (c_missing_noreturn_ok_p): Update decl. - * flow.c (lang_missing_noreturn_ok_p): Remove. - - * flow.c (check_function_return_warnings): Move to tree-cfg.c. - * toplev.c (rest_of_compilation): Don't call it. - * tree-cfg.c (execute_warn_function_return): Move from flow.c, - rename, update for tree vs rtl. - (pass_warn_function_return): New. - * tree-pass.h (pass_warn_function_return): Declare it. - * tree-optimize.c (init_tree_optimization_passes): Run it. - - * function.h (struct function): Remove x_clobber_return_insn. - * function.c (free_after_compilation): Don't set it. - (expand_function_end): Likewise. - -2004-02-09 Richard Henderson - - Revert: - 2004-02-06 Richard Henderson - * tree-ssa-dom.c (record_equivalences_from_phis): Use - record_const_or_copy. - (record_equivalences_from_stmt): Likewise. Replace - block_avail_exprs_p and block_nonzero_vars_p args with bd. - -2004-02-09 Jeff Law - - * tree-ssa-dom.c (get_eq_expr_value): Improve handling of boolean - conditions. - - * domwalk.c (walk_dominator_tree): Completely lose PARENT argument. - Callers updated. No longer pass PARENT to callbacks. - * domwalk.h (struct dom_walk_data): Corresponding changes. - * tree-ssa-dom.c: Likewise. - * tree-ssa.c: Likewise. - - * domwalk.c (walk_dominator_tree): Change last argument to be the - parent block in the dominator tree rather than the last statement - in the parent block in the dominator tree. Similarly in all the - callbacks. - * domwalk.h (struct dom_walk_data): Update callback prototypes. - * tree-ssa-dom.c: Corresponding changes. - * tree-ssa.c: Likewise. - - * tree-ssa-dom.c (redirect_edges_and_update_ssa_graph): Break out - of tree_ssa_dominator_optimize. If the out-of-ssa pass creates - new variables, then invalidate some requested jump threads. - -2004-02-08 Richard Henderson - - * flow.c (regno_uninitialized): Remove. - * output.h (regno_uninitialized): Remove. - * function.c (setjmp_vars_warning): Rename from - uninitialized_vars_warning, remove uninitialized vars warning. - * toplev.c (rest_of_handle_life): Update to match. - * tree.h (setjmp_vars_warning): Likewise. - - * tree-sra.c (lookup_scalar): Set DECL_NAME to something descriptive. - - * tree-ssa.c (warn_uninit): New. - (warn_uninitialized_var, warn_uninitialized_phi): New. - (execute_early_warn_uninitialized): New. - (execute_late_warn_uninitialized): New. - (gate_warn_uninitialized): New. - (pass_early_warn_uninitialized): New. - (pass_late_warn_uninitialized): New. - * tree-pass.h (pass_early_warn_uninitialized): New. - (pass_late_warn_uninitialized): New. - * tree-optimize.c (init_tree_optimization_passes): Add them. - -2004-02-08 Richard Henderson - - * cppexp.c (append_digit): Rearrange unsignedp/overflow setting. - (eval_token, num_binary_op, num_part_mul, num_div_op): Likewise. - * ra-rewrite.c (rewrite_program2): Zero info. - * reload.c (decompose): Zero val. - * tree-ssa-ccp.c (visit_phi_node): Zero phi_val.const_val. - -2004-02-07 Jan Hubicka - - * tree-inline.c (save_body): Clone the parm decl correctly. - - * cgraph.c: Add introductionary comment. - (cgraph_remove_node): Release DECL_SAVED_INSNS too. - * cgraphunit.c: Likewise. - (cgraph_finalize_function): Release DECL_SAVED_INSNS of external function. - (decl_expand_function): Release DECL_SAVED_INSNS/body/tree. - (cgraph_remove_unreachable_nodes): Likewise; guard cgraph verification. - -2004-02-06 Richard Henderson - - * common.opt (fdisable-tree-ssa): Remove. - * flags.h (flag_disable_tree_ssa): Remove. - * toplev.c (flag_disable_tree_ssa): Remove. - (f_options): Don't set it. - * opts.c (common_handle_option): Likewise. - * doc/invoke.texi (fdisable-tree-ssa): Remove. - -2004-02-06 Richard Henderson - - * tree-ssa-dom.c (record_equivalences_from_phis): Use - record_const_or_copy. - (record_equivalences_from_stmt): Likewise. Replace - block_avail_exprs_p and block_nonzero_vars_p args with bd. - -2004-02-06 Andrew Pinski - - PR middle-end/13127 - * tree-inline.c (declare_return_variable): Set the no warning bit - on the variable created for the return value. - -2004-02-06 Richard Henderson - - * tree-pretty-print.c (dump_generic_node): Render NON_LVALUE_EXPR. - - * tree-ssa-dom.c (local_fold): New. - (thread_across_edge, simplify_rhs_and_lookup_avail_expr, - find_equivalent_equality_comparison): Use it. - -2004-02-06 Andrew Pinski - - PR c/13863 - * c-common.c (c_decl_uninit_1): Remove. - (c_decl_uninit): Remove. - * c-common.h (c_decl_uninit): Remove prototype. - * c-lang.c (LANG_HOOKS_DECL_UNINIT): Delete. - * objc/objc-lang.c (LANG_HOOKS_DECL_UNINIT): Delete. - * c-simplify.c (gimplify_decl_stmt): Set TREE_NO_WARNING - on the decl where the initial is itself. - * function.c (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. - * langhooks-def.h (LANG_HOOKS_DECL_UNINIT): Remove. - (LANG_HOOKS_INITIALIZER): Remove usage of LANG_HOOKS_DECL_UNINIT. - * langhooks.c (lhd_decl_uninit): Remove. - * langhooks.h (lhd_decl_uninit): Remove prototype. - -2004-02-05 Richard Henderson - - * tree-ssa-dom.c (record_const_or_copy_1): New. - (record_const_or_copy): New. - (thread_across_edge): Use it. - (dom_opt_finalize_block): Likewise. Tidy. - (record_equality): Split out from ... - (record_equivalences_from_incoming_edge): ... here. - -2004-02-05 Richard Henderson - - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Allow - mixing PLUS and MINUS when folding operations. - -2004-02-05 Andrew Macleod - - * tree-pretty-print.c (dump_bb_header): Allow TDF_SLIM printing. - (dump_bb_end): Allow TDF_SLIM printing. - (dump_generic_bb_buff): Add flags parameter to dump_bb_end. - -2004-02-05 Jan Hubicka - - * alias.c (find_base_term, get_addr): Do not dereference NULL - pointer when all VALUE's locations has been invalidated. - (rtx_equal_for_memref_p): Simplify checking of VALUEs. - -2004-02-04 Daniel Berlin - - * tree-alias-ander.c (andersen_init): Reorder/Redo code so that we - actually free the memory in intraprocedural mode. - (andersen_cleanup): Ditto. - -2004-02-04 Richard Henderson - - * tree-ssa-ccp.c (get_value, visit_phi_node, - visit_assignment, dump_lattice_value): Tidy. - (evaluate_stmt): Don't do debug dump here. - (def_to_undefined): Merge into set_lattice_value. - (def_to_varying): Likewise, but retain as a wrapper. - (set_lattice_value): Tidy. Emit correct debug info. - (replace_uses_in): Remove strlen hacks. - (execute_fold_all_builtins): Fix DECL_BUILT_IN comparison. - Force folding of BUILT_IN_CONSTANT_P. - -2004-02-04 Richard Henderson - - * builtins.c (fold_builtin_expect): New. - (fold_builtin_1): Call it. - -2004-02-04 Jeff Law - - * jump.c (duplicate_loop_exit_test): Allow copying of the loop - exit test even if we do not find the LOOP_END note. - - * domwalk.c: Update comments. - -2004-02-04 Brian Booth - - PR opt/13755 - * tree-dfa.c (compute_alias_sets): set rename flag for variables - aliased by GLOBAL_VAR. - -2004-02-04 Richard Henderson - - * tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): New. - (eliminate_redundant_computations): Call it. - -2004-02-03 Richard Henderson - - PR opt/13869 - * tree-cfg.c (cfg_remove_useless_stmts_bb): Correct handling of - boolean variables in COND_EXPR_COND. - -2004-02-03 Richard Henderson - - PR middle-end/13325 - * builtins.c (fold_builtin_1): Rename from fold_builtin. - (fold_builtin): New. - * c-simplify.c (gimplify_expr_stmt): Check TREE_NO_WARNING. - * stmt.c (expand_expr_stmt_value): Likewise. - * tree.h (struct tree_common): Add nowarning_flag. - (TREE_NO_WARNING): New. - (TREE_NO_UNUSED_WARNING): Remove. - * c-typeck.c (build_unary_op): Use TREE_NO_WARNING instead. - * stmt.c (warn_if_unused_value): Likewise. - -2004-02-03 Steven Bosscher - - * tree-ssa-dce.c: Partial rewrite. The old DCE is now called - `conservative'. The more aggressive algorithm uses control - dependence and is called `aggressive' or cd-dce. - * timevar.def (TV_TREE_DCE): Rename. - (TV_TREE_CD_DCE, TV_CONTROL_DEPENDENCES): New timevars. - * tree-pass.h: Declare extern pass_cd_dce. - * tree-optimize.c (init_tree_optimization_passes): Replace - the final DCE pass with a CD-DCE pass. - -2004-02-01 Jan Hubicka - - * cgraphunit.c (cgraph_mark_inline_edge): Fix insertion to - cgraph_inline_hash. - -2004-01-30 Frank Ch. Eigler - - * common.opt: Add support for -fmudflapth, -fmudflapir. - * invoke.texi: Document them. - * opts.c: Ditto. - * flags.h: Add new flags flag_mudflap_threads, _ignore_reads. - * toplev.c: Initialize new flags. Remove redundant code from - lang_independent_options[]. - * tree-mudflap.c (*): Support new flag_mudflap_threads encoding. - (mf_xform_derefs_1): Support flag_mudflap_ignore_reads option. - * c-mudflap.c (mflang_flush_calls): Mark static ctor TREE_USED. - -2004-01-30 Ian Lance Taylor - - * gengtype-yacc.y (bitfieldlen): Add empty action. - -2004-01-30 Diego Novillo - - * configure.ac: Move configuration for libbanshee and - libgmp from configure.in. - -2004-01-30 Richard Henderson - - PR opt/13524 - * gengtype-yacc.y (struct_fields): Accept unnamed bitfields. - (bitfieldlen): Split from ... - (bitfieldopt): ... here. - * gimplify.c (mark_not_gimple): Remove. - (gimplify_call_expr): Don't ignore BUILT_IN_MD. - * tree-dfa.c (struct walk_state): Remove is_not_gimple. - (find_referenced_vars): Don't look for TREE_NOT_GIMPLE. - (find_vars_r, add_referenced_var): Likewise. - * tree-ssa-operands.c (get_stmt_operands, get_expr_operands): Likewise. - * tree-simple.h (mark_not_gimple): Remove. - * tree.h (struct tree_common): Remove not_gimple_flag. - (TREE_NOT_GIMPLE): Remove. - -2004-01-29 Jason Merrill - - PR c++/13865 - * c-simplify.c (gimplify_for_stmt): Reorganize to fix cleanups. - -2004-01-29 Richard Henderson - - PR c++/13543 - * tree-inline.c (initialize_inlined_parameters): Register the - substitute reference also. - -2004-01-29 Richard Henderson - - * tree-inline.c (gimple_expand_calls_inline): Look inside - RETURN_EXPR. - - * tree-pretty-print.c (dump_generic_node): If TDF_DETAILS, dump - both name and uid. - -2004-01-29 Zdenek Dvorak - - * cfg.c (unlink_block): Reset prev_bb and next_bb. - -2004-01-29 Jeff Law - Andrew MacLeod - - * tree-ssa-live.h (tpa_next_partition): Correctly handle compressed - elements. - * tree-ssa.c (coalesce_ssa_name): New argument, flags. Callers - updated. Test SSANORM_COMBINE_TEMPS in flags rather than - flag_tree_combine_temps. - (coalesce_vars): Either operand of a copy might not have a - partition when rewriting a subset of the variables out of SSA form. - (rewrite_vars_out_of_ssa): Honor -ftree-combine-temps by passing - in SSANORM_COMBINE_TEMPS in flags argument to remove_sas_form.. - -2004-01-29 Dale Johannesen - - * Makefile.in (OBJS-common): Move tree-nomudflap.o... - (OBJS-archive): ...to here, and remove duplicate tree-optimize.o. - -2004-01-28 Richard Henderson - - PR middle-end/13898 - * gimplify.c (gimplify_init_constructor): Invoke - lhd_set_decl_assembler_name on the now-static variable. - -2004-01-28 Richard Henderson - - PR opt/13798 - * expr.c (is_zeros_p): Remove. Change all callers to use - initializer_zerop. - (categorize_ctor_elements_1, categorize_ctor_elements): New. - (count_type_elements): New. - (mostly_zeros_p): Use them. - * gimplify.c (tmp_var_id_num): Split out from create_tmp_var_raw. - (create_tmp_var_name): Likewise. - (gimplify_init_constructor): Drop constructors to readonly memory - as indicated by categorize_ctor_elements and can_move_by_pieces. - * tree.c (initializer_zerop): Handle VECTOR_CST. Don't check - AGGREGATE_TYPE_P for CONSTRUCTOR. - * tree.h (categorize_ctor_elements): Declare. - (count_type_elements): Declare. - * Makefile.in (gimplify.o): Update dependencies. - (GTFILES): Add gimplify.c. - -2004-01-27 Frank Ch. Eigler - - * tree-mudflap.c (mx_register_decls): Support VLAs. - (mf_xform_derefs_1): Disable checking shortcut for VLAs. - * c-simplify.c (gimplify_decl_stmt): Add mudflap xref comment. - * gimplify.c (gimplify_bind_expr): Ditto. - -2004-01-27 Daniel Berlin - - * tree-ssa-pre.c: Add more comments describing SSAPRE and - the various functions. - (generate_expr_as_of_bb): Use PRED, a basic block argument, instead of - j, the index of that bb. - (generate_vops_as_of_bb): Ditto. - (insert_occ_in_preorder_dt_order): Rename to - create_and_insert_occ_in_preorder_dt_order. - -2004-01-27 Daniel Berlin - - * tree-ssa-pre.c (rename_1): Add some more comments. - -2004-01-25 Andrew Pinski - - PR c/13748 - * c-decl.c (finish_function): Do not pass - the function on to optimizers if there was an error. - -2004-01-23 Richard Henderson - - PR opt/12941 - * combine.c (SHIFT_COUNT_TRUNCATED): Provide default value. - (simplify_comparison): Don't simplify (eq (zero_extract c 1 r) 0) - if SHIFT_COUNT_TRUNCATED is set. - -2004-01-21 Richard Henderson - - PR c/11267 - * c-decl.c (c_finalize): New. - (finish_function): Use it. Genericize and finalize only non-nested - functions. Register nested functions with cgraph. - * c-simplify.c: Include cgraph.h. - (c_genericize): Genericize nested functions. - * gimplify.c (gimplify_expr): Use DECL_SAVED_INSNS to access - the struct function for the context. - * Makefile.in (c-simplify.o): Update dependencies. - -2004-01-21 Steven Bosscher - - PR opt/13767 - * tree-cfg.c (simple_goto_p): Remove NONLOCAL_LABEL check. - -2004-01-21 Dale Johannesen - - * tree-dfa.c: Fix comment. - -2004-01-21 Richard Henderson - - PR opt/13681 - * tree-ssa-operands.c (get_expr_operands): Handle (&x + c). - - * tree-ssa-ccp.c (maybe_fold_offset_to_component_ref): Handle - flexible array members and lookalikes. - -2004-01-21 Dale Johannesen - - * tree-ssa-dom.c (cprop_into_stmt): Add convert call - to prevent type mismatches. - -2004-01-21 Daniel Berlin - - * tree-ssa-pre.c (load_modified_phi_result): PARM_DECL is okay - to not have a defbb. - (rename_1): Add a comment. - -2004-01-21 Jeff Law - - * tree-ssa-dom.c (find_equivalent_equality_comparison): Treat - CONVERT_EXPRs just like NOP_EXPRs. - (record_equivalences_from_stmt): Similarly. - (thread_across_edge): Fix formatting goof. - - * tree-ssa-dom.c (thread_across_edge): Remove bogus restriction - which prevents threading around to the top of a loop. - - * tree-ssa-dom.c (thread_across_edge): Handle SWITCH_EXPRs in the - target block in addition to COND_EXPRs. - - * tree-ssa-dom.c (thread_across_edge): Create equivalences for - PHIs before looking at the statements in the destination - block. - -2004-01-20 Roger Sayle - - * fold-const.c (fold_convert): Rename to fold_convert_const. - (fold_convert_const): Change arguments to take a tree_code, - a type and the operand/expression to be converted. Return - NULL_TREE if no simplification is possible. Add support for - FIX_CEIL_EXPR and FIX_FLOOR_EXPR in addition to FIX_TRUNC_EXPR. - (fold): Handle FIX_CEIL_EXPR and FIX_FLOOR_EXPR. - Adjust call to fold_convert to match new fold_convert_const. - Avoid modifying the tree passed to fold in-place. - (nondestructive_fold_unary_to_constant): Likewise, simplify - call to fold_convert to match new fold_convert_const. - -2004-01-20 Daniel Berlin - - * tree-alias-ander.c (andersen_op_assign): Update - prototype. Make this handle &x in the operands using - the addrargs parameter. - (andersen_init): Turn off ip_partial until variables - aliasing variables in other functions is resolved. - (andersen_add_var): Use newly renamed alias_var_new_with_aterm. - Fix comment. - (andersen_add_var_same): Ditto. - (andersen_function_call): Use ip_partial, not flag_unit_at_a_time. - * tree-alias-common.c (get_values_from_constructor): Add bitmap - and int * arguments. Used to mark operands that we are taking - address of. - (get_alias_var_decl): We should never see FIELD_DECL's right now. - (intra_function_call): Reverse ordering for slightly faster - projection merging. - (find_op_of_decl): New function. - (find_func_aliases): Use it. - Comment x = foo.y case. - Move get_alias_var_decl of arguments so we only call it if - necessary. - Handle address of arguments in operations. - (create_fun_alias_var): tvar->var. - Set context of fakeargs. - Set context of fakedecls. - Set DECL_PTA_ALIASVAR of RETURN_DECL's. - (create_fun_alias_var_ptf): tvar->var. - Set context of fakedecls. - (create_alias_vars): Only create alias vars for globals - with DECL_INITIAL's. - * tree-alias-common.h (struct tree_alias_ops): - Update op_assign arguments. - (may_alias): Fix comment. - (same_points_to_set): Ditto. - (empty_points_to_set): Ditto. - * tree-alias-type.h: Rename alias_tvar_new_with_aterm - -> alias_var_new_with_aterm. - * tree-alias-type.c: Ditto. - -2004-01-20 Richard Henderson - - * tree-sra.c (get_scalar_for_field): Validate field. - (create_scalar_copies): Iterate over rhs fields too. - -2004-01-19 Dale Johannesen - - * params.def: Add PARAM_MAX_CALLS_GLOBAL_VAR and - PARAM_MAX_CLOBBERED_VARS_GLOBAL_VAR. - params.h: Ditto. - tree-dfa.c: Use them. - doc/invoke.texi: Document them. - -2004-01-19 Jeff Law - - * tree-ssa.c (insert_phi_nodes_for): Always use fully pruned - SSA form. - - * tree-flow.h: Update copyright dates. - (register_new_def): Declare. - * tree-ssa-dom.c: Update copyright dates. - Add tracking of current definition of each program variable just - like we do when rewriting into SSA form. - (get_value_for, set_value_for): Handle either an SSA_NAME or - regular variable. - (tree_ssa_dominator_optimize): Initialize and update CURRDEFS. - If we thread through a block with real statements, the destination - of those statements must be rewritten too. - (thread_across_edge): Skip nop statements at the start of a - block. - (dom_opt_initialize_block_local_data): Clear block_defs - appropriately. - (record_equivalences_from_phis): Accept walk_data structure. - Call register_new_def appropriately. - (optimize_stmt): Call register_new_defs_for_stmt. - (dom_opt_finalize_block): Restore CURRDEFS appropriately. - (register_new_definitions_for_stmt): New. - * tree-ssa.c: Update copyright dates. - (register_new_def): No longer static. Accept additional argument - for the table to hold the new definition. Callers updated. - - * gimplify.c: Update copyright dates. - * tree-cfg.c: Likewise. - * tree.h: Likewise. - - * tree-iterator.c, tree-iterator.c: Use GCC rather than GNU CC. - * tree-ssa-pre.c, tree-ssa-live.h: Likewise. - -2004-01-19 Daniel Berlin - - * timevar.def (TV_TREE_SPLIT_EDGES): New timevar. - * tree-ssa-pre.c (split_critical_edges): Move from here - (pass_pre): Add PROP_no_crit_edges as required. - * tree-cfg.c (split_critical_edges): to here. - (pass_split_crit_edges): New pass. - * tree-optimize.c (tree_optimization_passes): Add NEXT_PASS - (split_crit_edges). - * tree-pass.h: Add PROP_no_crit_edges. - (pass_split_crit_edges): Declared. - -2004-01-19 Frank Ch. Eigler - - * tree-mudflap.c (mf_build_check_statement_for): Tolerate - incoming locus NULL pointer. - -2004-01-18 Richard Henderson - - * builtins.c (simplify_builtin_strcpy): Export. Take strlen argument. - (simplify_builtin_strncpy, simplify_builtin_strcmp): Similarly. - (simplify_builtin_strncmp): Similarly. - (simplify_builtin): Update to match. - * expr.h (simplify_builtin_strcmp, simplify_builtin_strncmp, - simplify_builtin_strcpy, simplify_builtin_strncpy): Declare. - * tree-pass.h (pass_fold_builtins): New. - * tree-optimize.c (init_tree_optimization_passes): Add it. - * tree-ssa-ccp.c (ccp_fold_builtin): Handle BUILT_IN_STRCPY, - BUILT_IN_STRNCPY, BUILT_IN_STRCMP, BUILT_IN_STRNCMP. - (get_strlen): Don't cast to size_t. - (execute_fold_all_builtins, pass_fold_builtins): New. - -2004-01-19 Jan Hubicka - - PR opt/13729 - * cgraphunit.c (cgraph_finalize_compilation_unit): Fix memory leak. - (cgraph_remove_unreachable_nodes): Do not mix analyzed and - DECL_SAVED_TREE flags. - -2004-01-18 Richard Henderson - - * tree-sra.c (REALPART_INDEX, IMAGPART_INDEX): Remove. - (sra_candidates, needs_copy_in): Use a bitmap. Update all users. - (struct sra_elt, sra_elt_hash, sra_elt_eq): New. - (sra_map_size): Remove. - (sra_map): Use a htab_t. - (lookup_scalar): Update to match. - (get_scalar_for_field, get_scalar_for_complex_part): Likewise. - (scalarize_structure_assignment): Use annotate_all_with_locus. - (csc_build_component_ref): Remove index argument. - (csc_build_complex_part): Take tree_code, not index. - (create_scalar_copies): Don't collect indicies. - (emit_scalar_copies): New. - (scalarize_modify_expr, scalarize_tree_list): Use it. - (scalarize_return_expr): Likewise. - (scalarize_structures): Simplify needs_copy_in iteration. - (scalarize_call_expr): Use annotate_all_with_locus. - (dump_sra_map_trav): Split from ... - (dump_sra_map): ... here. Update for hash table. - (tree_sra): Update for new datastructures. - -2004-01-18 Richard Henderson - - * tree-cfg.c (dump_function_to_file): Move ";; Function" header ... - * tree-optimize.c (execute_one_pass): ... here. - -2004-01-17 Daniel Berlin - - * tree-alias-common.c: s@_typevar@_var@g, s@_TVAR@_VAR@g, - s@_TYPEVAR@_VAR@g - * tree-alias-common.h: Ditto - * tree.h: Ditto - * tree-alias-ander.c: Ditto - * tree-alias-type.c: Ditto - * tree-alias-type.h: Ditto - -2004-01-17 Richard Henderson - - * tree-complex.c (gimplify_val): Copy TREE_BLOCK. - - * tree-complex.c (gimplify_val): New. - (extract_component, do_binop, do_unop): Use it. - -2004-01-17 Richard Henderson - - * tree-complex.c (expand_complex_operations_1): Fix RETURN_EXPR - thinko in last change. - -2004-01-18 Zdenek Dvorak - - * cfghooks.c (split_block): Don't redirect edges. - * cfgrtl.c (rtl_split_block): Do it here. - * tree-cfg.c (tree_split_block): Ditto. - -2004-01-17 Richard Henderson - - * tree-cfg.c (verify_expr): Tidy. Check COND_EXPR for boolean - condition. - -2004-01-17 Jan Hubicka - - PR optimization/11761 - * Makefile.in: Remove tree-simple.c from GTYized files. - * tree-dfa.c (find_addressable_vars): Parse nontrivial ADDR_EXPRs. - (discover_nonconstant_array_refs_r): New static function. - (discover_nonconstant_array_refs): New global function. - * tree-flow.h (discover_nonconstant_array_refs): Declare. - * tree-simple.c (types_checked, types_in_memory): Kill. - (struct_needs_to_live_in_memory): Kill. - (needs_to_live_in_memory): aggregates are safe. - * tree-ssa.c (rewrite_out_of_ssa): Call the new function. - -2004-01-17 Richard Henderson - - PR opt/13718 - * tree-complex.c (expand_complex_comparison): Handle COND_EXPR. - (expand_complex_operations_1): Likewise. - -2004-01-17 Richard Henderson - - * tree-sra.c (scalarize_tree_list): Take bitmap argument to - avoid emitting duplicates. Update all callers. - -2004-01-17 Richard Henderson - - PR opt/13718 - * tree-complex.c (expand_complex_comparison): New. - (expand_complex_operations_1): Handle EQ_EXPR and NE_EXPR. - -2004-01-16 Daniel Berlin - - * tree-alias-common.c (get_alias_var): Handle BIT_FIELD_REF. - (find_func_aliases): Ditto. - Update for fact that basic component_refs are no longer - is_gimple_variable. - (create_fun_alias_var): Set DECL_CONTEXT on our faked declarations. - (pass_del_pta): PTA dumps info on delete, so it needs a name. - -2004-01-16 Steven Bosscher - - * tree-optimize.c (init_tree_optimization_passes): Run DCE - before the first dominator optimization pass. - -2004-01-15 Brian Booth - Richard Henderson - - * tree-sra.c (REALPART_INDEX, IMAGPART_INDEX): New. - (sra_map_size): New. - (make_temp): New. - (mark_all_vdefs): New. - (is_sra_candidate_decl): New. - (is_sra_candidate_ref): New. - (lookup_scalar): Use sra_map_size, make_temp. - (get_scalar_for_field): Rename from get_scalar_for. - (get_scalar_for_complex_part): New. - (can_be_scalarized_p): Handle COMPLEX_TYPE. - (scalarize_component_ref): Handle REAL/IMAGPART_EXPR. - (scalarize_structure_assignment): Tidy. - (find_candidates_for_sra): Handle COMPLEX_TYPE, return bool. - (csc_assign, csc_build_component_ref): Split out from ... - (create_scalar_copies): ... here. Handle COMPLEX_TYPE. - (csc_build_complex_part): New. - (scalarize_modify_expr): Use is_sra_candidate_foo. - (scalarize_tree_list): Likewise. - (scalarize_return_expr): Likewise. - (dump_sra_map): Split out from ... - (tree_sra): ... here. Tidy. - -2004-01-15 Frank Ch. Eigler - - * tree-mudflap.c (mf_xform_derefs): Accept void return statements. - -2004-01-15 Andrew MacLeod - Jeff Law - - * tree-ssa-dom.c (remove_local_expressions_from_table): New function - extracted from dom_opt_finalize_block. - (restore_vars_to_originalvalue): Likewise. - (extract_true_false_edges_from_block): Likewise. - (thread_across_edge): Handle if (cond) too. - (dom_opt_finalize_block): Use new functions. Handle if (cond). - - * tree-ssa-dom.c (thread_across_edge): Accept dom_walk argument. - Record temporary equivalences created by PHIs and temporarily - const/copy propagate into conditionals. - (dom_opt_finalize_block): Thread across an edge to a dominated block - if the dominated block has PHIs. Remove temporary equivalenecs - created by PHIs in thread_across_edge. Update code to restore the - various hash tables to use the actual varray rather than a local - copy of the varray. - (simplify_rhs_and_lookup_avail_expr): Set the condition's code - before settings its operands. - - * tree-ssa.c (create_temp): Use add_referenced_var rather than - an incomplete inline of its behavior. Also make sure to - set is_dereferenced_{load,store}, is_call_clobbered and is_stored. - - * tree-ssa-live.c (build_tree_conflict_graph): Correctly handle - case where the result of a PHI is unused. - -2004-01-15 Diego Novillo - - * cfghooks.c (predicted_by_p): Add missing return. - -2004-01-15 Richard Henderson - - * tree-ssa-dom.c (optimize_stmt): Dump new statement if - folding succeeded. - -2004-01-15 Kazu Hirata - - * tree-cfg.c: Fix comment typos. - * tree-eh.c: Likewise. - * tree-inline.c: Likewise. - * tree-optimize.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa-operands.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-tailcall.c: Likewise. - -2004-01-14 Jan Hubicka - - * basic-block.h: Include predict.h - (tree_predicted_by_p, rtl_predicted_by_p, rtl_predict_edge, - predict_edge_def): Declare. - * cfghooks.h (cfg_hooks): add predict_edge and predicted_by_p - (predict_edge, predicted_by_p): Declare. - * cfghooks.c (predict_edge, predicted_by_p): Declare. - * cfgrtl (rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add new hooks. - * cse.c (struct cse_basic_block_data): Rename enum values to not - conflict with profile.h; update all uses. - * 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 - * tree-cfg.c (tree_cfg_hooks): Add prediction hooks. - * tree-dump.c (dump_files): Add profile. - * tree-flow.h (struct edge_prediction): New structure. - (struct bb_ann_d): Add field predictions. - (tree_estimate_probability): Declare. - * tree-optimize.c (optimize_function_tree): Call tree_estimate_probability. - * tree.h (tree_dump_index): Add TDI_profile. - * tree-pass.h (pass_profile): Declare. - -2004-01-14 Zdenek Dvorak - - * basic-block.h (find_basic_blocks, cleanup_cfg, - delete_unreachable_blocks, merge_seq_blocks): Declare. - * cfgcleanup.c (merge_seq_blocks): New. - * output.h (find_basic_blocks, cleanup_cfg, delete_unreachable_blocks): - Declarations moved to basic-block.h. - * tree-cfg.c (tree_merge_blocks, tree_can_merge_blocks_p): New. - (cleanup_tree_cfg): Call merge_seq_blocks. - (tree_cfg_hooks): Add tree_can_merge_blocks_p and tree_merge_blocks. - -2004-01-14 Zdenek Dvorak - - * tree-cfg.c (tree_make_forwarder_block): Fix. - -2004-01-14 Richard Henderson - - * tree-complex.c: New file. - * Makefile.in (OBJS-common): Add it. - * tree-pass.h (pass_lower_complex): New. - * tree-optimize.c (init_tree_optimization_passes): Add it. - -2004-01-14 Zdenek Dvorak - - * Makefile.in (tree-ssa-loop.o): Add cfgloop.h dependency. - (cfghooks.o): Add TIMEVAR_H and toplev.h dependency. - * basic-block.h (struct edge_def): Use ir_type instead testing of - cfg_hooks directly. - (tidy_fallthru_edge, tidy_fallthru_edges, dump_bb, verify_flow_info): - Declaration removed. - * cfg.c (verify_flow_info, dump_bb): Moved to cfghooks.c. - * cfgcleanup.c (try_simplify_condjump): Changed due to change of - tidy_fallthru_edge. - * cfghooks.c: Include timevar.h and toplev.h. - (cfg_hooks): Made static. - (tree_register_cfg_hooks, ir_type): New. - (verify_flow_info, dump_bb): Moved from cfg.c. - (redirect_edge_and_branch, redirect_edge_and_branch_force, - split_block, split_block_after_labels, move_block_after, - delete_basic_block, split_edge, create_basic_block, - create_empty_bb, can_merge_blocks_p, merge_blocks, - make_forwarder_block, tidy_fallthru_edge, tidy_fallthru_edges): New. - * cfghooks.h (struct cfg_hooks): Modified. - (redirect_edge_and_branch, redirect_edge_and_branch_force, split_block, - delete_basic_block, split_edge, create_basic_block, can_merge_blocks_p, - merge_blocks, make_forwarder_block): Changed into functions. - (loop_optimizer_init, loop_optimizer_finalize): Removed. - (HEADER_BLOCK, LATCH_EDGE): Moved into cfgloop.c. - (tidy_fallthru_edge, tidy_fallthru_edges, create_empty_bb, - verify_flow_info, dump_bb, ir_type): Declare. - (cfg_layout_rtl_cfg_hooks): Declare. - * cfglayout.c (copy_bbs): Don't call add_to_dominance_info. - * cfgloop.c (HEADER_BLOCK, LATCH_EDGE): Moved from cfghooks.h. - (update_latch_info, mfb_keep_just, mfb_keep_nonlatch): New functions. - (canonicalize_loop_headers): Use new semantics of make_forwarder_block. - * cfgloop.h (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize): - Removed. - (loop_optimizer_init, loop_optimizer_finalize): Declare. - * cfgloopmanip.c (split_loop_bb): Don't update dominators. - (remove_bbs): Don't call remove_bbs. - (create_preheader): Use make_forwarder_block. - (mfb_keep_just, mfb_update_loops): New static functions. - * cfgrtl.c (cfg_layout_split_block, rtl_split_block, - rtl_make_forwarder_block, rtl_create_basic_block, - rtl_delete_block, rtl_split_block, rtl_merge_blocks, - tidy_fallthru_edge, rtl_split_edge, cfg_layout_merge_blocks, - cfg_layout_split_edge): Parts not specific to rtl moved to cfghooks.c - (tidy_fallthru_edges): Moved to cfghooks.c. - (rtl_move_block_after): New. - (redirect_edge_with_latch_update, update_cfg_after_block_merging): - Removed. - (rtl_cfg_hooks, cfg_layout_rtl_cfg_hooks): Modified. - * ifcvt.c (merge_if_block, find_cond_trap, find_if_case_1, - find_if_case_2): Don't update dominators. - * loop-init.c (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize): - Replaced by rtl_loop_optimizer_init and rtl_loop_optimizer_finalize. - * loop-unswitch.c (unswitch_loop): Don't call add_to_dominance_info. - * toplev.c (rest_of_handle_loop2): Enter cfglayout mode here. - * tree-cfg.c (create_bb): Modified to suit create_basic_block hook. - (tree_redirect_edge_and_branch_1): Merged into - tree_redirect_edge_and_branch. - (create_blocks_annotations): Removed. - (tree_loop_optimizer_init, tree_loop_optimizer_finalize): Removed. - (tree_make_forwarder_block, remove_bb, tree_split_edge, - tree_redirect_edge_and_branch, tree_split_block, - tree_move_block_after): Partially moved to cfghooks.c. - (tree_duplicate_bb): New. - (PENDING_STMT): Moved to tree-flow.h. - (tree_register_cfg_hooks): Moved to cfghooks.c. - (build_tree_cfg): Don't call create_blocks_annotations. - (factor_computed_gotos, make_blocks): Use create_empty_bb. - (cleanup_tree_cfg): Use delete_unreachable_blocks. - (remove_unreachable_blocks, insert_bb_before): Removed. - (remove_phi_nodes_and_edges_for_unreachable_block): Modified. - (tree_find_edge_insert_loc, thread_jumps): Use cfg hooks. - (bsi_commit_edge_inserts): Update_annotations argument removed. - (tree_cfg_hooks): Modified. - * tree-flow.h (PENDING_STMT): Moved from tree-cfg.c. - (insert_bb_before, remove_unreachable_blocks, - remove_phi_nodes_and_edges_for_unreachable_block, tree_split_edge): - Declaration removed. - (bsi_commit_edge_inserts): Declaration changed. - (tree_duplicate_bb): Declare. - * tree-sra.c (scalarize_structures): Changed due to - bsi_commit_edge_inserts change. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Use - delete_unreachable_blocks. - * tree-ssa-loop.c: Include cfgloop.h. - * tree-ssa-pre.c (split_critical_edges, tree_perform_ssapre): Use cfg - hooks. - * tree-ssa.c (rewrite_trees, rewrite_vars_out_of_ssa): Changed due to - bsi_commit_edge_inserts change. - (ssa_redirect_edge): Record the phi arguments on the redirected edge. - * tree-tailcall.c (eliminate_tail_call): Clean stored phi arguments. - -2004-01-13 Richard Henderson - - * gimplify.c (gimplify_lhs_complex_part_expr): Remove. - (gimplify_modify_expr): Don't call it. - - * tree-alias-common.c (HAVE_BANSHEE): Make sure it's defined. - (pass_build_pta): Set name. - -2004-01-13 Zdenek Dvorak - - * tree-tailcall.c (eliminate_tail_call): Add phi nodes for the call - vdefs. - (find_tail_calls): Ignore returns with virtual operands. - -2004-01-12 Richard Henderson - - * tree-pass.h: New file. - * gimple-low.c: Include tree-pass.h. - (lower_function_body): Make static, take no arguments. Set - dont_emit_block_notes and call reset_block_changes here. - (pass_lower_cf): New. - * toplev.c (general_init): Call init_tree_optimization_passes. - * toplev.h (init_tree_optimization_passes): Declare. - * tree-alias-ander.c: Include tree-pass.h. - (tree_dump_file, tree_dump_flags): Remove. - (andersen_init): Don't dump_begin. - (andersen_cleanup): Don't dump_end. - * tree-alias-common.c: Include tree-pass.h, timevar.h. - (currptadecl): Remove. - (create_alias_vars): Make static, take no args. Tidy ifdefs. - (delete_alias_vars): Likewise. Protect vs PTA_ANDERSEN. - (pass_build_pta, pass_del_pta): New. - * tree-alias-common.h (create_alias_vars): Delete decl. - (delete_alias_vars): Likewise. - * tree-cfg.c: Include tree-pass.h. - (tree_dump_file, tree_dump_flags): Remove. - (build_tree_cfg): Don't timevar, do init_flow. Ensure one bb. - Don't dump the function here. - (execute_build_cfg, pass_build_cfg): New. - (remove_useless_stmts): Make static, take no arguments. - (pass_remove_useless_stmts): New. - (remove_bb): Don't open the dump file. - * tree-dfa.c: Include tree-pass.h. - (tree_dump_file, tree_dump_flags): Remove. - (find_referenced_vars): Make static, take no args. Do init_tree_ssa. - (compute_may_aliases): Similarly. Don't timevar or open dump file. - Don't delete_alias_vars here. - (pass_referenced_vars, pass_may_alias): New. - * tree-dump.c (dump_files): Remove optimization dumps. - (extra_dump_files, extra_dump_files_in_use): New. - (extra_dump_files_alloced): New. - (dump_register): New. - (get_dump_file_info): New. - (dump_begin, dump_enabled_p, dump_flag_name): Use it. - (dump_enable_all): Handle extra_dump_files. - (dump_switch_p_1): Split out from dump_switch_p. - (dump_switch_p): Handle extra_dump_files. - * tree-dump.h (dump_register): Declare. - * tree-eh.c: Include tree-pass.h - (lower_eh_constructs): Make static, take no args. Don't timevar, - don't dump function. - (pass_lower_eh): New. - * tree-flow.h (remove_useless_stmts, find_referenced_vars, - compute_may_aliases, lower_function_body, rewrite_out_of_ssa, - tree_ssa_ccp, tree_ssa_dominator_optimize, tree_ssa_dce, - tree_ssa_loop_opt, lower_eh_constructs, tree_sra): Remove. - (rewrite_into_ssa): Update decl. - * tree-mudflap.c: Include tree-pass.h. - (mudflap_function_decls): Make static, take no args, don't process - functions with mf_marked_p. - (mudflap_function_ops): Likewise. - (gate_mudflap, pass_mudflap_1, pass_mudflap_2): New. - (mudflap_enqueue_decl): Don't open dump file. - (mudflap_enqueue_constant): Likewise. - * tree-nomudflap.c: Include tree-pass.h. - (mudflap_c_function_decls, mudflap_c_function_ops): Remove. - (pass_mudflap_1, pass_mudflap_2): New. - * tree-optimize.c: Include tree-pass.h. - (optimize_function_tree): Remove. - (tree_dump_file, tree_dump_flags, vars_to_rename): New. - (all_passes): New. - (execute_gimple, pass_gimple): New. - (execute_rebuild_bind, pass_rebuild_bind): New. - (gate_all_optimizations, pass_all_optimizations): New. - (execute_del_cfg, pass_del_cfg): New. - (register_one_dump_file, register_dump_files): New. - (dup_pass_1, init_tree_optimization_passes): New. - (current_properties, last_verified): New. - (execute_todo, execute_one_pass, execute_pass_list): New. - (tree_rest_of_compilation): Remove -O0 passes. - * tree-sra.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags, vars_to_rename): Remove. - (tree_sra): Make static, take no args. Don't timevar or dump file. - (gate_sra, pass_sra): New. - * tree-ssa-ccp.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags): New. - (tree_ssa_ccp): Make static, take no args. Don't timevar or dump file. - (gate_ccp, pass_ccp): New. - (substitute_and_fold): Take no args. - * tree-ssa-dce.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags): New. - (tree_ssa_dce): Make static, take no args. Don't open dump file. - (gate_dce, pass_dce): New. - * tree-ssa-dom.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags, vars_to_rename): Remove. - (tree_ssa_dominator_optimize): Make static, take no args, don't - timevar, don't dump file. - (gate_dominator, pass_dominator): New. - * tree-ssa-loop.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags): Remove. - (tree_ssa_loop_opt): Make static, take no args, don't open dump file. - (gate_loop, pass_loop): New. - * tree-ssa-pre.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags): Remove. - (execute_pre): Rename from tree_perform_ssapre, make static, - take no args, don't timevar, don't open dump file, don't allocate - vars_to_rename. - (gate_pre, pass_pre): New. - * tree-ssa.c: Include tree-pass.h. - (tree_dump_file, tree_dump_flags, vars_to_rename): Remove. - (rewrite_into_ssa): Take no arguments, don't open dump file. - (rewrite_out_of_ssa): Make static, take no args, don't timevar, - don't open dump file. Disable TER if mudflap. - (pass_build_ssa, pass_del_ssa): New. - * tree-tailcall.c: Include tree-pass.h, flags.h. - (tree_dump_file, tree_dump_flags): Remove. - (tree_optimize_tail_calls_1): Rename from tree_optimize_tail_calls. - Make static, take only opt_tailcalls, don't dump file. - (execute_tail_recursion, gate_tail_calls, execute_tail_calls): New. - (pass_tail_recursion, pass_tail_calls): New. - * tree.h (enum tree_dump_index): Remove optimization dumps. - * Makefile.in (tree-alias-ander.o, tree-alias-common.o, tree-ssa.o, - tree-ssa-dom.o, tree-ssa-pre.o, tree-cfg.o, tree-tailcall.o, - tree-dfa.o, tree-eh.o, tree-ssa-loop.o, tree-optimize.o, gimple-low.o, - tree-mudflap.o, tree-ssa-dce.o, tree-ssa-ccp.o, tree-sra.o: Update - dependencies. - -2004-01-12 Frank Ch. Eigler - - * tree-mudflap.c (mf_xform_derefs): Restore instrumentation of - RETURN_EXPRs. - -2004-01-11 Jan Hubicka - - * tree-cfg.c (remove_usless_stmts_cond): Fold statement. - (remove_useless_stmts_1): Fold trees we know how to fold. - -2004-01-09 Richard Henderson - - * gimplify.c (gimplify_constructor): Merge into ... - (gimplify_init_constructor): ... here. Handle COMPLEX_TYPE and - VECTOR_TYPE. - (gimplify_lhs_complex_part_expr): New. - (gimplify_modify_expr): Call it. - * tree-simple.c (is_gimple_rhs): Accept COMPLEX_EXPR. - * c-pretty-print.c (pp_c_initializer): Accept any type CONSTRUCTOR. - (pp_c_initializer_list): Fix code expectations for VECTOR_TYPE and - COMPLEX_TYPE. - -2004-01-09 Steven Bosscher - - PR optimization/13599 - * tree-cfg.c (remove_useless_stmts_cond): Clear last-goto - before returning. - -2004-01-09 Richard Henderson - - * gimplify.c (gimplify_asm_expr): Fix ordering of ASM_INPUTS. - -2004-01-09 Jan Hubicka - - * cgraph.h (cgraph_clone_inlined_nodes): Declare. - * cgraphunit.c (cgrpah_clone_inlined_nodes): Make global. - (cgraph_mark_inline_edge): Sanity check that size is positive. - (cgraph_decide_inlining): Fix typo. - * tree-optimize.c (tree_rest_of_compilation): Fix node duplication - code. - -2004-01-09 Jan Hubicka - - * tree-inline.c (estimate_num_insns_1): Fix. - -2004-01-09 Richard Henderson - - * tree-alias-ander.c, tree-cfg.c, tree-dfa.c, tree-mudflap.c, - tree-sra.c, tree-ssa-ccp.c, tree-ssa-dce.c, tree-ssa-dom.c, - tree-ssa-loop.c, tree-ssa-pre.c, tree-ssa.c, tree-tailcall.c: Rename - dump_file and dump_flags to tree_dump_file/flags. - -2004-01-08 Frank Ch. Eigler - - * tree-mudflap.c (mf_build_string): Properly mf_mark string. - (mf_varname_tree): Remove redundant marking. - * tree-optimize.c (tree_rest_of_compilation): Skip mudflap processing - of mf_marked functions. - * c-mudflap.c (mflang_flush_calls): mf_mark synthetic function. - -2004-01-07 Diego Novillo - - * Makefile.in (OBJS-common): Remove tree-must-alias.o - (tree-must-alias.o): Remove. - * common.opt (ftree-must-alias): Remove. - * flags.h (flag_tree_must_alias): Remove. Update all users. - * timevar.def (TV_TREE_MUST_ALIAS): Remove. - * toplev.c (f_options): Remove entry for -ftree-must-alias. - * tree-alias-common.c (local_alias_vars): Add GTY marker. - (local_alias_varnums): Likewise. - * tree-dfa.c (aliases_computed_p): Declare. - (dump_variable): Show variable UID and dereferenced bits. - (compute_may_aliases): Add arguments 'vars_to_rename' and 'phase'. - Do not call create_alias_vars. - Call promote_call_clobbered_vars - Do debugging dumps. - Set 'aliases_computed_p' to true before returning. - (create_memory_tags): Call may_be_aliased. - Mark new memory tags for renaming. - (compute_alias_sets): Don't do debugging dumps. - (find_variable_in): Move from tree-must-alias.c - (remove_element_from): Likewise. - (find_addressable_vars): Likewise - (promote_call_clobbered_vars): New. - (get_memory_tag_for): Mark the tag volatile if the pointed-to type - is volatile. - * tree-dump.c (dump_files): Remove entry for tree-mustalias. - Add entries for tree-ssa7, tree-dom3 and tree-dce3. - * tree-flow-inline.h (may_be_aliased): New. - * tree-flow.h (may_be_aliased): Declare. - (aliases_computed_p): Declare. - (tree_compute_must_alias): Remove. - * tree-must-alias.c: Remove. - * tree-optimize.c: Include tree-alias-common.h. - (optimize_function_tree): Call create_alias_vars before going into - SSA form. - Do not compute aliases until after the first DOM and DCE passes. - Run DOM and DCE once more after computing may-aliases. - * tree-ssa-dom.c (propagate_copy): Merge the dereferenced bit flags - when copy propagating pointers. - * tree-ssa-operands.c (get_stmt_operands): Assume that the - statement has no volatile operands. - (get_expr_operands): When processing an INDIRECT_REF expressions, - mark the statement as having volatile operands if aliases have not - been computed. - (add_stmt_operand): If the variable may be aliased and aliasing has - not been computed yet, mark the statement as having volatile - operands. - * tree-ssa.c (init_tree_ssa): Set aliases_computed_p to false. - (delete_tree_ssa): Likewise. - * tree.h (tree_dump_index): Remove TDI_mustalias. - Add TDI_dom_3, TDI_ssa_7 and TDI_dce_3. - * doc/invoke.texi: Remove must-alias documentation. - -2004-01-07 Jeff Law - - * tree-ssa-dce.c (find_useful_stmts): Do not consider PHIs for - virtual operands inherently necessary. - -2004-01-07 Zdenek Dvorak - - * tree-dfa.c (free_df_for_stmt, free_df): New functions. - (compute_immediate_uses_for_stmt): Record uses in VDEFs. - * tree-flow.h (free_df, kill_redundant_phi_nodes): Declare. - * tree-optimize.c (optimize_function_tree): Call - kill_redundant_phi_nodes. - * tree-ssa-ccp.c (finalize): Call free_df. - * tree-ssa.c (replace_immediate_uses, raise_value, - kill_redundant_phi_nodes): New functions. - -2004-01-06 Jeff Law - - * tree.h (FUNCTION_RECEIVES_NONLOCAL_GOTO): Kill. - * tree-cfg.c (make_exit_edges, is_ctrl_altering_stmt): Use - current_function_has_nonlocal_label instead of - FUNCTION_RECEIVES_NONLOCAL_GOTO. - * gimplify.c (gimplify_expr): Set has_nonlocal_label in the - appropriate function's struct function rather than setting - a bit in the FUNCTION_DECL. - -2004-01-06 Jan Hubicka - - * expr.c (string_constant): Recognize array_ref. - -2004-01-06 Richard Henderson - - * builtins.c (builtin_save_expr): New. - (expand_builtin_mathfn, expand_builtin_mathfn_2, - expand_builtin_strcmp, expand_builtin_strncmp, - expand_builtin_strcat, fold_builtin_cabs): Use it. - -2004-01-06 Jan Hubicka - - * fold-const.c (fold): Do not rebuild comparison when nothing - changed. - -2004-01-05 Jan Hubicka - - * tree-ssa-ccp.c (ccp_fold_builtin): Return early for builtins - taking no arugment. - -2004-01-05 Steven Bosscher - - * tree-ssa-dce.c: Clean up whitespace. - - * tree-cfg.c (tree_verify_flow_info): Fix complaint about - missing or wrong labels in the targets of a conditional branch. - -2004-01-05 Richard Henderson - - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Check - for signed zeros before recording value. - * Makefile.in (tree-ssa-dom.o): Depend on real.h. - -2004-01-05 Jeff Law - - * tree-ssa-dom.c (cprop_into_stmt): Remove hack which prevented - copy propagation into statements with virtual operands, but no - real operands. - - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Correctly handle - the case where an edge we wish to redirect is split by the out of SSA - code. - -2004-01-05 Richard Henderson - - * c-tree.h (struct lang_type): Add enum_min, enum_max. - * c-decl.c (finish_enum): Set them. Set TYPE_MIN/MAX_VALUE to - the limits of the compatible type, not to the enumerators. - (check_bitfield_type_and_width): Use them. - (finish_struct): Clear allocated struct lang_type. - * gimplify.c (gimplify_switch_expr): Remove special handling of - outer cast in a switch. - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Likewise. - -2004-01-05 Daniel Berlin - - * tree-ssa-pre.c (added_phis): Removed. - Remove gt-tree-ssa-pre.h. - (process_left_occs_and_kills): ASM_EXPR's block load pre. - - * Makefile.in (GTFILES): Don't process tree-ssa-pre.c. - gt-tree-ssa-pre.h isn't a gtfile anymore. - -2004-01-05 Andrew Pinski - - * config.gcc (powerpc-*-darwin*): Make libbanshee rebuild - on PPC darwin. - -2004-01-05 Richard Henderson - - * gimplify.c (gimplify_expr): Move check for error_mark inside - the main loop. - -2004-01-04 Jan Hubicka - - * Makefile.in (cgraph.o, cgraphunit.o): Add intl.h dependency. - * cgraph.c (create_edge, dump_cgraph): Update to use inline_failed - * cgraph.h (cgraph_edge): Replace inline_call by inline_failed - (cgraph_inline_p): Add extra argument reason. - * cgraphunit.c: Minor formating fixes. - cgraph_first_inlined_callee): New functions. - (record_call_1): Record builtins too. - (cgraph_analyze_function): Update inline_failed messages. - (cgraph_mark_functions_to_output, cgraph_expand_function, cgraph_inlined_into, - cgraph_inlined_callees, cgraph_estimate_growth): Update to use inline_failed. - (cgraph_check_inline_limits): Likewise; Add argument reason. - (cgraph_set_inline_failed): New static function. - (cgraph_decide_inlining_of_small_function, cgraph_decide_inlining): Set - reasons. - (cgraph_inline_p): Add new argument reason. - * tree-inline.c (expand_call_inline): Update warning. - -2004-01-04 Andreas Jaeger - - * common.opt: Re-order some options in ASCII collating orders. - -2004-01-03 Richard Henderson - - * toplev.c (rest_of_compilation): Fixup merge error wrt - check_function_return_warnings. - - * tree.h (FUNCTION_RECEIVES_NONLOCAL_GOTO): Use unsigned_flag. - -2004-01-02 Jan Hubicka - - * c-decl.c (duplicate_decls): Output DIE of extern inline function - only when it can be inlined. - * c-objc-common.c (c_disregard_inline_limits): When not inlining - extern inline functions do not disregard. - * cgraphunit.c (cgraph_analyze_function): When not inlining do not set - inline. - (cgraph_decide_inlining): Limit work done when not inlining. - (cgrpah_decide_inlining_incrementally): Likewise. - * tree-optimize.c (tree_rest_of_compilation): Do not call - optimize_inline_calls - when there is nothing to inline. - -2004-01-01 Richard Henderson - - * c-common.c (c_expand_expr): Don't handle STMT_EXPR. - * c-objc-common.c (c_objc_common_finish_file): Use expand_expr. - * c-semantics.c (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. - * c-common.h: Update. - -2003-12-31 Richard Henderson - - * c-mudflap.c (mflang_register_call): Remove. - (mflang_flush_calls): Use start_function/finish_function. - * tree-mudflap.c (mf_init_extern_trees): Tidy. - (mf_decl_cache_locals): Fix chaining for empty body. - (deferred_static_decl_labels): Remove. - (deferred_static_decls_init): Remove. - (mudflap_register_call): New. - (mudflap_enqueue_decl): Use it. Remove label argument. - (mudflap_enqueue_constant): Likewise. - (mudflap_finish_file): Update to match. - * tree-mudflap.h (mudflap_enqueue_decl): Remove label argument. - (mudflap_enqueue_constant): Likewise. - (mflang_register_call): Remove. - * tree-nomudflap.c (mudflap_enqueue_decl): Remove label argument. - (mudflap_enqueue_constant): Likewise. - * tree-optimize.c (tree_ssa_finish): Don't create NULL bodies. - * varasm.c (make_decl_rtl): Update mudflap_enqueue_decl call. - (output_constant_def_contents): Similarly for mudflap_enqueue_constant. - -2003-12-26 Sebastian Pop - - * tree-cfg.c (print_loop, print_pred_bbs, print_succ_bbs, - debug_loop_ir, print_loop_ir): New. - * tree-flow.h (debug_loop_ir, print_loop_ir): Declare. - -2003-12-23 Jeff Law - - * tree-cfg.c (tree_find_edge_insert_loc): Do not use the target - block as an insertion location if the target block has PHI nodes. - -2003-12-23 Jan Hubicka - - * cgraphunit.c (cgraph_mark_inline): Accept argument edge; return - next edge not redirected. - (cgraph_recursive_inlining_p): Simplify. - (cgraph_decide_inlining*): Update calls of cgraph_mark_inline. - -2003-12-22 Toon Moene - - * tree-alias-common.c (find_func_aliases): Do not call - intra_function_call for languages assuring no aliasing between - arguments (by themselves) and global memory. - -2003-12-21 Jan Hubicka - - * tree-ssa-ccp.c (fold_stmt): Return when there is no RHS - (get_rhs): Return for RETURN_EXPR with no operand. - -2003-12-21 Zdenek Dvorak - - * tree-cfg.c (tree_make_forwarder_block): Use split_block. - (tree_split_block): New. - (tree_cfg_hooks): Add tree_split_block. - (tree_loop_optimizer_init): Enable force_single_succ_latches. - * cfgloopmanip.c (loop_split_edge_with): Don't update dominators. - * cfgrtl.c (rtl_split_edge, cfg_layout_split_edge): Update dominators. - -2003-12-19 Daniel Berlin - - * tree-dfa.c (alias_stats_d): New structure. - (alias_stats): New variable. - (create_memory_tags): Zero out alias_stats. - (dump_alias_stats): New function. - (compute_alias_sets): Call it if TDF_STATS is set. - (may_alias_p): Collect the various statistics. - -2003-12-19 Diego Novillo - - * gimple-low.c (expand_var_p): Always expand volatiles. - * tree-dfa.c (find_referenced_vars): Move up in the file. - (create_memory_tags): New local function. - (compute_may_aliases): Call it. - (add_referenced_var): Move code to create memory tags and create - aliasing arrays to create_memory_tags. - (get_memory_tag_for): Don't mark memory tags volatile. Mark them - addressable. - * tree-flow.h (var_ann_d): Add bitfields is_dereferenced_store and - is_dereferenced_load. - (add_call_clobbered_var): Remove. - * tree-ssa-operands.c (check_optype_freelist): Mark arguments - unused. - (add_optype_freelist): Likewise. - (add_stmt_operand): Don't add operands for volatile variables. - -2003-12-19 Kazu Hirata - - * dominance.c: Fix comment typos. - * et-forest.c: Likewise. - * et-forest.h: Likewise. - * tree-cfg.c: Likewise. - * tree-eh.c: Likewise. - * tree-mudflap.c: Likewise. - * tree-optimize.c: Likewise. - * tree-pretty-print.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa.c: Likewise. - * tree-tailcall.c: Likewise. - * tree.def: Likewise. - * tree.h: Likewise. - -2003-12-18 Jason Merrill - - PR c++/12453 - * c-simplify.c (stmt_expr_last_stmt): Split out from... - (gimplify_stmt_expr): Here. - * c-common.h: Declare it. - -2003-12-18 Zdenek Dvorak - - * et-forest.h (et_forest_create, et_forest_delete, - et_forest_add_node, et_forest_add_edge, et_forest_remove_node, - et_forest_remove_edge, et_forest_parent, - et_forest_common_ancestor, et_forest_node_value, - et_forest_enumerate_sons): Declarations removed. - (struct et_node): New. - (et_new_tree, et_free_tree, et_set_father, et_split, et_nca, - et_below): Declare. - * et-forest.c (struct et_forest_occurrence, struct et_forest, - struct et_forest_node): Removed. - (et_forest_create, et_forest_delete, - et_forest_add_node, et_forest_add_edge, et_forest_remove_node, - et_forest_remove_edge, et_forest_parent, - et_forest_common_ancestor, et_forest_node_value, - et_forest_enumerate_sons, splay, remove_all_occurrences, - find_leftmost_node, find_rightmost_node, calculate_value): Removed. - (struct et_occ): New. - (et_nodes, et_occurences): New. - (set_depth, set_depth_add, set_prev, set_next, et_recomp_min, - et_check_occ_sanity, et_check_sanity, et_check_tree_sanity, - record_path_before_1, record_path_before, check_path_after_1, - check_path_after, et_splay, et_new_occ, et_new_tree, - et_free_tree, et_set_father, et_split, et_nca, et_below): New. - * basic-block.h (struct basic_block_def): New field dom. - (struct dominance_info): Type removed. - (calculate_dominance_info, free_dominance_info, - nearest_common_dominator, set_immediate_dominator, - get_immediate_dominator, dominated_by_p, get_dominated_by, - add_to_dominance_info, delete_from_dominance_info, - recount_dominator, redirect_immediate_dominators, - iterate_fix_dominators, verify_dominators): Declarations - changed. - (enum dom_state): New. - (dom_computed): New variable. - (first_dom_son, next_dom_son): Declare. - * dominance.c (struct dominance_info): Removed. - (BB_NODE, SET_BB_NODE): Removed. - (calculate_dominance_info, free_dominance_info, - nearest_common_dominator, set_immediate_dominator, - get_immediate_dominator, dominated_by_p, get_dominated_by, - add_to_dominance_info, delete_from_dominance_info, - recount_dominator, redirect_immediate_dominators, - iterate_fix_dominators, verify_dominators, - debug_dominance_info): Work over new datastructure. Access - dominance datastructures through CFG. - (assign_dfs_numbers, compute_dom_fast_query, first_dom_son, - next_dom_son): New. - * tree-cfg.c (pdom_info): Variable removed. - (create_bb): Add the block to the dominance information. - (cleanup_tree_cfg): Let updating of the dominance on the - individual passes. - (remove_bb): Don't handle pdom. - (cleanup_control_expr_graph, tree_make_forwarder_block, - thread_jumps): Invalidate the dominators. - (tree_split_edge): Update the dominators. - (compute_dominance_frontiers_1, compute_dominance_frontiers, - tree_verify_flow_info, tree_loop_optimizer_init): Use the new - interface to dominators. - * domwalk.c (walk_dominator_tree): Do not use dom_children. - * tree-flow-inline.h (add_dom_child, remove_dom_child, - clear_dom_children, dom_children): Removed. - * tree-flow.h (struct bb_ann_d): Dom_children field removed. - (add_dom_child, dom_children, build_dominator_tree): Declaration - removed. - (compute_dominance_frontiers): Declaration changed. - * tree-optimize.c (optimize_function_tree): Free dominance - information in the end. - * tree-ssa-dom.c (tree_ssa_dominator_optimize, - dom_opt_finalize_block): Do not use dom_children. - * tree-ssa-pre.c (fast_a_dominates_b, build_dfs_id_array_1, - build_dfs_id_array): Removed. - (pre_idom, dfs_id, dfs_id_last): Variables removed. - (build_dfn_array): Do not use dom_children. - (eref_compare, load_modified_phi_result, rename_1, reaching_def, - finalize_1, collect_expressions, tree_perform_ssapre): Use the - new interface to the dominance information. - * tree-ssa.c (struct mark_def_sites_global_data): Idom field - removed. - (set_livein_block, verify_use, verify_phi_args, - rewrite_into_ssa, mark_def_sites, verify_ssa): Use the new - interface to the dominance information. - (build_dominator_tree): Removed. - * tree-tailcall.c (tree_optimize_tail_calls): Invalidate - dominance information. - * bt-load.c (dom): Variable removed. - (augment_live_range, combine_btr_defs, migrate_btr_def, - migrate_btr_defs, branch_target_load_optimize): Updated for the - new interface for dominance information. - * cfglayout.c (copy_bbs): Removed loops argument. Updated for - the new interface for dominance information. - * cfglayout.h (copy_bbs): Declaration changed. - * cfgloop.c (flow_loop_pre_header_find, flow_loops_cfg_dump, - flow_loop_scan, canonicalize_loop_headers, flow_loops_find): Updated - for the new interface for dominance information. - (flow_loop_scan): Loops argument removed. - (flow_loops_free): Don't release dominators. - * cfgloop.h (struct cfg): Dom field removed. - (flow_loop_scan, loop_split_edge_with, simple_loop_p, - just_once_each_iteration_p, split_loop_bb): Declaration changed. - * cfgloopanal.c (simple_loop_exit_p, simple_increment, - just_once_each_iteration_p, simple_loop_p): Remove loops argument. - Updated for the new interface for dominance information. - * cfgloopmanip.c (remove_bbs, find_path, create_preheader, - split_loop_bb, loopify, duplicate_loop_to_header_edge, - force_single_succ_latches, loop_split_edge_with): Ditto. - (create_loop_notes): Free the dominators. - * gcse.c (dominators): Variable removed. - (free_code_hoist_mem, compute_code_hoist_data, hoist_code): - Updated for the new interface for dominance information. - * ifcvt.c (post_dominators): Variable removed. - (mark_loop_exit_edges, merge_if_block, find_if_header, - find_cond_trap, find_if_case_1, find_if_case_2, if_convert): - Updated for the new interface for dominance information. - * loop-init.c (rtl_loop_optimizer_init, - rtl_loop_optimizer_finalize): Ditto. - * loop-unroll.c (decide_peel_simple, decide_peel_once_rolling, - decide_peel_completely, decide_unroll_stupid, - decide_unroll_constant_iterations, - decide_unroll_runtime_iterations): Loops argument removed. - Updated for the new interface for dominance information. - (unroll_and_peel_loops, peel_loops_completely, - unroll_loop_runtime_iterations): Updated for the new interface for - dominance information. - * loop-unswitch.c (may_unswitch_on_p, unswitch_loops, - unswitch_single_loop, unswitch_loop): Updated for the new - interface for dominance information. - * predict.c (process_note_predictions, process_note_prediction, - estimate_probability, note_prediction_to_br_prob): Ditto. - * sched-rgn.c (find_rgns, init_regions): Ditto. - * toplev.c (rest_of_handle_branch_prob): Free the dominators. - -2003-12-18 Jeff Law - - * tree-ssa-dom.c (edges_to_redirect, redirection_targets): Merged - into a single varray "redirection_edges". - (tree_ssa_dominator_optimize): Twiddle initialization, finalization - and accessors to redirection information based on combining varrays. - Get the threading destination from the saved edge rather than from a - saved block. Mark variables appearing in PHIs at the jump thread - destination to be taken out of SSA form. - (thread_across_edge): Save the edge into the destination block - rather than the destination block itself. Twiddle based on - combining varrays of jump threading information. - * tree-flow.h (tree_block_forwards_to): Returns an edge rather than - a block. - * tree-cfg.c (tree_block_forwards_to): Return the edge leading to - the target block rather than the target block itself. - -2003-12-18 Daniel Berlin - - * tree-dfa.c (get_memory_tag_for): Don't put things with different - points-to sets in the same memory tag. - -2003-12-18 Jan Hubicka - - * c-common.c (handle_nonnull_attribute, check_function_nonnull): - Initialize arg_num. - * c-format.c (handle_format_attribute): Initialize format_num. - * rtlanal.c (get_related_value): Initialize get_jump_table_offset - -2003-12-18 Zdenek Dvorak - - * stmt.c (expand_start_loop, expand_loop_continue_here, - expand_end_loop): Don't create loop notes. - -2003-12-18 Zdenek Dvorak - Jeff Law - - * tree-cfg.c (tree_node_shared_p): Explicitly allow sharing of - CST nodes. - * tree-simple.c (is_gimple_rhs): Allow CST nodes. - (is_gimple_min_invariant): Reject constants with TREE_OVERFLOW set. - * tree-ssa-ccp (visit_assignment): Test is_gimple_min_invariant - after munging bitfields. - * tree-ssa-dom.c (record_equivalences_from_stmt): Similarly. - -2003-12-17 Jan Hubicka - - Based on patch by Dale Johannesen - * expr.c (MOVE_RATIO, CLEAR_RATIO): Move to ... - * expr.h (MOVE_RATIO, CLEAR_RATIO): ... here - -2003-12-17 Jan Hubicka - - * Makefile.in (sibcall.o): Kill. - (tree-tailcall.o): Add except.h dependency - * sibcall.c: Kill. - (purge_reg_equiv_notes, purge_mem_unchanging_flag): Move to ... - * calls.c (purge_reg_equiv_notes, purge_mem_unchanging_flag) ... here. - (expand_call): Do not produce placeholders; do not deal with tail - recursion; set tail_call_emit. - (fixup_tail_calls): New. - * expr.h (fixup_tail_calls): Declare. - * toplev.c (rest_of_handle_sibling_calls): Kill. - (rest_of_compialtion): Do not use rest_of_handle_sibling_calls; - call fixup_tail_calls. - * tree-dump.c (dump_files): Add tail2 - * tree-flow.h (tree_optimize_tail_calls): Update prototype. - * tree-optimize.c (optimize_function_tree): Do tail optimization twice. - * tree-tailcall.c: Inlucde except.h - (suitable_for_tail_call_opt_p): New. - (optimize_tail_call): Add opt_tailcalls argument; optimize tailcalls. - (tree_optimize_tail_calls): Add opt_tailcalls/pass arguments. - * tree.h (CALL_EXPR_TAILCALL): New. - (tree_dump_index): Add tail2 - * function.h (struct function): Add tail_call_emit field. - -2003-12-17 Jan Hubicka - - * tree-inline.c (estimate_num_insns_1): Check that all nodes are - known; add missing nodes; fix MODIFY_EXPR - -2003-12-16 Jason Merrill - - PR middle-end/12920 - * stor-layout.c (layout_type): Just return if type is - error_mark_node. - * c-decl.c (grokdeclarator): Immediately layout an - ARRAY_TYPE used in a pointer-to-array declarator. - -2003-12-16 Diego Novillo - - * tree-dfa.c (may_alias_p): If VAR and PTR are pointers with the - same alias set, return false. - (get_memory_tag_for): Group based on alias set classes, not on - conflicting alias sets. - * tree-must-alias.c (promote_var): Don't bring aliases over when - all the may-aliases of a non-promotable variable are promoted. - -2003-12-16 Andrew MacLeod - - * tree-flow-inline.h (free_vuse, free_vdefs): Moved to - tree-ssa-operands.c - (get_def_ops, get_use_ops, get_vdef_ops, get_vuse_ops): Use the new - more direct structure pointer. - (get_use_op_ptr, get_def_op_ptr): Cast is no longer necessary. - * tree-flow.h (struct stmt_ann_d): Replace operands and voperands - pointers with pointers directly to the operand types. - * tree-ssa-dom.c (cprop_into_stmt): Use new stmt based interface to - free virtual operands. Check virtual bases of both VUSE and VDEF. - * tree-ssa-operands.c (struct voperands_d): Declare here, used only - for previous_vops during stmt operand construction. - (struct vecmanage_d, vecmanage_add_segmen, vecmanage_add_special, - vecmanage_init, vecmanage_tree_ptr_init, vecmanage_fini, check_free, - vecmanage_new_vector, vecmanage_new_tree_ptr_vector, - vecmanage_free_vector): Remove. - (allocate_ssa_op_vec, free_ssa_op_vec, allocate_ssa_virtual_op_vec, - allocate_operands_t, allocate_voperands_t): Remove. - (finalize_new_ssa_operands, inalize_new_ssa_virtual_operand): Remove. - (struct freelist_d): New. List of free operand structures. - (check_optype_freelist): New. Choose memory from freelist, if available. - (add_optype_freelist): New. Add structure to freelist, if appropriate. - (allocate_def_optype): New. Allocate a def operand list from GC. - (allocate_use_optype): New. Allocate a useoperand list from GC. - (allocate_vdef_optype): New. Allocate a vdef operand list from GC. - (allocate_vuse_optype): New. Allocate a vuse operand list from GC. - (free_uses, free_defs, free_vuses, free_vdefs): Use GC and the freelist. - (remove_vuses, remove_vdefs): New. External interface to remove virtual - operands. - (init_ssa_operands, fini_ssa_operands): Ensure the free list is empty. - (finalize_ssa_defs, finalize_ssa_use, finalize_ssa_vdefs, - finalize_ssa_vuses): Use new direct pointers from the stmt annotation. - (append_vdef, append_vuse): No need to hack prev_vops pointer now. - (get_stmt_operands): use new freeing interface, keep previous vops in - their own local structure for now, passing its address around. - * tree-ssa-operands.h (struct def_optype_d, struct use_optype_d, - struct vdef_optype_d, struct vuse_optype_d): Implement as a single - dynamically allocated structure. - (struct operands_d, struct operands_d): Remove. - * tree-ssa-pre.c (subst_phis): Remove virtual operands using new funcs. - -2003-12-16 Jan Hubicka - - * tree-cfg.c (verify_addr_expr): Rename to .... - (verify_expr): ... this one; check that no SSA names are on - freelist. - (verify_stmt, verify_stmts): Update calls of verify_addr_expr. - - Revert until initializers are made language independent: - * cgraphunit.c (record_call_1): Do not call analyze_expr hook - * langhooks-def.h (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Kill. - (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update. - * longhooks.h (lang_hooks_for_callgraph): Kill analyze_expr. - -2003-12-16 Zdenek Dvorak - - * tree-pretty-print.c (dump_bb_header): Show block number when - there is no label. - (pp_cfg_jump): Show labels in addition to block numbers. - (dump_generic_bb_buff): Always call dump_bb_header. - -2003-12-16 Jan Hubicka - - * cgraphunit.c (cgraph_remove_unreachable_nodes): Fix typo; - improve comments; cleanup linked list mantenance. - -2003-12-15 Diego Novillo - - * tree-sra.c (can_be_scalarized_p): Reject volatile variables. - - * sibcall.c (skip_copy_to_return_value): Initialize 'hardret' and - 'softret'. - -2003-12-16 Jan Hubicka - - * cgraph.c (cgraph_remove_node): Ignore DECL_EXTERNAL clones. - * cgraphunit.c (verify_cgraph_node): Do not insist on unemmited extern - inline functions to be valid. - (cgraph_finalize_compilation_unit): Fix ordering. - (cgraph_mark_functions_to_output): Do not insist on DECL_EXTERNAL - nodes to be reclaimed. - (cgraph_remove_unreachable_nodes): New function. - (cgraph_decide_inlining): use it. - -2003-12-15 Andrew MacLeod - - * Makefile.in (TREE_FLOW_H): Add dependence on tree-ssa-operands.h - (OBJS-common): Add tree-ssa-operands.o - (tree-ssa-operands.o): Add dependencies. - (GTFILES): Add tree-ssa-operands.[ch]. - * tree-dfa.c (get_stmt_operands, get_expr_operands, add_stmt_operand, - note_addressable, add_def, add_use, add_vde, add_vuse, - add_call_clobber_ops, add_call_read_ops): Moved to tree-ssa-operands.c. - (compute_immediate_uses_for_stmt): Use new optypes interface. - (cleanup_operand_arrays): Delete. - (collect_dfa_stats_r): Use new optypes interface. - (get_call_flags): Moved to tree-ssa-operands.c. - (vdefs_disappeared_p, mark_new_vars_to_rename): Use optypes interface. - * tree-flow-inline.h (def_ops, use_ops, vdef_ops, vuse_ops): Use new - optypes. - (free_vuses): New. Clear and release vuses. - (free_vdefs): New. Clear and release vdefs. - (get_use_ops_ptr): New. Get address of a use op. - (get_def_ops_ptr): New. Get address of a use op. - (get_vdef_result_ptr): New. Get address of a use op. - (get_vdef_op_ptr): New. Get address of a use op. - (get_vuse_op_ptr): New. Get address of a use op. - (start_ssa_stmt_operands): New. Entry point to start processing stmt - operands. - * tree-flow.h (struct operands_d, struct voperands_d): Move to - tree-ssa-operands.h - (struct stmt_ann_d): Add GTY markers to operands. - * tree-pretty-print.c (dump_vops): Use optypes interface. - * tree-sra.c (create_scalar_copies): Use optypes interface. - (scalarize_structures, scalarize_modify_exp): Use optypes interface. - * tree-ssa-ccp.c (visit_stmt, ccp_fold, initialize, replace_uses_in, - likely_value, set_rhs): Use optypes interface. - * tree-ssa-dce.c (find_useful_stmts, stmt_useful_p, process_worklist): - Use optypes interface. - * tree-ssa-dom.c (thread_across_edge, thread_jumps_walk_stmts): Use - optypes interface. - (cprop_into_stmt): Rewrite using new interface. - (eliminate_redundant_computations, record_equivalences_from_stmt, - optimize_stmt, avail_expr_hash, avail_expr_eq): Use optypes interface. - * tree-ssa-live.c (create_ssa_var_map, calculate_live_on_entry, - build_tree_conflict_graph,register_ssa_partitions_for_vars): Use - optypes interface. - * tree-ssa-pre.c (names_match_p, maybe_find_rhs_use_for_var, - expr_phi_insertion, same_e_version_real_occ_real_occ, opnum_of_phi, - generate_expr_as_of_bb, generate_vops_as_of_bb, subst_phis, - load_modified_real_occ_real_occ, same_e_version_phi_result, can_insert, - get_default_def, reaching_def, process_left_occs_and_kills, - collect_expressions): Use optypes interface. - * tree-ssa.c (mark_def_sites, check_replaceable, find_replaceable_in_bb, - dump_replaceable_exprs, rewrite_trees, verify_ssa, rewrite_stmt): Use - optypes interface. - (init_tree_ssa): Initialize new operand data structures. - (delete_tree_ssa): Free new operand structures. - * tree.h (VDEF_RESULT, VDEF_OP, NUM_VDEFS): Move to tree-ssa-operands.h. - - * tree-ssa-operands.h: New file. - (struct def_optype_d): New. Structure for stmt defs. - (struct use_optype_d): New. Structure for stmt uses. - (struct vdef_optype_d): New. Structure for stmt vdefs. - (struct vuse_optype_d): New. Structure for stmt vuses. - (USE_OPS, STMT_USE_OPS, NUM_USES, USE_OP_PTR, USE_OP): Macros to - access stmt uses. - (DEF_OPS, STMT_DEF_OPS, NUM_DEFS, DEF_OP_PTR, DEF_OP): Macros to - access stmt defs. - (VDEF_OPS, STMT_VDEF_OPS, NUM_VDEFS, VDEF_RESULT_PTR, VDEF_RESULT, - VDEF_OP_PTR, VDEF_OP): Macros to access stmt vdefs. - (VUSE_OPS, STMT_VUSE_OPS, NUM_VUSES, VUSE_OP_PTR, VUSE_OP): Macros to - access stmt vuses. - (struct operands_d, struct voperands_d): moved from tree-dfa.c. - * tree-ssa-operands.c: New file. - (build_defs, build_uses, build_vdefs, build_vuses): New static varrays. - (struct vecmanage_d): New. Struct to manage non-GC vectors. - (vecmanage_add_segment): New. Add a new segment to a vector manager. - (vecmanage_add_special): New. Add a large vector to the special list. - (vecmanage_init): Initialize a vector manager. - (vecmanage_tree_ptr_init): New. Initialize a vector manager for tree *. - (vecmanage_fini): New. Release vector manager memory. - (check_free): New. Look for free memory in the vector maanger. - (vecmanage_new_vector): New. Allocate a vector. - (vecmanage_new_tree_ptr_vector): New. Allocate a vector of 'tree *'. - (vecmanage_free_vector): New. Free a vector. - (free_ssa_op_vec): New. Free an ssa operand's memory. - (allocate_ssa_op_vec): New. Allocate a vector for use/defs. - (allocate_ssa_virtual_op_vec): New. Allocate a vector for vuse/vdefs. - (allocate_operands_t): New. Allocate an operand structure. - (allocate_voperands_t): New. Allocate a virtual operand structure. - (free_uses): New. Clear and release uses. - (free_defs): New. Clear and release defs. - (init_ssa_operands): New. Initialize ssa operand management. - (fini_ssa_operands): New. Cleanup ssa operand management. - (finalize_new_ssa_operands): New. Commit current operands. - (finalize_new_ssa_virtual_operands): New. Commit current virtual ops. - (finalize_ssa_defs): New. Commit and verify stmt definitions. - (finalize_ssa_uses): New. Commit and verify stmt uses. - (finalize_ssa_vdefs): New. Commit and verify stmt virtual definitions. - (finalize_ssa_vuses): New. Commit and verify stmt virtual uses. - (finalize_ssa_stmt_operands): New. Commit all stmt operands. - (verify_start_operands): New. Verify build mechanism is ready for a new - stmt. - (append_def): Renamed from add_def, and moved from tree-dfa.c. - (append_use): Renamed from add_def, and moved from tree-dfa.c. - (append_vdef): Renamed from add_def, and moved from tree-dfa.c. - (append_vuse): Renamed from add_def, and moved from tree-dfa.c. - (add_vuse): New. Entry point to add a vuse to a stmt. - (get_call_flags): Moved from tree-dfa.c - (get_stmt_operands, get_expr_operands, add_stmt_operand): Moved from - tree-dfa.c, and use new optype interface. - (note_addressabe, add_call_clobber_ops, add_call_read_ops): Moved from - tree-dfa.c - -2003-12-15 Diego Novillo - - * tree-optimize.c (optimize_function_tree): Call BITMAP_XFREE. - -2003-12-15 Diego Novillo - - PR optimization/12747 - - * tree-cfg.c (verify_addr_expr): Simplify predicates. - * tree-must-alias.c (addresses_needed): Declare as file local. - (can_be_promoted): New. - (tree_compute_must_alias): Call it. - Remove promoted variables from call_clobbered_vars. - (find_addressable_vars): Update comment. - Remove argument. Update callers. - (promote_var): Always clear TREE_ADDRESSABLE. - Don't remove promoted variables from call_clobbered_vars. - If the promoted variable is in the may-alias set of a - non-promotable variable, copy its alias set into the alias set of - the non-promotable variable. - (find_variable_in): Update comment. - * tree-sra.c (can_be_scalarized_p): Reject structures with - __complex__ fields in them. - -2003-12-15 Diego Novillo - Jason Merrill - - PR optimization/12747 - - * Makefile.in (tree-simple.o): Add dependency on bitmap.h and - $(GGC_H). - (GTFILES): Add tree-simple.c. - * tree-simple.c: Include ggc.h and bitmap.h. - (is_gimple_non_addressable_1): Remove. Update all callers. - (types_checked): New local variable. - (types_in_memory): New local variable. - (struct_needs_to_live_in_memory): New. - (needs_to_live_in_memory): New. - (is_gimple_reg): Call it. - (is_gimple_non_addressable): Call it. - (is_gimple_call_clobbered): Call it. - * tree-simple.h (needs_to_live_in_memory): Declare. - -2003-12-14 Andreas Jaeger - - * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Handle - GNU F95. - -2003-12-14 Jan Hubicka - - * cgraphunit.c (cgraph_expand_function): Release function body when no - longer needed. - (lookup_recursive_calls): New function. - (cgraph_decide_recursive_inlining): Likewise. - (cgraph_decide_inlining_of_small_functions): Do recursive inlining. - * tree-inline.c: Include function.h - (copy_body): Choose saved body for recursive inlining. - (initialize_inlined_parameters): Likewise. - (expand_call_inline): Do not verify nodes when recursivly inlining, - insert ret_label into decl map. - * params.def (PARAM_MAX_INLINE_INSNS_RECURSIVE, - PARAM_MAX_INLINE_INSNS_RECURSIVE_AUTO, - PARAM_MAX_INLINE_RECURSIVE_DEPTH, - PARAM_MAX_INLINE_RECURSIVE_DEPTH_AUTO): New argument. - * invoke.texi (max-inline-insns-recursive, max-inline-recursive-depth): - Document. - * Makefile.in (tree-inline.o): Include function.h. - -2003-12-14 Jan Hubicka - - * cgraphunit.c (record_call_1): Do not call analyze_expr hook - * langhooks-def.h (LANG_HOOKS_CALLGRAPH_ANALYZE_EXPR): Kill. - (LANG_HOOKS_CALLGRAPH_INITIALIZER): Update. - * longhooks.h (lang_hooks_for_callgraph): Kill analyze_expr. - -2003-12-13 Jan Hubicka - - * timevar.def (TV_TREE_STMT_VERIFY, TV_CFG_VERIFY, TV_CGRAPH_VERIFY): - New timers. - * tree-cfg.c (verify_stmts): Push/pop timevar. - * cfg.c: Include timevar.h - (verify_flow_info): Push/pop timevar. - * Makefile.in (cfg.o): Add dependnecy on TIMEVARS - - * cgraph.c (cgraph_create_edge): Sanity check for duplicates; - initialize aux. - (cgraph_remove_node): Decrease cgraph_n_nodes; do not clear - DECL_SAVED_TREE when dumping. - (cgraph_dump_node): Break out from ...; print more information. - (cgraph_dump): ... here. - * cgraph.h (cgraph_node): Add aux field. - (dump_cgraph_node, verify_cgraph, verify_cgraph_node): Declare. - (cgraph_mark_inline_edge): Declare - * cgraphunit.c (error_found): New static variable. - (verify_cgraph_node_1): New static function. - (verify_cgraph_node, verify_cgraph): New global function. - (cgraph_expand_function): More sanity checks. - (cgraph_clone_inline_nodes): Destructivly clone DECL_EXTERNAL nodes. - (cgraph_mark_inline_edge): Make global. - (cgraph_decide_inlining): Remove extern inline functions never inlined. - (cgraph_decide_inlining_incrementally): Verify that function body is - still present. - (expand_all_functions): Verify that all nodes are reachable. - (cgraph_optimize): Verify cgraph and memory management. - * tree-inline.c (copy_body_r): All edges must be present. - (expand_call_inline): Sanity check newly created edges and nodes - being inlined. - (optimize_inline_calls): Sanity check that we've inlined everything. - * tree-optimize.c (tree_rest_of_compilation): Clone functions inlined - into cloned node. - -2003-12-13 Jan Hubicka - - * tree-flow.h (tree_ssa_useless_type_conversion_1): Declare. - * tree-flow.c (tree_ssa_useless_type_conversion_1): Break out from - from...; allow complex types whose subtypes match. - (tree_ssa_useless_type_conversion): ... here. - -2003-12-12 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Don't call cleanup_control_expr - here. Instead just note that we need to cleanup the cfg (which - will DTRT). - - * timevar.def (TV_TREE_SSA_THREAD_JUMPS): Kill. - * tree-dump.c (dump_files): Kill .thread dump. - * tree.h (TDI_thread_jumps): Kill. - * tree-flow.h (tree_ssa_dominator_thread_jumps): Kill prototype. - * tree-optimize.c (optimize_function_tree): Kill call to - tree_ssa_dominator_thread_jumps. - * tree-ssa-dom.c (thread_through_phis): Kill. We no longer need - to restrict threading through PHIs. - (tree_ssa_dominator_thread_jumps): Kill. - (tree_ssa_domiantor_optimize_1): Fold back into - tree_ssa_dominator_optimize. - (tree_ssa_dominator_optimize): Mark back edges in the flow graph. - Kill code which conditionalized the walk_tree callbacks based - on thread_through_phis. When threading jumps, reorganize code - so that we can take the affected variables out of SSA form. - Mark new variables created by out-of-ssa code as needing to be - rewritten. - (thread_across_edge): Always allow threading through phis. - (thread_jumps_walk_stmts): Kill. - - * tree-ssa.c (create_temp): When we create a new temporary, make - sure to put it into referenced_vars, give it an ID number and - a suitable mem_tag. - (eliminate_build): If we encounter a PHI argument which is an - SSA_VAR we are not rewriting out of SSA form, then just treat - it like a constant. - (rewrite_vars_out_of_ssa): New function. - * tree-flow.h (rewrite_vars_out_of_ssa): Prototype. - * tree-ssa-live.c (register_ssa_partitions_for_vars): New function. - * tree-ssa-live.h (register_ssa_partitions_for_vars): Prototype. - -2003-12-12 Jan Hubicka - - * tree-inline.c (remap_decl): Avoid invalid sharing. - * cp-tree.h (optimize_function): Kill. - * optimize.c (optimize_function): Kill. - * semantics.c (expand_body): Do not call optimize_function. - -2003-12-12 Jan Hubicka - - * cgraphunit.c (cgraph_optimize): Do not decide inlining when not - inlining - -2003-12-11 Jan Hubicka - - * tree-inline.c (initialize_inlined_parameters): Disable - constant propagation for non-gimple-min-invariant when - preserving gimple form. - -2003-12-11 Jeff Law - - * tree-ssa-ccp.c (widen_bitfield): Clear out unwanted high bits - even if the field's type is unsigned. - * tree-ssa-dom.c (record_equivalences_from_stmt): When creating - equivalences from stores, be more careful about non-constant - stores to bitfields. - -2003-12-11 Diego Novillo - - * opts.c (decode_options): Do not enable the tree loop optimizer by - default. - * tree-ssa-loop.c (tree_ssa_loop_opt): Remove ENABLE_CHECKING - guards. - -2003-12-10 Richard Henderson - - * builtins.c (expand_builtin_profile_func): New. - (expand_builtin): Use it. - * builtins.def (BUILT_IN_PROFILE_FUNC_ENTER): New. - (BUILT_IN_PROFILE_FUNC_EXIT): New. - * function.c (expand_function_start, expand_function_end): Don't - do function instrumentation here. - * gimplify.c (gimplify_function_tree): Do it here. - - * c-opts.c (c_common_post_options): Don't ever use rtl inlining. - -2003-12-10 Diego Novillo - - * ifcvt.c (dead_or_predicable): Initialize local variable - 'earliest'. - * tree-cfg.c (verify_stmt): Fix typo. - * tree-ssa-dom.c (propagate_value): New local function. - (cprop_into_stmt): Call it. - (cprop_into_phis): Call it. - (eliminate_redundant_computations): Call it. - -2003-12-10 Dale Johannesen - - * tree-dfa.c (compute_alias_sets): Don't try to make - GLOBAL_VAR alias itself. - -2003-12-08 Steven Bosscher - - * tree-must-alias.c (tree_compute_must_alias): Use - num_call_clobbered_vars and call_clobbered_var() instead of - poking in the call_clobbered_vars varray directly. - -2003-12-11 Jan Hubicka - - * cgraph.c (cgraph_function_possibly_inlined_p): Fix syntax error on - gcc-2.95. - -2003-12-10 Diego Novillo - - Revert - - 2003-12-07 Richard Henderson - - * c-common.c (c_address_looks_like_offsetof): New. - * c-common.h (c_address_looks_like_offsetof): Declare. - * c-typeck.c (build_unary_op) : Use it. Don't lower - address references not destined for offsetof. - (c_expand_return): Only look inside ARRAY_REF and COMPONENT_REF - when looking for returning address of local variable. - * expr.c (expand_expr_1): Don't dereference size - of unbounded arrays. - * gimplify.c (gimplify_addr_expr): Only fold - address of variable size array elements. - * tree-simple.c (is_gimple_min_invariant): Also check - is_gimple_variable before disallowing offset address for type. - * tree-ssa-ccp.c (maybe_fold_offset_to_aggregate_ref): New. - (maybe_fold_offset_to_component_ref): Use it. - (maybe_fold_stmt_indirect, maybe_fold_stmt_plus): Likewise. - (maybe_fold_offset_to_array_ref): Likewise. - Don't fail for division remainder non-zero. - * varasm.c (initializer_constant_valid_p) : Use - handled_component_p and look inside references. - : Always look past widening casts. - -2003-12-09 Jan Hubicka - - * cgraph.c (cgraph_inline_hash): New global variable. - (cgraph_create_node): Break out of .... - (cgraph_node): ... this one. - (cgraph_redirect_edge_callee): New function. - (cgraph_remove_node): Aggressively elliminate dead nodes; - remove node out of clone list. - (dump_cgraph): Dump inlined_to field; dump uid numbers. - (cgraph_clone_edge): Return edge created. - (cgraph_clone_node): New. - (cgraph_function_possibly_inlined_p): Re-implement using hashtable. - * cgraph.h: Include hashtab.h - (struct cgraph_global_info): Kill inline_once, will be output and - cloned_times fields. Add inlined_to field. - (cgraph_node): Add next_clone. - (cgraph_inline_hash): Declare. - (cgraph_clone_edge): Update prototype. - (cgraph_clone_node, cgraph_redirect_callee): Declare. - * cgraphunit.c (cgraph_optimize_function): Kill. - (cgraph_assemble_function): Kill next_needed to avoid GGC corruption. - (cgraph_analyze_function): Do not intialize cloned_times and - will_be_output. - (cgraph_finalize_compilation_unit): Clear next_needed. - (cgraph_optimize_function): Kill. - (cgraph_expand_function): Do not use cgraph_optimize_function. - (cgraph_estimate_growth, cgraph_mark_inline, - cgraph_check_inline_limits, cgraph_recursive_inlining_p, - cgraph_preserve_function_body_p): Update for explicit clones. - (INLINED_TIMES, SET_INLINED_TIMES, cgraph_inlined_into, - cgraph_inlined_callees, struct cgraph_inline_context, - cgraph_create_inline_context, cgraph_free_inline_context, - cgraph_inline_context_set_caller, cgraph_inline_context_clear_caller, - cgraph_inline_context_set_callee, cgraph_inline_context_clear_callee, - update_callee_keys): Kill. - (cgraph_clone_inlined_nodes, cgraph_mark_inline_edge): New. - (cgraph_decide_inlining_of_small_functions, (cgraph_decide_inlining, - cgraph_decide_inlining_incrementally): Simplify. - * tree-inline.c (typedef struct_inline_data): New field saving_p. - (copy_body_r): Update all clones. - (expand_call_inline): Remove inlined cgraph node. - (save_body): Inicialize id.node and id.saving_p. - * tree-optimize.c (tree_rest_of_compilation): Maintain clone up-to-date - in no-unit-at-a-time mode. - -2003-12-08 Steven Bosscher - - * tree-optimize.c (optimize_function_tree): Move verify_ssa calls - into conditionals. - -2003-12-08 Daniel Berlin - - * tree-alias-ander.c (andersen_same_points_to_set): Fix memory leak. - -2003-12-08 Jeff Law - - * tree-ssa-live.c (register_ssa_partition): Kill legacy code which - recursively called register_ssa_partition on PHI arguments when - SSA_VAR was defined by a PHI_NODE. - -2003-12-08 Jan Hubicka - - * tree-dump.c (dump_files): Fix ordering of tail call pass. - * tree.h (tree_dump_index): Likewise. - -2003-12-08 Zdenek Dvorak - - * Makefile.in (tree-cfg.o): Add gt-tree-cfg.h dependency. - (GTFILES): Add tree-cfg.c. - * tree-cfg.c: Include gt-tree-cfg.h. - (factored_computed_goto_label, factored_computed_goto): - Mark gc roots. - -2003-12-08 Steven Bosscher - Jan Hubicka - - * gengtype-lex.l (IWOrD): Add HOST_WIDEST_INT - * Makefile.in (function.o, reg-stack.o): Add missing dependency on - basic-block.h. - (GTFILES): Add basic-block.h and hwint.h. - * basic-block.h (struct edge_def): Add GTY markers, make garbage - collectable. Make `insns' field GC safe depending on the setting - of cfg_hooks. - (struct basic_block_def): Add GTY markers, make garbage collectable. - (tree_bb_root, tree_phi_root): Kill extern decls. - (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Change from macro to variable - (entry_exit_blocks): Kill. - * cfg.c: Include ggc.h - (bb_pool, edge_pool, entry_exit_blocks): Kill. - (ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR): Define. - (init_flow): Do not create ppols; allocate entry/exit block. - (free_edge, alloc_block, expunge_block, unchecked_make_edge): Use GGC. - (compact_blocks): Don't update tree_bb_root and tree_phi_root. - * cfgrtl.c (rtl_merge_blocks): Clear head pointer. - * regs.h: Protect against multiple inclusion. - * tree-cfg.c (obstack_tree_ann_obstack, first_block_tree_and_obj, - tree_bb_root): Kill. - (build_tree_cfg, create_bb, remove_bb, delete_tree_cfg): Don't - touch tree_bb_root and tree_phi_root. - (create_block_annotations): Do not initialize obstack. - (free_block_annotations): Do not free obstack. - (create_block_annotation): Use GGC. - * tree-dfa.c (tree_phi_root): Kill. - * tree-flow.h (bb_ann, bb_ann_d): Declare. Add `phi_nodes' field. - * tree-phinodes.c (create_phi_node, add_phi_arg, remove_phi_node, - remove_all_phi_nodes_for): Use `phi_nodes' field in the bb - annotation instead of tree_phi_root. - * tree-flow-inline.h (phi_nodes, set_phi_nodes): Likewise. - (add_dom_child, clear_dom_children): Use GGC. - * tree-ssa-pre.c (code_motion): Use `phi_nodes' field in the bb - annotation instead of tree_phi_root. - * varray.h (union varray_data): Make basic_block_def and edge_def - varrays garbage collectable. - -2003-12-07 Richard Henderson - - * c-common.c (c_address_looks_like_offsetof): New. - * c-common.h (c_address_looks_like_offsetof): Declare. - * c-typeck.c (build_unary_op) : Use it. Don't lower - address references not destined for offsetof. - (c_expand_return): Only look inside ARRAY_REF and COMPONENT_REF - when looking for returning address of local variable. - * expr.c (expand_expr_1): Don't dereference size of unbounded arrays. - * gimplify.c (gimplify_addr_expr): Only fold address of variable size - array elements. - * tree-simple.c (is_gimple_min_invariant): Also check - is_gimple_variable before disallowing offset address for type. - * tree-ssa-ccp.c (maybe_fold_offset_to_aggregate_ref): New. - (maybe_fold_offset_to_component_ref): Use it. - (maybe_fold_stmt_indirect, maybe_fold_stmt_plus): Likewise. - (maybe_fold_offset_to_array_ref): Likewise. Don't fail for division - remainder non-zero. - * varasm.c (initializer_constant_valid_p) : Use - handled_component_p and look inside references. - : Always look past widening casts. - -2003-12-07 Zdenek Dvorak - - * tree-cfg.c (compute_dominance_frontiers): Don't assume that - the first block has index 0. - -2003-12-07 Jan Hubicka - - * cgraph.c (create_edge): Rename to ... - (cgraph_create_edge): ... this one; accept call_expr as operand. - (cgraph_edge): New function - (cgraph_remove_edge): Use edge as argument - (cgraph_record_call, cgraph_remove_call): Kill. - (clone_cgraphedge): New function. - * cgraph.h (cgraph_edge): Add call_expr argument; add chain_next. - (cgraph_record_call, cgraph_remove_call): Kill prototype. - (cgraph_remove_call, cgraph_inline_p): Update prototype. - (cgraph_clone_edge): Declare. - * cgraphunit.c (cgraph_finalize_function): Update use of - cgraph_remove_edge - (record_call_1): Use cgraph_create_edge; record builtins too. - (cgraph_create_edges): Accept node instead of decl. - (cgraph_analyze_function): Update use cgraph_create_edges. - (cgraph_inline_p): Accept edge. - * tree-inline.c (inline_data): Replace decl and current_decl - by node and current_node. - (copy_body_r): Clone edges. - (expand_call_inline): Do not create inlined edges. - (optimize_inline_call): Set id->current_node, id->node. - * tree-optimize.c (tree_rest_of_compilation): Update cgraph edges after - compiling. - -2003-12-07 Diego Novillo - - * tree-ssa-loop.c (dump_file, dump_flags): Only declare with - checking enabled. - (tree_ssa_loop_opt): Mark arguments with ATTRIBUTE_UNUSED. - -2003-12-07 Richard Henderson - - * function.h (struct function): Add last_label_uid. - * tree-cfg.c (set_bb_for_stmt): Use it. - (delete_tree_cfg): Clear label_to_block_map. - - * gimple-low.c (lower_stmt_body): Export. - (lower_stmt): Allow data to be null. - * gimplify.c (declare_tmp_vars): Make static. - (push_gimplify_context): Export. - (pop_gimplify_context): Export. Put the temps somewhere. - (gimplify_body): Don't declare_tmp_vars here. - * tree-flow.h, tree-simple.h: Update for new decls. - - * tree-mudflap.c (mf_build_string): New. - (mudflap_c_function_decls): Push and pop gimplify context, don't - gimplify here. Dump pass 1. - (mudflap_c_function_ops): Similarly. - (mf_decl_cache_locals): Gimplify eveything as we go along. - (mf_build_check_statement_for): Likewise. - (mf_mostly_copy_tree_r): Remove. - (mf_varname_tree): Use mf_build_string. - (mf_file_function_line_tree): Rewrite. - (mf_offset_expr_of_array_ref): Remove. - (mx_xfn_indirect_ref): Remove. - (mf_xform_derefs_1): New. - (mf_xform_derefs): Rewrite to expect gimple. - (mx_register_decls): Use build_function_call_expr. - (mudflap_enqueue_constant): Use mf_build_string. - * tree-optimize.c (tree_rest_of_compilation): Reorder mudflap bits. - * tree-dump.c (dump_files): Split mudflap to parts 1 and 2. - * tree.h (enum tree_dump_index): Likewise. - -2003-12-06 Zdenek Dvorak - - * tree-ssa-loop.c: New. - * Makefile.in (tree-ssa-loop.o): New. - * common.opt (ftree-loop-optimize): Add. - * flags.h (flag_tree_loop): Declare. - * opts.c (decode_options): Enable flag_tree_loop at -O1. - (common_handle_option): Handle OPT_ftree_loop_optimize. - * timevar.def (TV_TREE_LOOP): New. - * toplev.c (flag_tree_loop): New. - (f_options): Add -ftree-loop-optimize. - * tree-cfg.c (build_tree_cfg): Remove disabled loop optimizer - initialization. - (tree_make_forwarder_block): Update phi nodes. - (tree_loop_optimizer_init): Don't call force_single_succ_latches. - (tree_try_redirect_by_replacing_jump): Comment fix. - * tree-dump.c (dump_files): Add .loop dump. - * tree-flow.h (tree_ssa_loop_opt, set_phi_nodes): Declare. - * tree-optimize.c (optimize_function_tree): Call tree_ssa_loop_opt. - * tree.h (enum tree_dump_index): Add TDI_loop. - * tree-flow-inline.h (set_phi_nodes): New. - * doc/invoke.texi (-fdump-tree-loop, -ftree-loop-optimize): Document. - -2003-12-05 Jeff Law - - * tree-dfa.c (mark_new_vars_to_rename): Change VARS_TO_RENAME to be - a "bitmap" instead of an "sbitmap". Callers updated. - * tree-must-alias.c (promote_var): Likewise. - (tree_compute_must_alias): Likewise. - * tree-phinodes.c (remove_all_phi_nodes_for): Likewise. - * tree-ssa-dom.c (tree_ssa_dominator_thread_jumps): Likewise. - (tree_ssa_dominator_optimize): Likewise. - (tree_ssa_dominator_optimize_1): Likewise. - * tree-ssa-pre.c (pre_expression): Likewise. - (tree_perform_ssapre): Likewise. - * tree-ssa.c (rewrite_into_ssa): Likewise. - (insert_phi_nodes): If VARS_TO_RENAME is zero, then examine - each node to determine if we need to insert a PHI. - (prepare_operand_for_rename): If VARS_TO_RENAME is zero, then - assume the operand needs renaming. - * tree-ssa-ccp.c (substitute_and_fold): Change VARS_TO_RENAME to - be a "bitmap" instead of an "sbitmap". Callers updated. - (tree_ssa_ccp): Likewise. Also make sure timevar_pop encloses - entire function. - (scalarize_modify_expr): Likewise. - * tree-sra.c (create_scalar_copies): Change VARS_TO_RENAME to - be a "bitmap" instead of an "sbitmap". Callers updated. - (tree_sra): Likewise. - * tree-optimize.c (optimize_function_tree): Make VARS_TO_RENAME - be a "bitmap" instead of an "sbitmap". - * tree-flow.h: Update various prototypes. - -2003-12-05 Zdenek Dvorak - - * tree-cfg.c (remove_useless_stmts_goto, remove_useless_stmts): Move - handling of factored_computed_goto ... - (disband_implicit_edges): ... here. - -2003-12-05 Jan Hubicka - - * tree-eh.c (tree_could_trap_p): Fix warning. - * expr.c (expand_expr): Fix warning on uninitialized last. - -2003-12-04 Jeff Law - - * tree-ssa.c (rewrite_trees): Do not unconditionally overwrite - variables set by statements. Let replace_variable do any - required rewriting. - -2003-12-04 Richard Henderson - - * c-parse.in (primary): Use annotate_with_locus instead of - STMT_LINENO for STMT_EXPR. - * c-simplify.c (gimplify_stmt_expr): Likewise. - -2003-12-04 Jan Hubicka - - * tree-dump.c (dump_files): Reorder tailcall and mustalias - * tree.h (tree_dump_index): Likewise. - * tree-optimize.c (optimize_function_tree): Do tail call after mustalias. - -2003-12-04 Diego Novillo - - * tree-dfa.c (opf_none, opf_is_def, opf_no_vops): Change to #define. - -2003-12-04 Canqun Yang - - * stor-layout.c (update_alignment_for_field): Export. - * tree.h (update_alignment_for_field): Declare. - -2003-12-03 Andrew Haley - - * tree-eh.c (tree_could_trap_p): Add division instructions. - * expr.c (expand_expr): Check the EH region of an expression and - mark all the insns that result from its expansion with the - appropriate REG_EH_REGION. - -2003-12-03 Jan Hubicka - - * tree-cfg.c (verify_addr_expr, verify_stmt, tree_node_shared_p, - verify_stmts): New functions. - (verify_flow_info): Remove PHI checking code. - * tree-flow.h (verify_stmt, verify_stmts): Declare. - * tree-inline.h (walk_tree, walk_tree_without_duplicates): Move - prototypes ... - * tree.h (walk_tree, walk_tree_without_duplicates): ... here. - -2003-12-03 Jan Hubicka - Diego Novillo - - * tree-ssa.c (verify_def, verify_use, verify_phi_args): New static - functions. - (verify_ssa): New global function. - * tree-flow.h (verify_ssa): Declare. - * tree-optimize.c (optimize_function_tree): Call it. - -2003-12-03 Diego Novillo - - * timevar.def (TV_TREE_SSA_VERIFY): New timer. - * tree-sra.c (create_scalar_copies): Always mark the previous - variables on the LHS for renaming. - Do not emit unnecessary assignments from VA_ARG_EXPRs. - (scalarize_modify_expr): Similarly, when scalarizing the LHS of a - COMPONENT_REF assignment. - * tree-must-alias.c (tree_compute_must_alias): Do not promote - variables with hidden uses. - * tree-ssa-ccp.c (set_rhs): When replacing the whole statement, reset - SSA_NAME_DEF_STMT for all the SSA_NAMEs in vdef and def - operands. - -2003-12-03 Zdenek Dvorak - Diego Novillo - - * tree-dfa.c (opf_no_vops): New. - (add_stmt_operand): Don't create virtual operands when opf_no_vops - is passed in flags. - (get_expr_operands): Set opf_no_vops flag before diving into the - operand of an ADDR_EXPR node. - -2003-12-03 Richard Henderson - - * tree-simple.c (is_gimple_min_invariant): Disallow offset of - address of a scalar. - - * c-parse.in (primary): Set STMT_LINENO on STMT_EXPR. - * c-simplify.c (gimplify_stmt_expr): Be prepared for last_stmt - to be null. - -2003-12-03 Daniel Berlin - - Fix PR 13177 - * tree-ssa-pre.c (code_motion): Do phi nodes last, and rearrange - how we decide what temporary to choose so that we get it right. - -2003-12-03 Zdenek Dvorak - - * tree-dfa.c (get_expr_operands): Don't record VUSEs for invariant - adresses. - -2003-12-03 Brian Booth - - * tree-pretty-print.c (dump_phi_nodes): Removed superfluous ampersand. - -2003-12-03 Jeff Law - - * ggc-page.c: Resync with mainline sources. Remove tree-ssa - specific hack which disabled special GC pagesizes for 2 operand - tree expressions. - - * tree-ssa.c (mark_def_sites): Call prepare_operand_for_rename - on the VDEF_RESULT as well, providing a dummy uid argument. - - * tree-phinodes.c: Include rtl.h for ceil_log2. - (ideal_phi_node_len): New function. - (resize_phi_node): Make static. - (make_phi_node): Use ideal_phi_node_len. - (add_phi_arg): Likewise. - * tree.h (resize_phi_node): Remove prototype. - * Makefile.in (tree-phinodes.o): Depend on $(RTL_H). - -2003-12-03 Zdenek Dvorak - - * tree-cfg.c: (make_edges): Eliminate fallthru to exit. - (make_ctrl_stmt_edges): Nonlocal goto handling moved to - make_goto_expr_edges. - (make_goto_expr_edges): Remove simple gotos. - (cfg_remove_useless_stmts_bb): Goto removal cancelled. - (cleanup_cond_expr_graph, cleanup_switch_expr_graph): - Replaced by ... - (cleanup_control_expr_graph): New. - (cleanup_control_flow): Use it. - (disband_implicit_edges): New. - (tree_find_edge_insert_loc): Never insert before a control statement. - (tree_split_edge, thread_jumps, tree_try_redirect_by_replacing_jump, - tree_redirect_edge_and_branch): Work over no-gotos form. - (tree_verify_flow_info): Check no-gotos form invariants. - * tree-pretty-print.c (pp_cfg_jump, dump_implicit_edges): New. - (dump_generic_bb_buff): Call dump_implicit_edges. - * tree-flow.h (cleanup_cond_expr_graph, cleanup_switch_expr_graph): - Declaration removed. - (cleanup_control_expr_graph, delete_tree_ssa, disband_implicit_edges): - Declare. - * tree-optimize.c (tree_ssa_finish): New. - (optimize_function_tree): Call it. - * tree-ssa-dom.c (thread_jumps_walk_stmts, optimize_stmt): Use - cleanup_control_expr_graph. - * tree-ssa.c (delete_tree_ssa): Export, work even if there are no - referenced_vars. - (rewrite_out_of_ssa): Don't call it. - -2003-12-03 Jan Hubicka - - * tree-ssa.dom.c (tree_ssa_domionator_thread_jumps): Mark back edges. - (thread_across_edge): Do not thread across loop headers. - - * Makefile.in (tree-optimize.o): Depend on cgraph.h - * cgraph.h (cgraph_preserve_function_body_p): Declare. - * cgraphunit.c (cgraph_preserve_function_body_p): New function. - * tree-optimize.c: Include cgraph.h - (clear_decl_rtl): Kill. - (tree_rest_of_compilation): Use cgraph_preserve_function_body_p; - do not clear DECL_RTL; do final ggc in the pushed context for nested - functions; - -2003-12-02 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Accept and pass down dominator - walker structure instead of individual varrays. Callers updated. - (eliminate_redundant_computations): Likewise. - (simplify_rhs_and_lookup_avail_expr): Likewise. Cache and update - a dummy COND_EXPR when querying the hash tables when transforming - DIV/MOD into RSHIFT/BIT_AND or ABS_EXPR into NEG_EXPR. - (dom_opt_walk_stmts): Don't reload the block data pointer each - iteration of the loop. Load it once outside the loop. - - * tree-dfa.c (cleanup_operand_arrays): Avoid creating a new - varray for the vuse operands. - - * tree-ssa-dom.c (extract_range_from_cond): Use int_const_binop to - avoid creating useless tree nodes. - - * tree-phinodes.c (add_phi_arg): If we receive a new node from - resize_phi_node, then release the old node and update the PHI - chain. - -2003-12-02 Brian Booth - - * tree-pretty-print.c (dump_phi_nodes): Added code to always show phi - nodes of regular gimple scalars. - (dump_generic_bb_buff): Removed condition upon which to show phi nodes. - -2003-12-02 Jan Hubicka - - * tree-optimize.c (optimize_function_tree): Invoke ggc_collect in - between optimization passes. - -2003-12-02 Daniel Berlin - - * tree-sra.c (can_be_scalarized_p): Print details about why something - could not be scalarized to the dump file. - -2003-12-01 Jeff Law - - * Makefile.in (OBJS-common): Add tree-phinodes.o. - (tree-phinodes.o): Add dependencies. - (GTFILES): Add tree-phinodes.c. - * tree-phinodes.c: New file. - * tree-dfa.c (create_phi_node): Moved to tree-phinodes.o. - (add_phi_arg, remove_phi_arg, remove_phi_arg_num): Similarly. - (remove_phi_node, remove_all_phi_nodes_for): Similarly. - * tree-ssa.c (init_tree_ssa): Initialize PHI node management. - (delete_tree_ssa): Finalize PHI node management. - * tree.c (dump_tree_statistics): Dump PHI node stats. - (make_phi_node, resize_phi_node): Moved to tree-phinodes.o. - * tree.h (init_phinodes): Prototype. - (fini_phinodes, release_phi_node): Likewise. - (phinodes_print_statistics): Likewise. - -2003-12-01 Richard Henderson - - * tree-dfa.c (get_expr_operands): Don't handle PLUS_EXPR inside - INDIRECT_REF. - * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Use int_const_binop. - (maybe_fold_offset_to_component_ref): Likewise. - (maybe_fold_stmt_indirect): Likewise. - (maybe_fold_stmt_plus): Expand ARRAY_REF when seen with addend. - * fold-const.c (int_const_binop): Export. - * tree.h (int_const_binop): Declare. - -2003-12-01 Jan Hubicka - - * basic-block.h (tree_phi_root): New variable. - * cfg.c: Include tree-flow.h. - (compact_blocks): Compact tree_phi_root - * tree-cfg.c (build_tree_cfg): Initialize tree_phi_root. - (create_bb, remove_bb, delete_tree_cfg): Update tree_phi_root. - * tree-dfa.c (tree_phi_root): Declare. - (create_phi_node, add_phi_arg, remove_phi_node, - remove_all_phi_nodes_for): Always use accessor functions for - getting, varray for setting phis. - * tree-ssa-pre.c (code_motion): Likewsie. - * tree-flow-inline.h (phi_nodes): Use varray. - * tree-flow.h (bb_ann_d): Remove phi_nodes. - - * tree-ssanames.c (free_ssanames): Do not use deleteable GTY flag. - -2003-11-30 Jan Hubicka - - * tree-optimize.c (tree_rest_of_compilation): Move ggc_collect call to - the end of function; keep clearing of DECL_SAVED_TREE to the cgraph - code. - -2003-11-30 Jan Hubicka - - * cgraphunit.c (cgraph_inline_context): New structure. - (cgrpah_mark_inline, cgraph_check_inline_limits): Use context - instead of passing all arguments by hand. - (cgraph_create_inline_context, cgraph_free_inline_context, - cgraph_inline_context_set_caller, cgraph_inline_context_clear_caller, - cgraph_inline_context_set_callee, cgrpah_inline_context_clear_callee, - cgraph_recursive_inlining_p): New static function. - (cgraph_decide_inline*): Reorganize to use context. - -2003-11-30 Paul Brook - - * Makefile.in (GTFILES): Remove stray '\'. - -2003-11-30 Daniel Berlin - - * c-config-lang.in: Move tree-alias-* from here - * Makefile.in (GTFILES): To here. - * tree-alias-ander.c: Include bitmap.h - (andersen_function_call): Updated to take address of variables - in an ADDR_EXPR in a CALL_EXPR. - * tree-alias-common.h (struct tree_alias_ops): Update arguments to - function_call. - * tree-alias-type.h (struct alias_typevar_common): Add varnum. - * tree-alias-common.c: Include bitmap.h, and function.h. - s/global_var/pta_global_var/g. - (addrargs): New static variable. - (pta_global_var): Ditto. - (find_func_decls): Remove. - (find_func_aliases): Take one argument, update all callers. - Handle (cast) [addr-expr] [var]. - Handle COMPONENT_REF of an INDIRECT_REF. - Pass info about ADDR_EXPR arguments to function_call function. - (deal_with_call_aliasing): New function. - (call_may_return): New function. - (get_alias_var_decl): Call find_func_aliases on the DECL_INITIAL - of a global var. - Use ALIAS_TVAR_VARNUM, instead of VARRAY_ACTIVE_SIZE (alias_vars) - 1. - (get_alias_var): Handle REALPART_EXPR and IMAGPART_EXPR. - Return NULL in default case. - (intra_function_call): Remove wrong code. - (create_fun_alias_var): Use simple_assign, not addr_assign. - Set up ALIAS_TVAR_VARNUM when creating an alias var. - (create_fun_alis_var_ptf): Ditto on ALIAS_TVAR_VARNUM. - (create_alias_var): Ditto. - (create_alias_vars): Build pta_global_var here. - Walk unexpanded_var_list. - Walk the statements in basic blocks. - (delete_alias_vars): Correct ip_partial case. - Free addrargs. - (init_alias_vars): Create addrargs. - -2003-11-29 Jan Hubicka - - * Makefile.in (tree-ssanames.o): Depend on gt-tree-ssanames.h. - (tree-eh.o): Depend on gt-tree-eh.h. - (gr-tree-ssanames.h, gt-tree-eh.h): New targets. - (GTFILES): Add tree-ssanames.c, tree-eh.c - * tree-eh.c: Include ggc.h and gt-tree-eh.h - (lower_eh_constructs): Allecate throw_stmt_table in ggc. - * tree-ssanames.c: Include ggc.h and gt-tree-ssanames.h - - * function.h (struct function): Add saved_tree/saved_args. - * toplev.c (rest_of_compilation): Move code to clear cfun and - DECL_SAVED_INSNS and call to ggc_collect to ... - * tree-optimize.c (tree_rest_of_compilation): ... this function. Use - cfun to save/restore function body. - -2003-11-28 Richard Henderson - - * gimplify.c (create_tmp_var_raw): Split out from create_tmp_var. - (create_tmp_var): Use it. - (create_tmp_alias_var): Remove. - * tree-alias-common.c, tree-dfa.c: Use create_tmp_var_raw instead. - * tree-simple.h: Update decls. - -2003-11-28 Richard Henderson - - * gimple-low.c (lower_function_body): Call lower_bind_expr - to handle the outermost BIND_EXPR. - -2003-11-28 Jan Hubicka - - * tree-ssa.c (remove_annotations_r): Kill. - (delete_tree_ssa): Remove annotations using statement walk; - kill argument fndecl. - (rewrite_out_of_ssa): Update call. - -2003-11-27 Andrew MacLeod - - * tree-ssa-live.c (register_ssa_partition): Abort if a virtual SSA - version is registered. - (create_ssa_var_map): Always process PHI nodes. - * tree-ssa.c (Eliminate_virtual_phis): Rename from - eliminate_extraneous_phis, and look specifically for virtuals. - (rewrite_out_of_ssa): Eliminate virtual PHI nodes before building - partitions. - -2003-11-27 Zdenek Dvorak - - * tree-ssa-ccp.c (get_strlen): Mark the visited variables. - (ccp_fold_builtin): Changed due to changed calling convention of - get_strlen. - -2003-11-26 Diego Novillo - - Revert - - 2003-11-25 Jeff law - - * Makefile.in (OBJS-common): Add tree-phinodes.o. - (tree-phinodes.o): Add dependencies. - * tree-phinodes.c: New file. - * tree-dfa.c (create_phi_node): Moved to tree-phinodes.o. - (add_phi_arg, remove_phi_arg, remove_phi_arg_num): Similarly. - (remove_phi_node, remove_all_phi_nodes_for): Similarly. - * tree-ssa.c (init_tree_ssa): Initialize PHI node management. - (delete_tree_ssa): Finalize PHI node management. - * tree.c (dump_tree_statistics): Dump PHI node stats. - (make_phi_node, resize_phi_node): Moved to tree-phinodes.o. - * tree.h (init_phinodes): Prototype. - (fini_phinodes, release_phi_node): Likewise. - (phinodes_print_statistics): Likewise. - -2003-11-25 Jan Hubicka - - * tree-mustalias.c (promote_var): Do not clear - may_point_to_global_mem. - -2003-11-25 Jeff law - - * domwalk.c (walk_dominator_tree): Indicate to the block local - data initializer if the block local data is new or recycled. - * domwalk.h (struct dom_walk_data): Corresponding changes. - * tree-ssa-dom.c (dom_opt_initialize_block_local_data): Accept and use - "recycled" argument. For recycled structures, only clear varrays - that have been initialized. For new blocks, do not initialize - varrays here. - (dom_opt_finalize_block): When threading across edges, if the - true/false varrays have not been initialized, then the limit is zero. - Only clear block local varrays that have been initialized. - (record_equivalences_from_incoming_edge): If necessary, initialize - block local const_and_copies. - (dom_opt_walk_stmts): If necessary, initialize block local - stmts_to_rescan. - (record_var_is_nonzero): If necessary, initialize block local - nonzero_vars. - (record_cond_is_true): If necessary, initialize block local - true_exprs. - (record_cond_is_false): If necessary, initialize block local - false_exprs. - (lookup_avail_expr): If necessary, initialize block local - avail_exprs. - (record_range): If necessary, initialize block local vrp_varaibles. - * tree-ssa.c - * tree-ssa.c (rewrite_initialize_block_local_data): Accept and use - "recycled" argument. For recycled structures, only clear varrays - that have been initialized. For new blocks, do not initialize - varrays here. - (rewrite_finalize_block): Only clear block local varrays that have - been initialized. - (register_new_def): If necessary, initialize block local defs. - - * tree-ssa-dom.c (get_eq_expr_value): Return a struct rather than - a tree node. - (record_equivalences_from_incoming_edge): Corresponding changes. - (find_equivalent_equality_comparison): Use tree_int_cst_XXX rather - then building and folding nodes. - (simplify_cond_and_lookup_avail_expr): Likewise. - - * Makefile.in (OBJS-common): Add tree-phinodes.o. - (tree-phinodes.o): Add dependencies. - * tree-phinodes.c: New file. - * tree-dfa.c (create_phi_node): Moved to tree-phinodes.o. - (add_phi_arg, remove_phi_arg, remove_phi_arg_num): Similarly. - (remove_phi_node, remove_all_phi_nodes_for): Similarly. - * tree-ssa.c (init_tree_ssa): Initialize PHI node management. - (delete_tree_ssa): Finalize PHI node management. - * tree.c (dump_tree_statistics): Dump PHI node stats. - (make_phi_node, resize_phi_node): Moved to tree-phinodes.o. - * tree.h (init_phinodes): Prototype. - (fini_phinodes, release_phi_node): Likewise. - (phinodes_print_statistics): Likewise. - -2003-11-25 Jan Hubicka - - * tree-inline.c (save_body): New body - * tree-inline.h (save_body): Declare. - * tree-optimize.c (tree_rest_of_compilation): Save function tree - properly. - -2003-11-24 Richard Henderson - - * gimplify.c (canonicalize_addr_expr): New. - (gimplify_conversion): Use it. Canonicalize after nop cast removal. - * tree-simple.c (is_gimple_min_invariant): Remove STRING_CST cast - special case. - -2003-11-24 Jeff Law - - * flow.c (count_or_remove_death_notes_bb): New. Extracted from - count_or_remove_death_notes. - (count_or_remove_death_notes): Use EXECUTE_IF_SET_IN_SBITMAP. - -2003-11-24 Richard Henderson - - PR 13174, PR 13143 - * gimplify.c (cpt_same_type): Allow different ARRAY_TYPEs with - the same base type. - -2003-11-24 Daniel Berlin - - Fix PR/13163 - * tree-ssa-pre.c (append_eref_to_block): Delete. - (insert_euse_in_preorder_dt_order_1): Ditto. - (insert_one_operand): Take an extra argument, because - avdefs may need to be changed. - (clear_all_eref_arrays): Use FOR_ALL_BB. - (insert_occ_in_preorder_dt_order): Stop appending to bb eref arrays. - Use FOR_ALL_BB. - (insert_euse_in_preorder_dt_order): Rewrite to just build a new varray - with only the EPHI's and EUSE's, and then sort it. - (pre_expression): Don't use bb based erefs array when printing - expressions. - (split_critical_edges): Just use FOR_ALL_BB. - (tree_perform_ssapre): Pre-split entry block successor edge if the - successor block has multiple preds. - - * tree-flow.h (struct bb_ann_d): Remove erefs varray. - -2003-11-24 Daniel Berlin - - * tree-cfg.c (cleanup_tree_cfg): FOR_EACH_BB -> FOR_ALL_BB when - clearing dom children, because the entry block has dom_children - too. - * tree-ssa.c (build_dominator_tree): Ditto. - -2003-11-24 Diego Novillo - - * tree-cfg.c (compute_dominance_frontiers_1, - compute_dominance_frontiers): Move from ssa.c. - * tree-flow.h (compute_dominance_frontiers): Declare. - * Makefile.in (tree-ssa.o, tree-ssa-live.o, tree-ssa-pre.o, - tree-optimize.o): Don't depend on ssa.h. - * tree-ssa.c: Don't include ssa.h. - * tree-ssa-live.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-optimize.c: Likewise. - -2003-11-24 Jan Hubicka - - * fold-const.c (fold): Do not return early when - optimizing COMPONENT_REF and constant. - -2003-11-24 Richard Henderson - - * objc/objc-act.c (build_protocol_expr): Use convert instead of - smashing TREE_TYPE. - -2003-11-23 Andrew MacLeod - - * tree-ssa-live.h (SSANORM_PERFORM_TER, SSANORM_COMBINE_TEMPS, - SSANORM_REMOVE_ALL_PHIS): New flag macros. - * tree-ssa.c (replace_variable): Return true if var was rewritten. - (eliminate_extraneous_phis): Dump var map to file if checking triggers - an abort. - (rewrite_trees): Set modified_stmt if stmt was changed. - (remove_ssa_form): Move more of rewrite_out_of_ssa to make it serve - all the same functions based on new flags in tree-ssa-live.h. - (rewrite_out_of_ssa): Call remove_ssa_form. - -2003-11-23 Jan Hubicka - - * tree-cfg.c (tree_verify_flow_info): Check that ENTRY/EXIT block - has no instructions associated with it. - -2003-11-22 Jeff Law - - * tree-ssa-names.c (release_ssa_name): Use SSA_NAME_IN_FREE_LIST - instead of checking SSA_NAME_DEF_STMT being null. - * tree.h (SSA_NAME_DEF_STMT): Use chain field rather than the - def_stmt field. - (SSA_NAME_OCCURS_IN_ABNORMAL_PHI): Use existing flag from tree_common. - (SSA_NAME_IN_FREE_LIST): Define. - (struct tree_ssa_name): Kill DEF_STMT and OCCURS_IN_ABNORMAL_PHI fields. - -2003-11-22 Zdenek Dvorak - - * tree-pretty-print.c (dump_generic_node): Remove superfluous ';'. - -2003-11-22 Diego Novillo - - * Makefile.in (simple-break-elim.o): Remove. - (simple-goto-elim.o): Remove. - (tree-dchain.o): Remove. - * simple-break-elim.c: Remove. - * simple-goto-elim.c: Remove. - * tree-dchain.c: Remove. - * tree-dchain.h: Remove. - -2003-11-22 Daniel Berlin - - * tree-ssa-pre.c (build_dfs_id_array_1): > should be >= - (build_dfn_array): Ditto. - -2003-11-21 Diego Novillo - - * Makefile.in (tree-dfa.o): Add dependency on $(TREE_DUMP_H) - * tree-dfa.c: Include tree-dump.h - (compute_alias_sets): Call dump_function_to_file. - (may_access_global_mem_p): Check if the base address of _REF nodes - may point to global memory. - - * cfgcleanup.c (try_crossjump_to_edge): Initialize newpos1 and - newpos2. - -2003-11-21 Jeff Law - - Revert: - - 2003-11-21 Jan Hubicka - - * tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR. - * tree-must-alias.c (tree_compute_must_alias): promote pointers. - (find_addressable_vars): Deal with complex constant - expressions; do not clear may_point_to_global_mem. - -2003-11-21 Jeff Law - - * Makefile.in (domwalk.o): Depend on $(GGC_H). - * domwalk.c: Include ggc.h. - (walk_dominator_tree): Manage allocation/deallocation and - pushing/popping of the toplevel block data pointer here. - Use callback to initialize the block local data. - (init_walk_dominator_tree): New function. - (fini_walk_dominator_tree): Likewise. - * domwalk.h (struct dom_walk_data): Add callback to initialize - block local data. Add field for sizeof block local data. - Add "private" field free_block_data. - (init_dominator_tree, fini_dominator_tree): Prototype. - * tree-ssa-dom.c (dom_opt_initialize_local_data): New function. - (tree_ssa_dominator_optimize_1): Initialize new fields in the - dominator walker structure. Initialize and finalize the dominator - walker. Slightly reorder code to make it more readable.. - (dom_opt_initialize_block): No longer deal with allocation and - initialization of block local data. - (dom_opt_finalize_block): Similarly for deallocation of block - local data. - * tree-ssa.c (rewrite_block_data): New structure. - (rewrite_initialize_block_local_data): New function. - (rewrite_initialize_block): No longer deal with allocation and - initialization of block local data. - (rewrite_into_ssa): Initialize new fields in the dominator walker - structure. Initialize and finalize the dominator walker. - (rewrite_initialize_block): No longer deal with allocation and - initialization of block local data. - (rewrite_optimize_stmts): Deal with changes in the dominator - walker structure. - (rewrite_finalize_block): No longer with deallocation of block - local data. - - * tree-dfa.c (add_vdef, cleanup_voperand_arrays): Use NUM_VDEFS. - (mark_new_vars_to_rename, collect_dfa_status_r): Likewise. - * tree-pretty-print.c (dump_vops): Likewise. - * tree-sra.c (create_scalar_copies): Likewise. - * tree-ssa-dce.c (stmt_useful_p, process_worklist): Likewise. - * tree-ssa-live.c (create_ssa_var_map): Likewise. - (calculate_live_on_entry): Likewise. - * tree-ssa-pre.c (process_left_occs_and_kills): Likewise. - * tree-ssa.c (mark_def_sites, rewrite_stmt): Likewise. - * tree.h (NUM_VDEFS): Define. - * tree-ssa-ccp.c (visit_stmt): Use NUM_VDEFS. Fix thinko in last - change. - (initialize): Use NUM_VDEFS. - - * tree-dfa.c (add_vdef): Revamp to handle new method for - recording vdefs. - (cleanup_operand_arrays): Similarly. - * tree-sra.c (create_scalar_copies): Similarly. - * tree-ssa-ccp.c (visit_stmt, initialize): Similarly. - * tree-ssa-dce.c (stmt_useful_p, process_worklist): Similarly. - * tree-ssa-dom.c (cprop_into_stmt): Similarly. - (record_equivalences_from_stmt): Similarly. - * tree-ssa-live.c (create_ssa_var_map): Similarly. - (calculate_live_on_entry): Similarly. - * tree-ssa.c (mark_def_sites, rewrite_stmt): Similarly. - * tree-ssa-pre.c (process_left_occr_and_kills): Similarly. - * tree-inline.c (estimate_num_insns_1): Kill VDEF_EXPR. - * tree-pretty-print.c (dump_generic_node) Kill VDEF_EXPR. - (dump_vops): Dump VDEFs here. - * tree.c (build_vdef_expr): Kill. - * tree.h (build_vdef_expr): Kill prototype. - (VDEF_RESULT, VDEF_OP): Revamp to handle new method for recording - vdefs. - * tree.def (VDEF_EXPR): Kill. - - * tree-cfg.c (cfg_remove_useless_stmts): Set both VAR and VAL to - NULL anytime one of them is determined to be invalid. - -2003-11-21 Andrew MacLeod - - * tree-ssa-live.c (compact_var_map): Fix typo. Clear correct field. - (calculate_live_on_entry): Remove unneeded stmt. - * tree-ssa-live.h (version_to_var): New. Return variable associated - with a specific SSA version. - * tree-ssa.c (eliminate_build): Add check that ignored results don't - have important arguments. Allow ignored results. - (coalesce_abnormal_edges): Allow non-relevant results to be ignored. - (eliminate_extraneous_phis): Allow non-relevant results. Check that - no important arguments are being missed. - (coalesce_vars): Non-partition variables are allowed now, just ignored. - (rewrite_trees): New. Split out from rewrite_out_of_ssa. Perform tree - rewriting step. - (remove_ssa_form): New. Allow rewriting of just specified variables. - (rewrite_out_of_ssa): Use rewrite_trees and reorganize slightly to - accommodate typechecking in eliminate_extraneous_phis. - -2003-11-21 Jan Hubicka - - * tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR. - * tree-must-alias.c (tree_compute_must_alias): promote pointers. - (find_addressable_vars): Deal with complex constant expressions; - do not clear may_point_to_global_mem. - -2003-11-21 Jan Hubicka - - * parser.c (cp_parser_postfix_expression): Initialize 's' to - NULL_TREE. - -2003-11-20 Richard Henderson - - * Makefile.in (bitmap.o-warn, caller-save.o-warn, combine.o-warn, - cgraphunit.o-warn, c-semantics.o-warn, emit-rtl.o-warn, expr.o-warn, - fold-const.o-warn, genattrtab.o-warn, regmove.o-warn, tree.o-warn, - varasm.o-warn, f/expr.o-warn, profile.o-warn): Remove. - * bitmap.c (bitmap_first_set_bit): Abort if no non-zero word found. - (bitmap_last_set_bit): Likewise. - * combine.c (get_pos_from_mask): Always set *plen. - -2003-11-20 Richard Henderson - - * tree-dfa.c (get_expr_operands): Remove handling of PLUS_EXPR - inside INDIRECT_REF. - -2003-11-20 Diego Novillo - - * tree-nomudflap.c (nogo): Fix prototype. - -2003-11-20 Richard Henderson - - * except.c (output_function_exception_table): Strip nops. - * gimplify.c (gimplify_addr_expr): Kill missing cast workaround. - (cpt_same_type, check_pointer_types_r): New. - (gimplify_body): Call it. - * tree-inline.c (insert_decl_map): New. - (remap_decl, remap_type, remap_block, copy_body_r, - initialize_inlined_parameters, declare_return_variable, - remap_save_expr, mark_local_for_remap_r): Use it. - -2003-11-20 Frank Ch. Eigler - - libstdc++/11696 - * c-pragma.c (handle_pragma_redefine_extname): Define always. - (init_pragma): Activate #pragma redefine_extname for mudflap. - - * tree-inline.c (copy_tree_r): Propagate mf_marked-ness. - * tree-mudflap.c (mudflap_c_function): Break into new - _decls and _ops functions. - (mudflap_c_function_decls): Avoid unnecessary tree copying. - (mudflap_c_function_ops): Ditto. Gimplify explicitly only for - tree dumping. - * tree-nomudflap.c: Add new stub functions. Simplify error - message emission throughout. - * tree-mudflap.h: Corresponding changes. - * tree-optimize.c (tree_rest_of_compilation): Call the _decl - instrumentation before gimplification and ssa optimizations; - call the _ops instrumentation after ssa optimizations. - -2003-11-20 Diego Novillo - - Initial fix for PR optimization/12747 - - * Makefile.in (OBJS): Add tree-sra.o - * common.opt (ftree-sra): Add. - * flags.h (flag_tree_sra): Declare. - * gimplify.c (gimplify_addr_expr): Set TREE_INVARIANT - when producing and address expression for a DECL node. - * opts.c (decode_options): Enable SRA at -O1. - (common_handle_option): Handle -ftree-sra. - * timevar.def (TV_TREE_SRA): New timer. - * toplev.c (flag_tree_sra): Define. - * tree-cfg.c (stmt_ends_bb_p): Declare extern. - (bsi_replace): Add boolean argument to specify whether to - preserve EH region information. Update all callers. - (bsi_commit_edge_inserts): Also check the edge from ENTRY_BLOCK_PTR - to basic block 0. - Move loop body ... - (bsi_commit_edge_inserts_1): ... here. - * tree-dump.c: Add dump for SRA pass. - * tree.h (enum tree_dump_index): Modify accordingly. - (STRIP_USELESS_TYPE_CONVERSION): Define. Update all callers to - tree_ssa_useless_type_conversion. - * tree-eh.c (add_stmt_to_eh_region): New function. - * tree-flow.h (stmt_ends_bb_p): Declare. - (add_stmt_to_eh_region): Declare. - (tree_sra): Declare. - (enum bsi_iterator_update): Mirror entries in - enum tsi_iterator_update. - * tree-optimize.c (optimize_function_tree): Call SRA pass - after must-alias. - * tree-sra.c: New file. - * doc/invoke.texi: Document -ftree-sra and -fdump-tree-sra. - -2003-11-20 Andrew Macleod - - * tree-ssa.c (check_replaceable): Return false if the LHS is a - DECL_HARD_REGISTER. - -2003-11-20 Diego Novillo - - * tree-ssa-ccp.c (set_rhs): Replace with an empty statement when - the replacement has no side effects. - -2003-11-20 Jeff Law - - * Makefile.in (OBJS-common): Kill tree-ssa-copyprop.o. - (tree-ssa-copyprop.o): Kill dependencies clause. - * common.opt (tree-copyprop): Kill option. - * flags.h (flag_tree_copyprop): Kill. - * opts.c (decode_options): Don't set flag_tree_copyprop. - (common_handle_option): Kill handling of -ftree-copyprop. - * timevar.def (TV_TREE_COPYPROP): Kill. - * toplev.c (flag_tree_copyprop): Kill. - (lang_independent_options): Kill -ftree-copyprop. - * tree-dump.c (dump_files): Kill .copyprop dump. - * tree-flow.h (tree_ssa_copyprop): Kill prototype. - (propagate_copy): Move prototype. - * tree-optimize.c (optimize_function_tree): Kill -ftree-copyprop stuff. - * tree.h (tree_dump_index): Kill TDI_copyprop. - * tree-ssa-copyprop.c: Kill. - * tree-ssa-dom.c (propagate_copy): Moved here from tree-ssa-copyprop.c. - - * tree-ssanames.c (free_ssanames): No longer a varray. - (init_ssanames, make_ssa_name, release_ssa_name): Corresponding changes. - -2003-11-20 Steven Bosscher - - * tree-ssanames.c (ssanames_print_statistics): Use ISO function - declaration. Print unsigned ints, not usinged longs. - -2003-11-18 Daniel Berlin - - * tree-ssa-pre.c (rename_1): This should be static. - (append_eref_to_block): Don't gc allocate. - (clear_all_eref_arrays): Free the array rather than - clear them. - (rename_1): Ditto on both counts. - (free_expr_info): Free the arrays. - (collect_expressions): Don't gc allocate the arrays. - -2003-11-18 Daniel Berlin - - * tree-ssa-pre.c (insert_one_operand): Handle self-referential - ephi's properly. - -2003-11-19 Jeff Law - - * tree-ssa-dom.c (true_exprs, false_exprs): New hash tables. - (nonzero_vars): New varray. - (dom_walk_block_data): Add true_exprs, false_exprs and nonzero_vars. - (get_value_for, set_value_for): Accept additional argument indicating - which table to use. Callers updated. - (tree_ssa_dominator_optimize_1): Initialize and wipe our new hash - tables and varray appropriately. - (dom_opt_initialize_block): Initialize new block local varrays for - true expressions, false expressions and nonzero vars. Update call - to record_equivalences_from_incoming_edge. - (dom_opt_finalize_block): Put equivalences from taken edges - into the true_exprs and false_exprs hash tables. Restore global - state for true_exprs, false_exprs and nonzero_vars too. - (record_equivalences_from_incoming_edge): Accept dom_walk structure - instead of a gazillion varrays. Pass down block local - true_exprs, false_exprs and nonzero_vars varrays to various children. - (optimize_stmt): Accept block local nonzero_vars argument. Pass - new varrays down to record_equivalences_from_stmt. - (thread_jumps_walk_stmt): Pass new varrays down to - record_equivalences_from_stmt. - (dom_opt_walk_stmt): Pass new varrays down to optimize_stmt. - (dump_dominator_optimizer_statistics): Dump new hash tables. - (record_cond_is_true, record_cond_is_false): Record info into - the true/false hash tables/varrays instead of the main expression - varrays. Don't create useless tree nodes. - (record_var_is_nonzero): New function. - (record_equivalences_from_stmt): Don't generate useless tree nodes. - (lookup_avail_expr): Consult nonzero_vars and the true/false - expression tables as well. - (get_eq_expr_value): Record local true/false expressions in the - local true/false varrays rather than the main local expression - varray. - (true_false_expr_hash, true_false_expr_eq): New functions. - - * Makefile.in (OBJS-sommon): Add tree-ssanames.o. - (tree-ssanames.o): Add dependencies. - * tree-dfa.c (remove_phi_node): Release SSA_NAME expression when - we remove the PHI node. - (remove_all_phi_nodes_for): Similarly. - * tree-ssa.c (prepare_operand_for_rename): Similarly when we - strip away an SSA_NAME expression from an operand. - (init_tree_ssa): Call the SSA_NAME initializer. - (delete_tree_ssa): Call the SSA_NAME finalizer. - * tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Clear the - const_and_copies and vrp_data virtual arrays. - * tree-ssanames.c: New file for management of SSA_NAME expressions. - * tree.h: Prototypes for functions exported by tree-ssanames.c. - * tree-flow.h, tree-ssa-ccp.c, tree-ssa-dce.c: Use highest_ssa_version - rather than next_ssa_version. - * tree-ssa-dom.c, tree-ssa-live.c, tree-ssa.c: Similarly. - * tree.c (dump_tree_statistics): Call into tree-ssaname statistics - dumper too. - (make_ssa_name): Kill. Now in tree-ssanames.c - -2003-11-18 Richard Henderson - - * tree.c (recompute_tree_invarant_for_addr_expr): Split out from ... - (build1): ... here. - * tree.h: Declare it. - * gimplify.c (gimplify_addr_expr): Use it. - * tree-ssa-ccp.c (maybe_fold_offset_to_array_ref): Split out - from fold_indirect_refs_r. - (maybe_fold_stmt_indirect): Likewise. - (maybe_fold_offset_to_component_ref): New. - (maybe_fold_stmt_plus): New. - (fold_stmt_r): Rename from fold_indirect_refs_r. - (fold_stmt): Strip more useless type conversions. - -2003-11-18 Richard Henderson - - * tree-cfg.c (dump_function_to_file): Mind when cfun is null. - -2003-11-18 Diego Novillo - - Revert - - 2003-11-18 Jan Hubicka - - * tree-cfg.c (cfg_remove_useless_stmts_bb): Avoid crash. - * tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR. - - 2003-11-18 Jan Hubicka - - * Makefile.in (sibcall.o): Kill. - (tree-tailcall.o): Add except.h dependency - * sibcall.c: Kill. - (purge_reg_equiv_notes, purge_mem_unchanging_flag): Move to ... - * calls.c (purge_reg_equiv_notes, - purge_mem_unchanging_flag) ... here. - (expand_call): Do not produce placeholders; do - not deal with tail recursion; update - equivalencies after sibcall production. - * toplev.c (rest_of_handle_sibling_calls): Kill. - (rest_of_compialtion): Do not use rest_of_handle_sibling_calls. - * tree-dump.c (dump_files): Add tail2 - * tree-flow.h (tree_optimize_tail_calls): Update prototype. - * tree-optimize.c (optimize_function_tree): Do - tail optimization twice. - * tree-tailcall.c: Inlucde except.h - (suitable_for_tail_call_opt_p): New. - (optimize_tail_call): Add opt_tailcalls argument; - optimize tailcalls. - (tree_optimize_tail_calls): Add opt_tailcalls/pass arguments. - * tree.h (CALL_EXPR_TAILCALL): New. - (tree_dump_index): Add tail2 - -2003-11-18 Jan Hubicka - - * tree-cfg.c (cfg_remove_useless_stmts_bb): Avoid crash. - * tree-dfa.c (get_expr_operands): Fix handling of CALL_EXPR. - -2003-11-18 Diego Novillo - - * tree-optimize.c (optimize_function_tree): Disable tail - call optimizations. - -2003-11-18 Jan Hubicka - - * Makefile.in (sibcall.o): Kill. - (tree-tailcall.o): Add except.h dependency - * sibcall.c: Kill. - (purge_reg_equiv_notes, purge_mem_unchanging_flag): Move to ... - * calls.c (purge_reg_equiv_notes, purge_mem_unchanging_flag) ... here. - (expand_call): Do not produce placeholders; do not deal with tail - recursion; update equivalencies after sibcall production. - * toplev.c (rest_of_handle_sibling_calls): Kill. - (rest_of_compialtion): Do not use rest_of_handle_sibling_calls. - * tree-dump.c (dump_files): Add tail2 - * tree-flow.h (tree_optimize_tail_calls): Update prototype. - * tree-optimize.c (optimize_function_tree): Do tail optimization twice. - * tree-tailcall.c: Inlucde except.h - (suitable_for_tail_call_opt_p): New. - (optimize_tail_call): Add opt_tailcalls argument; optimize tailcalls. - (tree_optimize_tail_calls): Add opt_tailcalls/pass arguments. - * tree.h (CALL_EXPR_TAILCALL): New. - (tree_dump_index): Add tail2 - -2003-11-18 Jeff Law - - * tree-ssa-dom.c (thread_across_edge): Lose block_avail_exprs argument. - Callers updated. Pass NULL for block_avail_exprs in call to - lookup_avail_expr. Record both the condition and the inverted - condition when threading across an edge. - -2003-11-18 Richard Henderson - - * tree-ssa.c (tree_ssa_useless_type_conversion): Use TYPE_MAIN_VARIANT - when compariing pointer types too. - -2003-11-18 Jan Hubicka - - * tree-dump.c (dump_files): Reorder tail calls. - * tree-optimize.c (optimize_function_tree): Likewise - * tree-tailcall.c (optimize_tail_call, eliminate_tail_call): Remove - variable tmpvars; update SSA. - (suitable_for_tail_opt_p): Do not give up because of static variables. - (find_tail_calls): Track return values in SSA graph. - * tree.c (make-phi_node): Do not create new SSA name when operand - already is. - * tree.h (enum tree_dump_index): Reorder tail call. - -2003-11-17 Diego Novillo - - * gimplify.c (gimplify_call_expr): Change gimple_test_f argument to - return bool type. - (mark_decls_volatile_r): New local function. - (gimplify_expr): Make gimple_test_f return bool type. - Call mark_decls_volatile_r when gimplifying VA_ARG_EXPR. - * tree-dfa.c (struct walk_state): Remove field is_va_arg_expr. - Update all callers. - (opf_force_vop): Remove. Update all users. - (add_stmt_operand): Re-structure to add real operands only for - GIMPLE register variables. - (find_vars_r): Don't handle VA_ARG_EXPR nodes. - (add_referenced_var): Also assign a UID to variables with hidden - uses. - Call is_gimple_call_clobbered to determine if a variable is call - clobbered. - (get_memory_tag_for): Mark memory tags volatile and static. - * tree-flow.h (struct var_ann_d): Remove field is_in_va_arg_expr. - Update all users. - * tree-simple.c (is_gimple_*): Change return type to bool. Update - all users. - (is_gimple_reg_type): Return true only for non aggregate types. - (is_gimple_non_addressable_1): New local function. - (is_gimple_reg): Call it. - (is_gimple_non_addressable): New function. - (is_gimple_call_clobbered): New function. - * tree-simple.h (is_gimple_*): Change return type to bool. - -2003-11-17 Jason Merrill - - PR c++/11266 - * gimplify.c (gimple_add_tmp_var): Also make sure - seen_in_bind_expr isn't set. - (mostly_copy_tree_r): Don't copy a TARGET_EXPR. - (gimplify_target_expr): Only expand a TARGET_EXPR the first time - we see it. - -2003-11-17 Richard Henderson - - * tree-pretty-print.c (dump_generic_node): Use %u not %x for - printing DECL_UID. - -2003-11-16 Richard Henderson - - * c-common.c (c_add_case_label): Use create_artificial_label. - * tree-simple.h (create_artificial_label): Move decl ... - * tree.h: ... here. - -2003-11-16 Richard Henderson - - PR c++/12770 - * gimple-low.c (lower_stmt_body): Take a tree, not a tree*. - (lower_stmt): Handle EH nodes. - (lower_bind_expr): Remove fixme. - (block_may_fallthru): Move from tree-eh.c. Handle COND_EXPR, - BIND_EXPR, and TRY_FINALLY_EXPR. - (lower_cond_expr): Use it. - * tree-eh.c (collect_finally_tree): Ignore COND_EXPR and BIND_EXPR. - (replace_goto_queue_cond_clause): New. - (replace_goto_queue_1): Use it. Split out statement_list handling. - (replace_goto_queue_stmt_list): New. - (-block_may_fallthru): Move to gimple-low.c. - (lower_eh_constructs_1): Ignore BIND_EXPR. - * tree-flow.h (block_may_fallthru): Declare. - - * tree-dump.c (dump_files): Exchange .eh and .lower passes. - * tree-optimize.c (tree_rest_of_compilation): Likewise. - * tree.h (enum tree_dump_index): Likewise. - -2003-11-16 Jason Merrill - - * gimplify.c (mostly_copy_tree_r): Don't walk into a BLOCK. - - * tree-inline.c (walk_tree): Don't walk into the BIND_EXPR_VARS - of a BIND_EXPR. - * c-common.c (c_walk_subtrees): Don't walk into the decl of a - DECL_STMT. - - PR optimization/11269 - * dwarf2out.c (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. - -2003-11-16 Jason Merrill - - * c-pretty-print.c (debug_c_tree): Restore removed fn. - * diagnostic.h: Declare it. - - * tree-pretty-print.c (dump_generic_node): Use DECL_UID when - dumping anonymous decls. - -2003-11-16 Richard Henderson - - * tree-cfg.c (last_and_only_stmt): New. - * tree-flow.h (last_and_only_stmt): Declare. - * tree-ssa-dom.c (thread_across_edge): Use it. - - * tree-cfg.c (tree_block_forwards_to): Don't check for empty stmts. - (tree_forwarder_block_p): Likewise. - * tree-dfa.c (get_stmt_operands): Likewise. - * tree-ssa-ccp.c (set_rhs): Likewise. - * tree-ssa-dom.c (optimize_stmt): Likewise. - * tree-ssa.c (rewrite_stmt): Likewise. - -2003-11-16 Richard Henderson - - * tree.h (LABEL_DECL_UID): Rename from LABEL_DECL_INDEX. - * tree-flow.h (bsi_remove): Declare. - * tree-flow-inline.h (bsi_remove): Move ... - * tree-cfg.c (set_bb_for_stmt): Don't re-set LABEL_DECL_UID. - Verify that a label isn't already in a block before adding it. - (bsi_remove): Move from tree-flow-inline.h, clear bb. - * tree-pretty-print.c (dump_generic_node): Use LABEL_DECL_UID if set. - -2003-11-15 Richard Henderson - - * function.c (clear_block_marks): Rename from reorder_blocks_0, export. - * function.h (clear_block_marks): Declare. - * gimple-low.c (lower_function_body): Use it. - (lower_bind_expr): Ensure we don't link blocks into the tree twice. - * gimplify.c (gimplify_body): Keep old bind_expr at top level if - possible. - -2003-11-14 Richard Henderson - - * tree-ssa-pre.c (split_critical_edges): Reimplement. Call - tree_split_edge directly. - -2003-11-14 Jason Merrill - - * tree-eh.c (do_return_redirection): Assign directly to the - RESULT_DECL of a function which returns in memory. - -2003-11-14 Daniel Berlin - - * tree-ssa-pre.c (pre_stats): Add ephis_current member. - (create_ephi_node): Use xmalloc, not ggc_alloc_tree. - (clear_all_eref_arrays): Free the ephis here. - (expr_phi_insertion): Don't append the ephis to the erefs array. - (insert_occ_in_preorder_dt_order): Move building/freeing of dfn - array so that it only occurs once per function.. - (rename_1): Ditto on the dfs_id array. - (ephi_use_pool): New alloc pool. - (add_ephi_use): Pool allocate these things, rather than - ggc_alloc'ing them. - (insert_euse_in_preorder_dt_order_1): Use ephi_at_block to put the - ephi in the list. - (pre_expression): Don't PRE when we only have 1 occurrence. - (expr_lexically_eq): Make inline. - (names_match_p): Move closer to first use. - (tree_perform_ssapre): Alloc and free the ephi_use_pool. - Make stat printing per-expression. - Add checking that we freed all ephis. - -2003-11-14 Andrew MacLeod - - * common.opt (ftree-ter): Document new option. - * flags.h (flag_tree_ter): Add new flag. - * fold-const.c (invert_truthvalue): Don't ignore cast to BOOLEAN_TYPE. - * opts.c (decode_options): Option -ftree-ter defaults to on. - (common_handle_option): Add processing for flag_tree_ter. - * toplev.c (flag_tree_ter): Initialize to 0. - (lang_independent_options f_): Add -ftree-ter flag. - * tree-ssa-live.c (init_var_map): Initialize ref_count to 0. - (delete_var_map): Free ref count if allocated. - (register_ssa_partition): Add "is_use" parameter for reference counting. - (create_ssa_var_map): Add flag and code for calculating ref counts. - * tree-ssa-live.h (struct _var_map): Add ref_count field. - (SSA_VAR_MAP_REF_COUNT): Define flag. - (version_ref_count): Function to retreive ref_count. - * tree-ssa.c (replace_variable): If an expression vector is passed in, - use replacement expression instead of mapped variable when available. - (struct value_expr_d): New structure for value lists. - (struct temp_expr_table_d): Structure used to build an expression - replacement table. - (new_temp_expr_table): New. Create a new TER (Temporary Expression - Replacement) table. - (free_temp_expr_table): New. Free a TER table. - (new_value_expr): New. Allocate a value list element. - (free_value_expr): New. Free a value list element. - (find_value_in_list): New. Find a value in a list. - (add_value_to_list): New. Add a value to a list if not already present. - (remove_value_from_list): New. Remove a value from a list. - (add_dependance): New. Add a dependency to an expression. - (check_replaceable): New. Check if a stmt is a candidate for TER. Add - to active list and create dependancies if so. - (finish_expr): New. Remove an expression from TER consideration. - (mark_replaceable): New. Finish a TER expression as a valid replacement. - (kill_expr): New. Finish dependent TER expressions as not replaceable. - (kill_virtual_exprs): New. Finish any TER expressions dependent on a - virtual operand as not replaceable. - (find_replaceable_in_bb): New. Process a basic block for TER expression. - (find_replaceable_exprs): New. Entry point for TER expression finder. - (dump_replaceable_exprs): New. output list of replaceable expressions. - (rewrite_out_of_ssa): Build TER table if requested, and use it. - -2003-11-14 Andreas Jaeger - - * c-semantics.c (find_reachable_label): Use C90 function - declaration. - -2003-11-14 Jason Merrill - - PR middle-end/12526 - * tree-cfg.c (call_expr_flags): Move to calls.c. - * tree-flow.h: Move prototype to tree.h. - - PR c++/13033 - * c-simplify.c (gimplify_c_loop): Wrap the increment in a - CLEANUP_POINT_EXPR. - - * tree-dfa.c (get_stmt_operands) : A memory clobber - clobbers all call-clobbered variables. Clobber clobber. - - * gimplify.c (canonicalize_component_ref): Remove redundant call - to recalculate_side_effects. - -2003-11-14 Richard Henderson - - PR c++/12751 - * tree-eh.c (struct leh_tf_state): Add outer. - (lower_try_finally, lower_cleanup): Set it. - (lower_try_finally_fallthru_label): New. - (honor_protect_cleanup_actions): Use it. - (lower_try_finally_copy, lower_try_finally_switch): Likewise. - - * tree-eh.c (collect_finally_tree): Complete manual tailrecurse - transformation. - -2003-11-14 Richard Henderson - - * gimplify.c (voidify_wrapper_expr): Don't clobber TREE_TYPE of - statements in a STATEMENT_LIST. Be prepared for an empty list. - -2003-11-14 Steven Bosscher - - * jump.c (never_reached_warning): Remove function. - * rtl.h (never_reached_warning): Don't declare it. - * cfgrtl.c (never_reached_warning): Don't call it. - * cse.c (never_reached_warning): Ditto. - -2003-11-13 Jeff Law - - * tree-cfg.c (bsi_replace): Restore accidentally removed code. - - * tree-cfg.c (cfg_remove_useless_stmts_bb): Also detect useless - var->var copies created by the out-of-ssa translation. - -2003-11-13 Steven Bosscher - - PR middle-end/11514 - * tree-inline.c (walk_tree): Handle PLACEHOLDER_EXPR. - -2003-11-13 Richard Henderson - - * tree-cfg.c (cfg_remove_useless_stmts_bb): Initialize stmt. - -2003-11-13 Jan Hubicka - - * calls.c (special_function_p): Do not check for ECF_MALLOC. - (flags_from_decl_or_type): Use special_function_p. - (expand_call): Remove call to special_function_p. - * tree-cfg.c (notice_special_calls, clear_special_calls): New functions. - (remove_useless_stmts): Use clear_special_calls. - (remove_useless_stmts_1): Use notice_special_calls. - * tree-flow.h (notice_special_calls, clear_special_calls): New functions. - * tree-ssa-dce.c (remove_dead_stmts): Use clear_special_calls and - notice_special_calls.. - - * gimplify.c (gimplify_expr): Check labels. - - * tree-cfg.c (tree_verify_flow_info): Check labels. - - * tree-cfg.c (make_exit_edges): Do not create edges for const - functions. - (update_call_expr_flags): Fix. - -2003-11-12 Diego Novillo - - (declare_inlined_vars): New local function. - (initialize_inlined_parameters): Call it. - (expand_call_inline): Call it. - -2003-11-13 Steven Bosscher - - PR optimization/12640 - * tree-ssa-ccp.c (get_strlen): Don't follow the UD chain - of a PHI argument if the DEF stmt for the argument is - the PHI itself. - -2003-11-12 Zdenek Dvorak - Jeff Law - - * tree-cfg.c (cfg_remove_useless_stmts): New function. - (cfg_remove_useless_stmts_bb): Likewise. - * tree-flow.h (cfg_remove_useless_stmts): Prototype. - * tree-ssa.c (rewrite_out_of_ssa): Use cfg_remove_useless_stmts - instead of remove_useless_stmts. - -2003-11-12 Richard Henderson - - * Makefile.in (OBJS-common): Add tree-iterator.o. - (expr.o): Depend on tree-iterator.h. - (GTFILES): Add tree-iterator.c. - * basic-block.h (struct basic_block_def): Replace head_tree_p - and end_tree_p with stmt_list. - (tree_bb_root): New. - (create_bb): Don't declare. - * c-common.c (c_warn_unused_result): Handle STATEMENT_LIST. - * c-simplify.c (c_gimplify_stmt): Don't rationalize_compound_expr. - * cfg.c (entry_exit_blocks): Adjust for member changes. - (compact_blocks): Manage tree_bb_root. - * expr.c (expand_expr_1): Handle STATEMENT_LIST. - * gimple-low.c: Update for tree_stmt_iterator changes. - (lower_cond_expr): Use expr_only. Notice empty conditionals. - * gimplify.c (append_to_statement_list_1): Create and - manage statement_list nodes. - (foreach_stmt): Remove. - (wfl_locus): Remove. - (annotate_all_with_locus_1): Merge into... - (annotate_all_with_locus): ... here. Iterate over the - statement list directly. - (voidify_wrapper_expr): Handle STATEMENT_LIST. - (gimplify_return_expr): Likewise. - (gimplify_loop_expr): Likewise. - (shortcut_cond_r, shortcut_cond_expr): Likewise. - (gimplify_cleanup_point_expr): Likewise. - (gimple_build_eh_filter): Create statement list bodies. - (gimplify_bind_expr): Likewise. - (gimplify_switch_expr): Likewise. - (gimplify_cond_expr): Likewise. - (gimplify_compound_expr): Handle void expressions as well. - (gimplify_statement_list): New. - (gimple_push_cleanup): Gimplify the WITH_CLEANUP_EXPR operand. - (gimplify_stmt): Ensure non-null result. - (gimplify_to_stmt_list): New. - (gimplify_expr): Use gimplify_compound_expr, gimplify_statement_list, - gimplify_to_stmt_list as appropriate. - (gimplify_body): Fix creation of outer BIND_EXPR. - * tree-cfg.c (tree_bb_root): New. - (build_tree_cfg): Initialize it. Update for make_blocks changes. - (factor_computed_gotos): Use create_bb directly. - (make_blocks): Rewrite to use statement lists. - (append_stmt_to_bb, prepend_stmt_to_bb): Remove. - (create_bb): Make static. Add stmt_list argument. Don't allow - null after argument. Set tree_bb_root. - (make_edges): ENTRY block successor is FALLTHRU. - (remove_useless_stmts_warn_notreached): Handle STATEMENT_LIST. - (struct rus_data): Add last_goto. - (remove_useless_stmts_cond): Clear it. Zap empty conditionals. - Use expr_only for simple statment elimination. - (remove_useless_stmts_tf): Clear last_goto. Use TREE_SIDE_EFFECTS - instead of IS_EMPTY_STMT. Use append_to_statement_list instead of - munging to COMPOUND_EXPR. - (remove_useless_stmts_tc): Clear last_goto. Use TREE_SIDE_EFFECTS. - (remove_useless_stmts_goto): Set last_goto. - (remove_useless_stmts_label): New. Kill goto-next-label. - (remove_useless_stmts_1): Reorg to handle STATEMENT_LIST. - (remove_bb): Simplify block removal. - (remove_bsi_from_block): Kill. - (tree_block_forwards_to): Tidy bsi loops. Do not create - block label here. - (tree_cfg2dot): Update for bb->stmt_list. - (delete_tree_cfg): Clear tree_bb_root. - (set_bb_for_stmt): Handle STATEMENT_LISTs. - (bsi_insert_before, bsi_insert_after): Re-implement on TSIs. - (bsi_move_after, bsi_move_before, bsi_move_to_bb_end): Likewise. - (bsi_replace): Likewise. - (tree_find_edge_insert_loc): New, split from ... - (bsi_insert_on_edge_immediate): ... here. - (bsi_commit_edge_inserts): Use it. Add all stmts at once. - (bsi_insert_on_edge): Use statement lists. - (tree_split_edge): Position new block correctly. Deal with - fallthrough to EXIT. - (tree_verify_flow_info): Do not check block order vs statement chain. - (tree_make_forwarder_block): Update create_bb call, fix edge flags. - (thread_jumps): Call tree_redirect_edge_and_branch directly. - (tree_block_label): Don't return a NONLOCAL_LABEL. - (tree_redirect_edge_and_branch_1): Rename from s/_1//. Take an - argument to use ssa_redirect_edge or redirect_edge_succ. Use - tree_split_edge instead of bsi_insert_on_edge_immediate. - (tree_redirect_edge_and_branch): New. - (remove_stmt, first_exec_stmt, bsi_init, bsi_next_in_bb): Kill. - (bsi_start, bsi_last, bsi_prev, bsi_from_tsi): Kill. - (bsi_update_from_tsi, bsi_link_after): Kill. - * tree-eh.c (collect_finally_tree): Handle STATEMENT_LIST. - (replace_goto_queue_1): Likewise. - (replace_goto_queue): Don't use walk_tree. - (do_return_redirection): Create statement lists. - (do_goto_redirection): Likewise. - (block_may_fallthru_last): Fold into... - (block_may_fallthru): ... here. - (frob_into_branch_around): Use append_to_statement_list. - (honor_protect_cleanup_actions): Likewise. - (lower_try_finally_nofallthru): Likewise. - (lower_try_finally_onedest): Likewise. - (lower_try_finally_copy): Likewise. - (lower_try_finally_switch): Likewise. - (lower_try_finally): Likewise. - (lower_catch): Likewise. - (lower_eh_filter): Likewise. - (lower_eh_constructs_1): Handle STATEMENT_LIST. - * tree-flow-inline.h (BSI_NUM_ELEMENTS, bsi_list_p): Remove. - (new_bsi_list, empty_bsi_stack, FOR_EACH_BSI_IN_REVERSE): Remove. - (FOR_EACH_STMT_IN_REVERSE): Remove. - (bsi_start, bsi_last, bsi_end_p): Re-implement based on TSIs. - (bsi_next, bsi_prev, bsi_stmt, bsi_stmt_ptr, bsi_remove): Likewise. - * tree-flow.h (block_stmt_iterator): Likewise. - * tree-inline.c (copy_statement_list): New. - (copy_body_r): Use it, and append_to_statement_list. - (initialize_inlined_parameters): Use append_to_statement_list. - (expand_call_inline): Likewise. - (gimple_expand_calls_inline): New. - (expand_calls_inline): Use it. - (walk_tree, unsave_r): Handle STATEMENT_LIST. - (add_stmt_to_compound): Remove. - * tree-iterator.c: New file. - * tree-iterator.h: Re-implement based on STATEMENT_LIST. - * tree-mudflap.c (mf_decl_cache_locals): Don't - rationalize_compound_expr. - * tree-optimize.c (optimize_function_tree): Make static. - Rechain statements from blocks before deleting the cfg. - * tree-pretty-print.c (dump_generic_node): Handle STATEMENT_LIST, - update for change in tree_stmt_iterator wrt COMPOUND_EXPR. - (dump_generic_node): Dump lowered COND_EXPR on a single line. - * tree-simple.c (is_gimple_stmt): Handle STATEMENT_LIST. - * tree-simple.h (foreach_stmt_fn, foreach_stmt): Remove. - (gimplify_to_stmt_list): Declare. - (alloc_stmt_list, free_stmt_list): Declare. - * tree-ssa-dce.c (should_remove_dead_stmt): Rename from - remove_dead_stmt; return bool if statement should be removed. - (remove_dead_stmts): Update to match. - * tree-ssa-live.c (build_tree_conflict_graph): Don't use - FOR_EACH_STMT_IN_REVERSE. - * tree-ssa-pre.c (reaching_def): Tidy BSI usage. - (insert_one_operand, collect_expressions): Likewise. - * tree.c (tree_size): Handle STATEMENT_LIST. - (copy_node): Abort on STATEMENT_LIST. - (expr_first, expr_last): Move to tree-iterator.c. - (expr_length): Remove. - (tree_node_structure): Handle STATEMENT_LIST. - (tsi_link_before, tsi_link_after, tsi_delink): Move to tree-iterator.c. - (tsi_link_chain_before, tsi_link_chain_after): Merge into non-chain. - (tsi_new_stmt_list, tsi_stmt_list_head, body_is_empty): Kill. - * tree.def (STATEMENT_LIST): New. - * tree.h (STATEMENT_LIST_HEAD, STATEMENT_LIST_TAIL): New. - (struct tree_statement_list_node): New. - (struct tree_statement_list): New. - (enum tree_node_structure_enum): Add TS_STATEMENT_LIST. - (union tree_node): Add stmt_list. - (expr_length): Remove. - (expr_only): New. - (add_to_compound_expr, body_is_empty): Remove. - (optimize_function_tree): Remove. - -2003-11-12 Zdenek Dvorak - - * tree-flow.h (remove_useless_vars): Declare. - (expand_var_p): Declaration removed. - * tree-ssa.c (rewrite_out_of_ssa): Call remove_useless_vars. - * tree-cfg.c (dump_function_to_file): Update dumping of variables. - * gimple-low.c (expand_var_p): Made static. - (remove_useless_vars): New. - (expand_used_vars): Expand all variables in the - cfun->unexpanded_var_list. - -2003-11-11 Richard Henderson - - * c-common.c (c_gimplify_stmt): Fix botched removal of - rationalize_compound_expr calls. - - * c-semantics.c (build_stmt): Set TREE_SIDE_EFFECTS. - * c-simplify.c (c_gimplify_stmt): Return a gimplify_status; - mind the status from subroutines to avoid re-gimplification. - (c_build_bind_expr): Do not call gimplify_stmt. - (gimplify_c_loop): Don't create a loop_expr; fully gimplify. - (gimplify_block, gimplify_cleanup, gimplify_expr_stmt, - gimplify_for_stmt, gimplify_while_stmt, gimplify_do_stmt, - gimplify_if_stmt, gimplify_switch_stmt, gimplify_return_stmt, - gimplify_decl_stmt, gimplify_compound_literal_expr, - gimplify_stmt_expr): Return a gimplify_status. In most cases, - don't do local gimplification of sub-structures. - (gimplify_decl_stmt): Use append_to_compound_expr when we care - about the result value. - (gimplify_stmt_expr): Use append_to_statement_list_force and - re-gimplify so that voidify_wrapper_expr can work. - (finish_bc_block): Don't append to a non-list. - (c_gimplify_expr): Pass back the gimplify_status of subroutines. - * c-common.h (c_gimplify_stmt): Update decl. - * gimplify.c (append_to_statement_list_1): Make sure list_p is - never null after call. - (append_to_compound_expr): New. - * tree-simple.h (append_to_compound_expr): Declare. - -2003-11-11 Richard Henderson - - * gimplify.c (gimplify_addr_expr): Clear, not copy, TREE_SIDE_EFFECTS. - -2003-11-11 Richard Henderson - - PR c/13014 - * c-simplify.c (gimplify_if_stmt): Remove short circuit. - * tree-cfg.c (struct rus_data): Add has_label. - (remove_useless_stmts_warn_notreached): New. - (remove_useless_stmts_cond): Warn for deleted conditionals. - (remove_useless_stmts_tc): Warn for deleted catches. - (remove_useless_stmts_1): Set has_label. - -2003-11-11 Jan Hubicka - - * gimplify.c (gimplify_call_expr): Unset side effects for - pure functions too. - * tree-cfg.c (update-call_expr_flags): New function. - (remove_useless_stmts_and_vars_1): Use it. - (is_ctrl_altering_stmt): Pure/const calls never alter the CFG. - * tree-ssa-dce.c (stmt_useful_p): Check side effects flag - on call exprs. - -2003-11-11 Jan Hubicka - - * tree-cfg.c (has_label_p): New function. - (tree_verify_flow_info): New checks. - * tree-optimize.c (optimize_function_tree): Call verify_flow_info - before de-SSA. - -2003-11-11 Richard Henderson - - * tree-cfg.c (struct rus_data): Rename from rusv_data. - Remove remove_unused_vars. - (remove_useless_stmts*): Rename from remove_useless_stmts_and_vars*. - (remove_useless_stmts_bind): Do not remove dead variables. - (remove_useless_stmts): Kill remove_unused_vars argument. - * tree-flow.h (remove_useless_stmts): Update. - * tree-optimize.c (tree_rest_of_compilation): Update call. - * tree-ssa.c (rewrite_out_of_ssa): Likewise. - -2003-11-11 Zdenek Dvorak - Diego Novillo - - * basic-block.h (brief_dump_cfg): Declare. - * cfg.c (dump_cfg_bb_info, brief_dump_cfg): New. - * diagnostic.h (dump_generic_node): Declaration changed. - (print_generic_stmt_indented): Declare. - * gimple-low.c (expand_var_p): New. - (expand_used_vars): Use it. - * tree-cfg.c (struct cfg_stats_d): Remove num_failed_bind_expr_merges - field. - (remove_bb): Only dump whole block with TDF_DETAILS. - (tree_dump_bb): Use dump_generic_bb. - (dump_tree_cfg): Use brief_dump_cfg and dump_function_to_file. - (dump_cfg_function_to_file): Merged into dump_function_to_file, - removed. - (dump_cfg_stats): Do not dump cfg_stats.num_failed_bind_expr_merges. - (dump_function_to_file): Moved from tree-dump.c, merged with - dump_cfg_function_to_file. - * tree-dump.c (dump_function_to_file): Removed. - * tree-flow.h (dump_cfg_function_to_file): Declaration removed. - (dump_generic_bb, expand_var_p): Declare. - * tree-must-alias.c (tree_compute_must_alias): Replace - dump_cfg_function_to_file by dump_function_to_file. - * tree-ssa-ccp.c (tree_ssa_ccp): Ditto. - * tree-ssa-copyprop.c (tree_ssa_copyprop): Ditto. - * tree-ssa-dce.c (tree_ssa_dce): Ditto. - * tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Ditto. - * tree-ssa-pre.c (tree_perform_ssapre): Ditto. - * tree-ssa.c (rewrite_into_ssa, rewrite_out_of_ssa): Ditto. - * tree-tailcall.c (tree_optimize_tail_calls): Ditto. - * tree-pretty-print.c (print_declaration, print_generic_decl): Don't - use flags argument, change spacing. - (dump_block_info): Removed. - (dump_generic_bb_buff, dump_generic_bb, print_generic_stmt_indented, - dump_bb_header, dump_bb_end, dump_phi_nodes): New functions. - (dump_vops): Change spacing, don't dump phi nodes. - (do_niy, print_generic_stmt, print_generic_expr, print_declaration, - print_struct_decl, print_call_name): Add argument to - the dump_generic_node calls. - (last_bb): Removed. - (dump_generic_node): Print semicolons at end of statements correctly. - Don't print bb related stuff. - (maybe_init_pretty_print): Don't initialize last_bb. - * tree-ssa.c (rewrite_out_of_ssa): Do not allow virtual operands to - be shown in the .optimized dump. - -2003-11-11 Daniel Berlin - - PR optimization/12936 - * tree-ssa-pre.c (expr_phi_insertion): Remove unused code that was - causing ICE's for VA_ARG_EXPR. - -2003-11-10 Richard Henderson - - * gimple-low.c (lower_function_body): Lower bind_expr in place. - (lower_stmt): Only incr for stmts we're skipping. - (lower_cond_expr): Detect empty if. - -2003-11-10 Steven Bosscher - - * toplev.c (rest_of_decl_compilation): Use the location of the - declaration for error messages. - -2003-11-10 Richard Henderson - - * gimplify.c (add_stmt_to_compound, add_tree): Remove. - (append_to_statement_list_1, append_to_statement_list): New. - (append_to_statement_list_force): New. - (gimplify_loop_expr): Take pre_p. - (gimplify_expr): Provide it. - * tree-simple.h: Update. - - * c-simplify.c: Replace add_tree with append_to_statement_list. - * gimplify.c, tree-mudflap.c: Likewise. - -2003-11-10 Richard Henderson - - * c-common.c (c_warn_unused_result): Restructure to use iterator - on COMPOUND_EXPR only. - -2003-11-09 Zdenek Dvorak - - * tree-cfg.c (tree_verify_flow_info): Fix checking of order of basic - blocks over code. - -2003-11-09 Richard Henderson - - * basic-block.h (struct edge_def): Turn insns into a union. - * cfgrtl.c (insert_insn_on_edge): Update to match. - (commit_one_edge_insertion, commit_edge_insertions): Likewise. - (commit_edge_insertions_watch_calls): Likewise. - * gcse.c (reg_killed_on_edge, bypass_block): Likewise. - * profile.c (instrument_edges): Likewise. - * rtlanal.c (hoist_insn_to_edge): Likewise. - * tree-cfg.c (PENDING_STMT): Likewise. - (SET_PENDING_STMT): Remove. - (bsi_commit_edge_inserts): Update to match. - -2003-11-08 Jan Hubicka - - * fold.c (nondestructive_fold_binary_to_constant): Fix typo. - * fold-const.c (fold_relational_const): Check for side effects. - -2003-11-07 Zdenek Dvorak - - * basic-block.h (create_bb): Declaration changed. - * tree-cfg.c (create_bb): Enable creating a block on specified place. - (make_blocks, tree_split_edge, tree_make_forwarder_block): Use it. - (tree_verify_flow_info): Check bbs are in the correct order. - - * tree-cfg.c (find_unreachable_blocks): Remove now incorrect comments. - - * tree-ssa.c (rewrite_out_of_ssa): Don't remove annotations from - statements before the final dump. - -2003-11-07 Zdenek Dvorak - - * tree-tailcall.c (struct tailcall): New. - (bb_optimize_tail_calls, find_tail_call_p): Removed. - (eliminate_tail_call): Get the tailcall from the struct tailcall. - (optimize_tail_call, find_tail_calls): New. - (tree_optimize_tail_calls): Use them. - -2003-11-07 Jan Hubicka - - * gimple-low.c (simple_goto_p): Move to... - * tree-cfg.c: (simple_goto_p): ... here; - (nonlocal_goto_p): New. - (is_computed_goto): Rename to ... - (computed_goto_p): ... this; make global. - (factor_computed_gotos, make_blocks): Update calls. - (make_ctrl_stmt_edges): Add edge for nonlocal labels; use new functions. - * tree-flow.h (is_coputed_goto): Kill. - (nonlocal_goto_p, simple_goto_p, computed_goto_p): Declare. - * tree-ssa-ccp (visit_stmt): Update. - -2003-11-07 Jan Hubicka - - * fold-const.c (tree_expr_nonzero_p): Fix typo. - - * fold-const.c (tree_expr_nonzero_p): New function. - (fold_relational_const): Use it. - (nondestructive_fold_binary_to_constant): Allow casts in address - expressions. - -2003-11-06 Jan Hubicka - - * tree-cfg.c (tree_block_label): Cleanup. - -2003-11-06 Daniel Berlin - - * tree-ssa-pre.c (fast_a_dominates_b): New function. - (build_dfs_id_array_1): Ditto. - (build_dfs_id_array): Ditto. - (load_modified_phi_result): Use fast_a_dominates_b. - (rename_1): Ditto. - Also use build_dfs_id_array, and remove some duplicate ephi_at_block - calls. - (insert_occ_in_preorder_dt_order): Remove some duplicate ephi_at_block - calls. - (pre_expression): Ditto. - Also free dfs_id arrays here. - (collect_expressions): Remove duplicate bsi_stmt calls. - -2003-11-06 Daniel Berlin - - * tree-ssa-pre.c (count_stmts_in_bb): Removed. - (set_var_phis): Only call bb_for_stmt once. - (insert_one_operand): Remove endtree, endtreep, a lot of special handling - no longer needed. Remove insert_done. - (collect_expressions): Enable INDIRECT_REF and SSA_NAME handling. - -2003-11-06 Steven Bosscher - - * tree-cfg.c (STRIP_CONTAINERS): Remove. - -2003-11-06 Jan Hubicka - - * tree-cfg.c (cleanup_cond_expr_graph): Clean edge flags. - -2003-11-06 Zdenek Dvorak - - * tree-dump.c (dump_options): Remove TDF_LINENO from all setting. - -2003-11-06 Jan Hubicka - - * builtins.c (expand_builtin_strstr, expand_builtin_strchr, - expand_builtin_strrchr, expand_builtin_strpbrk, - simplify_builtin_strstr, simplify_builtin_strrchr, - simplify_builtin_strpbrk): Add missing casts. - -2003-11-05 Zdenek Dvorak - - * diagnostic.h (print_generic_decl): Declare. - * tree-cfg.c (dump_cfg_function_to_file): Dump variables in - unexpanded_var_list. - * tree-pretty-print.c (print_generic_decl): New function. - -2003-11-05 Zdenek Dvorak - - * Makefile.in (gimplify.o): Add function.h dependency. - * c-call-graph.c (construct_call_graph): Modify build_tree_cfg call. - * gimple-low.c (record_vars): Export. - (lower_function_body): Remove the topmost BIND_EXPR. - * gimplify.c: Include function.h. - (gimple_add_tmp_var): Record temporaries in the - cfun->unexpanded_vars_list if available. - * tree-cfg.c (build_tree_cfg): Work without the topmost BIND_EXPR. - (dump_cfg_function_to_file): New. - (dump_tree_cfg): Use dump_cfg_function_to_file. - * tree-dump.c (dump_function_to_file): Work without the topmost - BIND_EXPR. - * tree-flow.h (build_tree_cfg): Declaration changed. - (dump_cfg_function_to_file, record_vars): Declare. - * tree-optimize.c (optimize_function_tree, tree_rest_of_compilation): - Work without the topmost BIND_EXPR. - * tree-must-alias.c (tree_compute_must_alias): Use - dump_cfg_function_to_file. - * tree-ssa-ccp.c (tree_ssa_ccp): Ditto. - * tree-ssa-copyprop.c (tree_ssa_copyprop): Ditto. - * tree-ssa-dce.c (tree_ssa_dce): Ditto. - * tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Ditto. - * tree-ssa-pre.c (tree_perform_ssapre): Ditto. - * tree-ssa.c (rewrite_into_ssa, rewrite_out_of_ssa): Ditto. - * tree-tailcall.c (tree_optimize_tail_calls): Ditto. - * tree.h (optimize_function_tree): Declaration changed. - -2003-11-03 Daniel Berlin - - * tree-ssa-pre.c (handle_bb_creation): Removed. - (redo_dominators): Removed. - (insert_one_operand): Remove code to handle bb creation, since all - critical edges are now pre-split. - (finalize_2): Remove redo_dominators related code. - (pre_expression): Return 1 if we exited early because nothing happened. - (split_critical_edges): Do fake variable assignments instead, because - it works. return true if we actually split an edge. - (tree_perform_ssapre): Remove redo_dominators code. - -2003-11-03 Zdenek Dvorak - - * function.h (struct function): New field unexpanded_var_list. - * gimple-low.c (unexpanded_var_list): Removed. - (record_vars, expand_used_vars): Use cfun->unexpanded_var_list. - * tree-flow.h (unexpanded_var_list): Declaration removed. - - * gimplify.c (should_carry_locus_p): New. - (annotate_all_with_locus_1): Use it. Do not annotate empty - statements. - -2003-11-03 Jan Hubicka - - * tree-cfg.c (tree_try_redirect_by_replacing_jump): Do not use - succesor_block. - -2003-11-03 Zdenek Dvorak - - * tree-pretty-print.c (dump_block_info): Add flags parameter. - Only show line number when asked to. - (dump_generic_node): Pass flags to dump_block_info. - -2003-11-03 Jan Hubicka - - * cfghooks.h (redirect_edge_and_branch hook): Make it return edge. - * cfgrtl.c (cfg_layout_redirect_edge_and_branch, - rtl_redirect_edge_and_branch, try_redirect_by_replacing_jump): - Update to new interface. - * tree-cfg.c (tree_cfg_hooks): Move to end of file; set - redirect_edge_and_branch and redirect_edge_and_branch_force. - (thread_jumps): Use redirect_edge_and_branch. - (tree_block_label): new; break out of thread_edge. - (tree_try_redirect_by_replacing_jump): New. - (thread_edge): Rename to tree_redirect_edge_and_branch; deal sanely - with unusual edges; preserve profile. - (tree_redirect_edge_and_branch_force): New. - * tree-flow.h (ssa_redirect_edge): Declare. - * tree-ssa.dom.c (tree_ssa_dominator_optimize): Use redirect_edge_and_branch. - * tree-ssa.c (ssa_redirect_edge): New. - -2003-11-03 Jeff Law - - * domwalk.h (struct dom_walk_data): New field "global_data". - * tree-ssa-dom.c (tree_ssa_dominator_optimize_1): Initialize new - "global_data" field. - * tree-flow.h (enum need_phi_state): New enumeration. - (var_ann_d): Add bitfield for need_phi_state. - * tree-ssa.c (mark_def_sites_global_data): New structure to hold - global data for mark_def_sites dominator walk. - (mark_def_sites): Revamp to be called via the dominator walker. - (set_def_block): Update need_phi_state for the variable as needed. - (set_livein_block): Similarly. - (rewrite_into_ssa): Use dominator walker to call mark_def_sites. - Delay freeing dominance info. Kill "globals" bitmap. - (insert_phi_nodes): No longer need "globals" bitmap. Use - need_phi_state in variable's annotation to determine if a PHI - may be needed. - - * tree-ssa-dom.c (dom_opt_finalize_block): Try to thread across the - edges leaving COND_EXPR nodes which are leafs in the dominator - tree. - (record_equivalences_from_incoming_edge): Do not set EQ_EXPR_VALUE - unless the block's single predecessor contains parent_block_last_stmt. - -2003-11-03 Zdenek Dvorak - - * tree-dump.c (dump_options): Add TDF_LINENO. - * tree-pretty-print.c (dump_generic_node): Print line number for - statements if asked to. - * tree.h (TDF_LINENO): New. - * doc/invoke.texi (lineno): Document. - -2003-11-03 Zdenek Dvorak - - * expr.c (expand_vars, expand_var): Split of ... - (expand_expr_1): ... here. - * expr.h (expand_var): Declare. - * gimple-low.c (lower_function_body, lower_stmt, lower_bind_expr): - Eliminate BIND_EXPRs. - (expand_used_vars): New. - * tree-alias-common.c (create_alias_vars): Walk variables in blocks. - * tree-cfg.c (make_bind_expr_blocks): Removed. - (make_blocks, build_tree_cfg, factor_computed_gotos): Don't handle - BIND_EXPRs. - (assign_vars_to_scope, successor_block, NEXT_BLOCK_LINK): Removed. - (make_edges, make_exit_edges): Don't use successor_block. - (remove_useless_stmts_and_vars_goto): Don't expect NEXT_BLOCK_LINK - to be set. - (bsi_init, bsi_next_in_bb, bsi_from_tsi): Don't handle BIND_EXPRs. - (replace_stmt): Don't create BIND_EXPRs. - * tree-flow.h (struct var_ann_d): Removed field scope. - (struct stmt_ann_d): Removed fields scope and scope_level. - (propagate_copy): Declaration changed. - (fixup_var_scope): Removed. - * tree-must-alias.c (tree_compute_must_alias): Consider DECL_NONLOCAL - vars call clobbered. - * tree-optimize.c (tree_rest_of_compilation): Call expand_used_vars. - * tree-ssa-copyprop.c (move_var_to_scope, fixup_var_scope): Removed. - (copyprop_stmt): Call to propagate_copy changed. - (propagate_copy): Don't update scope. - * tree-ssa-dom.c (cprop_into_stmt): Call to propagate_copy changed. - (eliminate_redundant_computations): Don't call fixup_var_scope. - * tree-ssa.c (insert_copy_on_edge): Don't update scope. - -2003-11-02 Zdenek Dvorak - - * tree-inline.c (walk_tree): Tail recursion optimized for - COMPOUND_EXPRs. - * tree-eh.c (collect_finally_tree): Ditto. - -2003-11-02 Zdenek Dvorak - - * tree-optimize.c (optimize_function_tree): Removed duplicate call of - lower_function_body. Moved call of reset_block_changes ... - (tree_rest_of_compilation) ... here. Reset the scope to top before - expanding function end. - -2003-11-01 Zdenek Dvorak - - * basic-block.h (BB_CONTROL_STRUCTURE): Removed. - * tree-cfg.c (struct cfg_stats_d): Field num_merged_cases removed. - (make_blocks, make_bind_expr_blocks, append_stmt_to_bb, bsi_link_after, - build_tree_cfg, factor_computed_gotos, prepend_stmt_to_bb, - remove_stmt, replace_stmt): Don't set parent. - (set_parent_stmt, add_stmt_to_bb, find_contained_blocks, - blocks_unreachable_p, remove_blocks, remove_unreachable_block, - move_outgoing_edges, merge_tree_blocks, remap_stmts): Removed. - (REMOVE_ALL_STMTS, REMOVE_NO_STMTS, REMOVE_NON_CONTROL_STRUCTS, - REMOVE_CONTROL_STRUCTS): Removed. - (remove_bb): Code to handle control structures removed. - (tree_block_forwards_to): Don't stop due to CASE_LABEL_EXPRs. - (tree_dump_bb): Don't print parent. Print only BIND_EXPRs in slim - form. - (dump_tree_cfg): Don't count merged case labels. - (is_ctrl_structure): Removed. - (stmt_starts_bb_p): Don't handle CASE_LABEL_EXPRs. - (tree_verify_flow_info): Don't check BB_CONTROL_STRUCTURE. - * tree-flow-inline.h (parent_block, parent_stmt): Removed. - * tree-flow.h (struct stmt_ann_d): Remove parent_stmt field. - (parent_stmt, parent_block, is_ctrl_structure): Declarations removed. - * tree-pretty-print.c (dump_generic_node): Don't handle lowered - COND_EXPRs specially. - * tree-ssa-ccp.c (visit_stmt): Don't check is_ctrl_structure. - -2003-10-31 Jeff Law - - * tree-ssa-dom.c (record_equivalences_from_stmt): Restore lost code - to create equivalences from BIT_IOR_EXPR. - - * tree-ssa-dom.c (thread_jumps_walk_stmts): Go ahead and optimize - a COND_EXPR with a compile-time constant condition. - -2003-10-31 Diego Novillo - - * tree-optimize.c (optimize_function_tree): Fix comment - describing SSA pass after DOM2. - -2003-10-31 Diego Novillo - - Fix PR optimization/12825 - * tree-optimize.c (optimize_function_tree): Run SSA renamer after - second DOM pass. - -2003-10-30 Richard Henderson - - * c-common.c (match_case_to_enum_1, match_case_to_enum): New. - (c_do_switch_warnings): New. - * c-common.h (c_do_switch_warnings): Declare. - * c-typeck.c (c_finish_case): Call it. - * stmt.c (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. - * expr.h, tree.h: Remove dead decls. - - * c-simplify.c (gimplify_switch_stmt): Force switch body non-null. - -2003-10-30 Richard Henderson - - * tree-cfg.c (thread_jumps): Allow SWITCH_EXPR. - (thread_edge): Handle it. Tidy surrounding code. - -2003-10-30 Richard Henderson - - * domwalk.c (walk_dominator_tree): Pass any final is_ctrl_stmt - down the recursive walk. - -2003-10-30 Jeff Law - - * tree-ssa-dom.c (thread_across_edge): Renamed from - thread_through_successor. Revamp to thread the destination of an edge - rather than the successors of a block. - (dom_opt_finalize_block): Corresponding changes. Do not bother calling - thread_across_edge unless we are at a leaf in the dominator tree. - - * tree-cfg.c (thread_jumps): Now returns a bool. Move some tests into - tree_forwarder_block_p. Improve comments. - (cleanup_control_flow): Now returns a bool indicating if anything was - changed. - (thread_unconditional_jumps): Kill. - (cleanup_tree_cfg): Repeat cascading cleanups until nothing changes. - (tree_forwarder_block_p): Check forwardable bit in the block's - annotation to avoid useless work. Mark blocks as not forwardable as - appropriate. Verify destination is not the exit block here. Do not - consider successors of the entry block as forwarders. Ignore empty - statements when walking through the block's statements. Verify target - block is not the start of a case label and that we can safely insert - a label at the target block. - -2003-10-29 Richard Henderson - - * c-common.c (c_warn_unused_result): Remove lowered containers. - * c-semantics.c (genrtl_case_label): Update add_case_node call. - * c-simplify.c (gimplify_switch_stmt): Build SWITCH_EXPR and - gimplify it simultaneously with the body. - * expr.c (expand_expr_1): Handle SWITCH_BODY clear and - SWITCH_LABELS set. Update add_case_node calls. - * gimple-low.c (lower_stmt): Don't do anything for SWITCH_EXPR. - (lower_switch_expr, lower_case_label_expr): Remove. - * gimplify.c (gimplify_switch_expr): Zap SWITCH_BODY after - gimplification. Force default entry for SWITCH_LABELS. - (gimplify_case_label_expr): Rename from gimple_add_case_label. - Assert switch in scope; lower to LABEL_EXPR. - * stmt.c (pushcase, pushcase_range) Update add_case_node calls. - (add_case_node): Add dont_expand_label argument. - (same_case_target_p): Don't search rtl. - * tree-cfg.c (enum find_location_action): Remove. - (make_switch_expr_blocks): Remove. - (make_blocks): Update. - (make_case_label_edges): Remove. - (make_edges): Update. - (find_contained_blocks): Remove lowered containers. - (make_switch_expr_edges): New. - (make_ctrl_stmt_edges): Call it. - (make_cond_expr_edges): Use label_to_block. - (remove_useless_stmts_and_vars_1): Don't go into SWITCH_BODY. - (remove_unreachable_block): Remove SWITCH_EXPR special case. - (cleanup_cond_expr_graph): Tidy. - (cleanup_switch_expr_graph): Rewrite. - (disconnect_unreachable_case_labels): Remove. - (find_taken_edge_cond_expr): Use integer_zerop/integer_nonzerop. - (find_taken_edge_switch_expr): Rewrite. - (value_matches_some_label): Remove. - (find_case_label_for_value): New. - (is_ctrl_structure): Remove lowered containers. - (is_ctrl_stmt): Add SWITCH_EXPR. - (switch_parent): Remove. - (handle_switch_fallthru): Remove. - (handle_switch_split): Remove. - (find_insert_location): Merge into ... - (bsi_insert_on_edge_immediate): ... here. Simplify. - (tree_split_edge): Don't set EDGE_FALLTHRU. - * tree-eh.c (collect_finally_tree): Remove lowered containers. - (replace_goto_queue_1, block_may_fallthru_last): Likewise. - (lower_eh_constructs_1): Likewise. - (verify_norecord_switch_expr): New. - (lower_try_finally_switch): Generate lowered switches. - * tree-inline.c (expand_calls_inline): Don't search null SWITCH_BODY. - * tree-pretty-print.c (dump_generic_node): Do something sensible - with lowered switch_expr. - * tree-ssa-dom.c (record_equivalences_from_incoming_edge): Update - for lowered switch_expr. - * tree.def (SWITCH_EXPR): Update docs. - * tree.h (add_case_node): Update decl. - -2003-10-29 Daniel Berlin - - * tree-ssa-pre.c (n_phi_preds): New variable. - (generate_vops_as_of_bb): New function - (generate_expr_as_of_bb): Remove unused first argument. Update all - callers. - (subst_phis): Add boundary check for the phi_pred_cache array. - (same_e_version_phi_result): Once modified, no point in continuing - the loop. - (finalize_2): ESSA Minimization can crash if we ended up with new - BB's - -2003-10-29 Richard Henderson - - * tree-eh.c (do_return_redirection): Don't move copy to RESULT_DECL - outside the RETURN_EXPR. Introduce a new temporary as needed. - -2003-10-26 Richard Henderson - - * gimplify.c (keep_function_tree_in_gimple_form): Remove. - (gimplify_function_tree): Return void. Remove hack for - language not supporting gimple. - * tree.h: Update decls. - * langhooks-def.h (LANG_HOOKS_GIMPLE_BEFORE_INLINING): New. - * langhooks.h (struct lang_hooks): Add gimple_before_inlining. - * tree-inline.c (copy_body_r): Check that instead of - keep_function_tree_in_gimple_form. - (initialize_inlined_parameters): Likewise. - (expand_call_inline, expand_calls_inline): Likewise. - - * explow.c (probe_stack_range): Never emit loop notes. - * expr.c (emit_block_move_via_loop): Likewise. - * toplev.c (rest_of_compilation): Always synthesize loop notes. - -2003-10-26 Zdenek Dvorak - - * Makefile.in (gimple-low.o): Add function.h dependency. - * gimple-low.c (struct lower_data): New field block. - (lower_function_body, lower_stmt, lower_bind_expr): Record - the block at statements. - * cfglayout.c (insn_locators_initialize): Use new info about - blocks. - * expr.c (expand_expr): Record block changes. - * function.c (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. - * function.h (struct function): New bitfield dont_emit_block_notes. - New field ib_boundaries_block. - (blocks_nreverse, reset_block_changes, record_block_change, - finalize_block_changes, check_block_change, free_block_changes): - Declare. - * sibcall.c (optimize_sibling_and_tail_recursive_call): Don't call - reorder_blocks when dont_emit_block_notes. - * stmt.c (expand_start_bindings_and_block, expand_end_bindings): - Don't emit block notes when dont_emit_block_notes. - * toplev.c (rest_of_compilation): Don't call reorder_blocks when - dont_emit_block_notes. - * tree.c (build1): Initialize TREE_BLOCK field. - * tree-flow.h (lower_function_body): Declare. - * tree-optimize.c: Include function.h. - (optimize_function_tree): Call lower_function_body. - * tree.h (struct tree_exp): Add block field. - (TREE_BLOCK): New macro. - -2003-10-26 Richard Henderson - - * tree.h (tree_dump_index): Add TDI_lower. - * tree-dump.c (dump_files): Add .lower entry. - * tree-optimize.c (optimize_function_tree): Move lower_function_body, - (tree_rest_of_compilation): here. Tidy .useless dump. - -2003-10-25 Jan Hubicka - - * c-common.c (c_estimate_num_insns_1): Kill. - (c_estimate_num_insns): Kill. - * c-common.h (c_estimate_num_insns): Kill. - * c-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill. - * cp-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill. - * objc-lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill. - * java/lang.c (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill. - (java_estimate_num_insns_1, java_estimate_num_insns): Kill. - * cgraphunit (cgraph_analyze_function): Use estimate_num_insns. - * tree-eh.c (decide_copy_try_finally): Likewise. - * tree-inline.c (limits_allow_inilining, optimize_inline_calls): Likewise. - (estimate_num_insns_1, estimate_num_insns): New functions. - * langhooks-def.h (LANG_HOOKS_TREE_INLINING_ESTIMATE_NUM_INSNS): Kill. - * langhooks.h (estimate_num_inssn): Kill. - * tree-inline.h (estimate_num_insns): Declare. - -2003-10-25 Zdenek Dvorak - - * gimple-low.c: New. - * Makefile.in (gimple-low.o): Add. - * domwalk.c (walk_dominator_tree): Consider COND_EXPR a control - structure. - * tree-cfg.c (make_cond_expr_blocks, linearize_control_structures, - linearize_cond_expr): Removed. - (thread_jumps, tree_forwarder_block_p): New. - (merge_tree_blocks): Unused now. - (phi_alternatives_equal): Modified for use in jump threading. - (enum find_location_action): Remove EDGE_INSERT_LOCATION_NEW_ELSE. - (make_blocks): Don't call make_cond_expr_blocks. - (set_parent_stmt): Ensure we don't set COND_EXPR as a parent - statement. - (find_contained_blocks): Remove COND_EXPR alternative. - (make_cond_expr_edges): Handle lowered gotos. - (cleanup_tree_cfg): Don't call linearize_control_structures, - call thread_jumps and verify_flow_info and rerun cleanup_control_flow. - (remove_unreachable_block): Remove handling of structured COND_EXPRs. - (remove_bb): Fix warning for removed goto exprs. - (cleanup_control_flow, cleanup_cond_expr_graph, - cleanup_switch_expr_graph, find_taken_edge_cond_expr, - bsi_insert_before, find_insert_location, bsi_insert_on_edge_immediate): - Handle lowered COND_EXPRs. - (is_ctrl_structure): Remove COND_EXPR. - (is_ctrl_stmt): Add COND_EXPR. - (tree_verify_flow_info): Check validity of COND_EXPRs. - (thread_edge): Moved from tree-ssa-dom.c. - * tree-flow.h (cleanup_cond_expr_graph, cleanup_switch_expr_graph): - Declaration changed. - (thread_edge, lower_function_body): Declare. - * tree-optimize.c (optimize_function_tree): Call lower_function_body. - * tree-pretty-print.c (dump_generic_node): Dump lowered cond_exprs in - full. - * tree-ssa-copyprop.c (fixup_var_scope): Handle non-SSA_NAMEs. - * tree-ssa-dce.c (stmt_useful_p, process_worklist): Cleaned up when - COND_EXPRs are lowered. - * tree-ssa-dom.c (thread_edge): Moved to tree-cfg.c. - (tree_ssa_dominator_optimize_1): Dumps and setting of vars_to_rename - moved from thread_edge. - (optimize_stmt): Pass block iterator to cleanup_cond_expr_graph and - cleanup_switch_expr_graph. - * tree-ssa.c (insert_copy_on_edge): Fixup scope for emitted variables. - - * dominance.c (BB_NODE): Use VARRAY_GENERIC_PTR_NOGC. - (calculate_dominance_info): Use VARRAY_GENERIC_PTR_NOGC_INIT. - * varray.c (element): Add GENERIC_PTR_NOGC entry. - * varray.h (enum varray_data_enum): Add VARRAY_DATA_GENERIC_NOGC. - (union varray_data_tag): Add generic_nogc. - (VARRAY_GENERIC_PTR_NOGC_INIT, VARRAY_GENERIC_PTR_NOGC, - VARRAY_PUSH_GENERIC_PTR_NOGC, VARRAY_TOP_GENERIC_PTR_NOGC): New. - -2003-10-25 Jan Hubicka - - * cppcharset.c (one_utf8_to_utf32): Initialize 's' to silence warning. - -2003-10-25 Jan Hubicka - - * fold-const.c (nondestructive_fold_binary_to_constant): Realize that - (plus (address) (const_int)) is a constant. - -2003-10-25 Jan Hubicka - - * opts.c (decode_options): Uncomment unit-at-a-time setting - * params.def: Syncrhonize with manline. - * tree-inline.c (initialize_inlined_parameters): Set variable as - gimplified. - -2003-10-24 Steven Bosscher - - * gimplify.c (create_artificial_label): New function. - (build_and_jump): Use it. - * c-simplify.c (c_gimplify_stmt): Likewise. - (gimplify_condition): Likewise. - * tree-cfg.c (factor_computed_gotos, tree_block_forwards_to, - handle_switch_fallthru, handle_switch_split): Likewise. - * tree-ssa-dom.c (thread_edge): Likewise. - * tree-ssa-pre.c (split_critical_edges): Likewise. - * tree-tailcall.c (eliminate_tail_call): Likewise. - * tree-eh.c (frob_into_branch_around, - honor_protect_cleanup_actions, lower_try_finally_nofallthru, - lower_try_finally_onedest, lower_try_finally_copy, - lower_try_finally_switch, lower_catch, lower_eh_filter, - lower_cleanup): Likewise. - (make_label): Remove. - * tree-simple.h (create_artificial_label): Add prototype. - * tree-inline.c (expand_call_inline): Make return label for - inlined function artificial. - -2003-10-23 Jeff Law - - * timevar.def (TV_TREE_SSA_THREAD_JUMPS): New timevar. - * tree-dump.c (dump_files): Add dump file for jump threading. - * tree.h (TDI_thread_jumps): New enum member. - * tree-cfg.c (tree_block_forwards_to): No longer static. - * tree-flow.h (tree_block_forwards_to): Prototype. - (tree_ssa_dominator_thread_jumps): Likewise. - * tree-optimize.c (optimize_function_tree): Call jump threader. - * tree-ssa-dom.c (tree_ssa_dominator_optimize_1): New function. - Common code for redundancy elimination and jump threading on - the dominator tree. Slightly different callback initialization - for redundancy elimination and jump threading. Initialize - block forwardable attribute. - (tree_ssa_dominator_optimize): Call tree_ssa_dominator_optimize_1. - (tree_ssa_dominator_thread_jumps): New function. - (thread_edge): Mark results of PHI nodes as needing rewriting if - we have threaded through a block with PHI nodes. - (thread_through_successor): If thread_through_phis is nonzero, - then allow jump threading through blocks with PHI nodes. If the - target block is a forwarder block, then forward the jump. - (thread_jumps_walk_stmts): Statement walker for dominator thread - jumping. - - * tree-ssa-dom.c (record_equivalence_from_incoming_edge): Fix - comment typo. - -2003-10-23 Richard Henderson - - * gimplify.c (gimplify_*): Return gimplify_status. - (gimple_add_tmp_var): Set seen_in_bind_expr. - (gimplify_bind_expr): Likewise. Kill if 0 code. - (gimplify_return_expr): Cope with error marks. - (gimple_push_cleanup): Do nothing if errors seen. - (gimplify_expr): Cope with error marks. Use gimplify_status to - decide when to exit the main loop. Zap statements with errors. - (gimplify_body): Return void. - (keep_function_tree_in_gimple_form): Don't exit on errors. - (gimplify_function_tree): Return bool. Don't exit on errors. - * langhooks.c (lhd_gimplify_expr): Return GS_UNHANDLED. - * langhooks.h (struct lang_hooks): Update docs for gimplify_expr. - * tree-optimize.c (optimize_function_tree): Don't exit on errors. - Move delete_tree_cfg call outside optimization clause. - (tree_rest_of_compilation): Don't exit on errors. - * tree-simple.h (enum gimplify_status): New. - (gimplify_expr, gimplify_stmt, gimplify_body): Update. - * tree-ssa.c (rewrite_out_of_ssa): Move delete_tree_cfg call to - optimize_function_tree. - * tree.h (struct tree_decl): Add seen_in_bind_expr. - (gimplify_function_tree): Update. - * c-common.c (c_add_case_label): Unify three error exit paths. - Create a normal label, not a case label to suppress unreachable - code warning. - * c-simplify.c (c_build_bind_expr): Don't create an empty bind - body. Pass entire bind_expr to gimplify_stmt. - (gimplify_block): Don't abort on mismatches if errors seen. - (gimplify_expr_stmt): Cope with error marks. - (gimplify_decl_stmt): Likewise. - (c_gimplify_expr): Return gimplify_status. - -2003-10-22 Daniel Berlin - - * tree-pretty-print.c (dump_generic_node): Kill off ELEFT_NODE. - Print out status of new EUSE_LVAL flag. - - * tree-ssa-pre.c: #include alloc-pool.h - (append_eref_to_block): Inline. - (names_match_p): Ditto. - (pre_expression): Take sbitmap of variables to rename so we can - mark our new variable if necessary. - (insert_occ_in_preorder): Completely redo to be an O(n log n) - algorithm worst case, instead O(n^2) all the time. - (build_dfn_array): New function. - (eref_compare): Ditto. - (preorder_count): Remove no-longer used variable. - (pre_stats): Add new stats about memory use. - (struct expr_info): add loadpre_cand member. - (euse_node_pool): New alloc-pool - (eref_node_pool): Ditto - (create_expr_ref): Use them. - (expr_phi_insertion): Insert on PHI's of VUSES for loadpre cands. - Not all expressions have uses (left occurrences don't). - (load_modified_real_occ_real_occ): Return false, not abort. - (process_delayed_rename): Remove useless fibheap, do proper LVAL - handling. - (insert_euse_in_preorder_dt_order_1): No more ELEFT_NODE's. - (finalize_1): Ditto. - (set_save): Ditto. - (really_available_def): New function. - (finalize_2): Use really_available_def, not EUSE_SAVE, during EPHI - minimization. - (names_match_p): Handle INDIRECT_REF properly. - (call_modifies_slot): Removed. - (add_call_to_ei): Removed. - (process_left_occs_and_kills): Fix. - (pre_expression): Zero out counts. - (collect_expressions): Split out from tree_perform_ssapre. Do this - in domtree order. - (tree_perform_ssapre): Create and free alloc-pools. - Rename new variables that need to be renamed. - - * tree.c (tree_size): Remove ELEFT_NODE. - (tree_node_size): Ditto. - (is_essa_node): Ditto. - - * tree.def (ELEFT_NODE): Gone. - - * tree.h (EREF_NODE_CHECK): No more ELEFT_NODE. - (struct tree_eref_common): Add ID flag. - (struct tree_euse_node): Add lval flag. - (EREF_ID): New macro. - (EUSE_LVAL): New macro. - -2003-10-22 Daniel Berlin - - * tree-flow-inline.h (add_dom_child): XMALLOC, not GGC_ALLOC, - the bitmap. - (clear_dom_children): XFREE the bitmap. - -2003-10-22 Andrew MacLeod - - * tree-ssa-live.c (new_tree_live_info, (delete_tree_live_info, - live_worklist, set_if_valid, add_livein_if_notdef, - calculate_live_on_entry, calculate_live_on_exit, - add_conflicts_if_valid, dump_live_info): Use bitmap instead of sbitmap. - (build_tree_conflict_graph): Use bitmap, Change mechanism for - adding conflicts between live-on-entry partitions. - * tree-ssa-live.h (struct tree_live_info_d): Switch to bitmaps. - (partition_is_global, live_entry_blocks, live_on_exit, - live_merge_and_clear, make_live_on_entry): Switch to bitmaps. - * tree-ssa.c (struct _elim_graph): Remove bitmaps, use varrays. - (new_elim_graph, clear_elim_graph, delete_elim_graph): Switch from - old bitmap implementation. - (elim_graph_size): New. Number of elements in elimination graph. - (elim_graph_add_node): New. Add an element to the elim-graph. - (elim_graph_add_edge): New. Add an edge to the elim-graph. - (elim_graph_remove_succ_edge): New. Remove an edge for which a node - has a successor. - (FOR_EACH_ELIM_GRAPH_SUCC): Find all successor nodes. - (FOR_EACH_ELIM_GRAPH_PRED): Find all predeccesor nodes. - (eliminate_name, eliminate_build, elim_forward, - elim_unvisited_predecessor, elim_backward, elim_create, eliminate_phi): - Use new elim-graph routines. - (rewrite_out_of_ssa): Enable single-definition compaction when not - combining temporaries. - -2003-10-21 Richard Henderson - - * gimplify.c: Sort functions into use order, and all gimplification - functions to the end. - -2003-10-22 Jeff Law - - * tree-cfg.c (thread_unconditional_jumps): New function. - (tree_block_forwards_to): Likewise. - (cleanup_tree_cfg): Call thread_unconditional_jumps. - * tree-flow.h (bb_ann_t): Add forwardable status bit. - - * tree-dump.c (dump_files): Add entry for TDI_none. - (dump_begin): Do nothing for TDI_none. - (dump_enable_all, dump_switch_p): Start our scan at TDI_none + 1. - * tree.h (tree_dump_index): Add. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): If we have altered the - CFG and we have variables to [re]rename, go ahead and rename them before - starting the next iteration of the dominator optimizer. - -2003-10-21 Jason Merrill - - * gimplify.c (gimplify_modify_expr): Require a regvar on either - the lhs or rhs if we're dealing with a renameable type. - (canonicalize_component_ref): New fn. - (gimplify_compound_lval): Use it. - (gimplify_conversion): Use it. - (gimplify_expr): Lose redundant STRIP_MAIN_TYPE_NOPS. - Discard conversions in void context. - -2003-10-21 Daniel Berlin - - * tree-ssa-pre.c (pre_expression): Free and allocate the - ephi_pindex_htab and phi_pred_cache in this function only. - (phi_pred_cache): New array to store cached phi preds, to avoid - recomputation and unnecessary copying. - (subst_phis): Use it. - (added_phis): array of added phis that is marked for GC. - - * Makefile.in: Add tree-ssa-pre.c to the gtype files, and - gt-tree-ssa-pre.h to the list of generated files. - -2003-10-21 Jason Merrill - - PR optimization/12661 - * tree-dfa.c (get_expr_operands): Handle TRUTH_NOT_EXPR. - * tree-simple.c (is_gimple_rhs): Allow TRUTH_NOT_EXPR. - * gimplify.c (gimplify_expr) : Don't rewrite to an - EQ_EXPR. - -2003-10-21 Jan Hubicka - - * haifa-sched.c (choose_ready): Initialize index. - * tree-tailcall.c (bb_optimize_tail_calls): Initialize has_return. - * f/lex.c (ffelex_cfelex_): Initialize d. - -2003-10-20 Diego Novillo - - Fix PR optimization/12688 - * tree-dfa.c (get_stmt_operands): Don't return early when dealing - with an empty statement. - * tree-ssa-ccp.c (set_rhs): If the expression has no side effects, - replace the statement with an empty statement. - -2003-10-20 Andrew MacLeod - - * tree-ssa-dce.c (processed): Change to an sbitmap. - (mark_necessary): Test bits in 'processed'. - (tree_ssa_dce): Initialize/free processed as an sbitmap. - -2003-10-20 Diego Novillo - - * tree-cfg.c (bsi_prev): Also copy the context from the previous - iterator. - -2003-10-18 Richard Henderson - - * builtins.c (simplify_builtin): Handle BUILT_IN_CONSTANT_P. - -2003-10-18 Zdenek Dvorak - - * tree-tailcall.c: New. - * Makefile.in (tree-tailcall.o): Add. - * function.c (assign_parms): Setting of current_function_stdarg - moved ... - (allocate_struct_function): ... here. - * tree-dump.c (dump_files): Add .tail dump. - * tree-flow.h (tree_optimize_tail_calls): Declare. - * tree-optimize.c (optimize_function_tree): Call - tree_optimize_tail_calls. - * tree.h (enum tree_dump_index): Add TDI_tail. - -2003-10-18 Jan Hubicka - - * tree-ssa-copyprop.c (move_var_to_scope): Do not clear abstract - origin for static variables. - -2003-10-18 Jan Hubicka - - * integrate.c (copy_decl_for_inlinig): Fix copying of copies. - -2003-10-18 Jan Hubicka - - * cgraphunit.c (cgraph_analyze_function): Fix call of estimate_num_insns. - -2003-10-17 Kazu Hirata - - * ChangeLog.tree-ssa: Fix typos. - * tree-alias-common.c: Fix comment typos. - * tree-cfg.c: Likewise. - * tree-dfa.c: Likewise. - * tree-eh.c: Likewise. - * tree-flow.h: Likewise. - * tree-iterator.h: Likewise. - * tree-mudflap.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-live.h: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa.c: Likewise. - -2003-10-17 Andrew MacLeod - - * tree-ssa-dce.c (processed): New Global vector. - (mark_necessary): Check if SSA_NAME has already been processed first. - (find_useful_stmts, process_worklist): Change call to mark_necessary(). - (tree_ssa_dce): Initialize and free processed vector. - * tree-cfg.c (handle_switch_fallthru): A new basic block can result - from splitting edges of nested switch stmts. - (handle_switch_split): If a new block is created, restart the loop for - inserting GOTO's to handle the new block. - -2003-10-17 Jan Hubicka - - * tree-cfg.c (remove_useless_stmts_and_vars_bind): Fix handling of - static variables. - -2003-10-16 Richard Henderson - - * common.opt (fdisable-gimple): Remove. - * flags.h (flag_disable_gimple): Remove. - * toplev.c (flag_disable_gimple): Remove. - (process_options): Don't check it. - (lang_independent_options): Don't set it. - * opts.c (common_handle_option): Likewise. - * gimplify.c (keep_function_tree_in_gimple_form): Don't check it. - * c-semantics.c (expand_stmt_toplev): Likewise. - * tree-optimize.c (tree_rest_of_compilation): Likewise. - * doc/invoke.texi: Don't document it. - -2003-10-16 Roger Sayle - - * fold-const.c: Merge from mainline. - * tree.c (associate_tree_code, commutative_tree_code): Use a - switch statement instead of a sequence of comparisons. - -2003-10-16 Richard Henderson - - * gimplify.c (maybe_protect_cleanup): Remove. - * tree-simple.h (maybe_protect_cleanup): Remove. - * c-simplify.c (gimplify_cleanup): Don't call it. - -2003-10-16 Jeff Law - - * tree-cfg.c (found_computed_goto): New global for computed goto - factoring/unfactoring. - (factored_computed_goto_label, factored_computed_goto): Likewise. - (factor_computed_gotos): New function. - (build_tree_cfg): Use it. - (make_blocks): Record whether or not we find a computed goto. - (remove_useless_stmts_and_vars): Un-factor computed gotos. - (remove_useless_stmts_and_vars): Reset factored_computed_goto_label - and factored_computed_goto. - - * tree-ssa-dom.c (get_value_for, set_value_for): Move to the start - of the file. Delete pointless sanity checking. - - * tree-ssa.c (currdefs): Now a varray instead of a hash table. - (get_value_for, set_value_for): Corresponding changes. Move to - the start of the file and delete pointless sanity checking. - (rewrite_into_ssa, dump_tree_ssa_stats): Corresponding changes. - (var_value_hash, var_value_eq): Kill. - - * tree-ssa.c (rewrite_add_phi_arguments): Once we encounter a - rewritten PHI break the inner loop. - - * tree-ssa.c (insert_phi_nodes_for): Use EXECUTE_IF_AND_COMPL_IN_BITMAP. - - * tree-dfa.c (create_phi_node): Clear PHI_REWRITTEN on all new PHIs - (remove_all_phi_nodes_for): Set PHI_REWRITTEN on any PHIs which are - not removed. - * tree-ssa.c (rewrite_add_phi_arguments): Check the PHI node itself - to see if it has already been rewritten. - * tree.h (PHI_REWRITTEN): New accessor macro. - (struct phi_node): New field rewritten. - - * tree-flow.h (struct bb_ann_d): New field num_preds. - * tree-dfa.c (create_phi_node): Get the number of predecessors from - the block's annotation. - * tree-ssa.c (rewrite_into_ssa): Compute number of preds for each - block and store it into the block's annotation. - (insert_phi_nodes_for): Get the number of preds for each block - from the block's annotation. - - * tree-ssa.c: Remove parallel lifetime analysis code from April 2003. - (def_blocks_d): Remove PHI_INSERTION_POINTS field. - (compute_global_livein): Accept livein/def bitmaps to use for - life analyis rather than a varray of variables. Callers updated. - Rewritten to compute life information for one variable at a - time instead of several variables at once. - (insert_phis_for_deferred_variables): Remove. - (insert_phi_nodes_for): Lose varray argument. Callers updated. - No longer mess with deferring PHI insertions for variables. - (insert_phi_nodes): No longer need to deal with deferred variables. - Kill everything related to them. - -2003-10-15 Jeff Law - - * domwalk.c, domwalk.h: New files. - * Makefile.in (OBJS-common): Add domwalk.c. - (tree-ssa-dom.o): Add dependency on $(BASIC_BLOCK_H) and domwalk.h. - (tree-ssa.o): Add dependency on domwalk.h. - (domwalk.o): Add dependencies. - * tree-ssa-dom.c: Include domwalk.h. - (cfg_altered, vars_to_rename): Now globals. - (dom_walk_block_data): New structure for block data used by dominator - walker. - (optimize_block, record_equivalences_from_block_entry): Kill. - (optimize_stmt): Lose "cfg_altered" argument. Update callers. - Initialize may_have_exposed_new_symbols. - (get_value_for, set_value_for): Lose "table" argument. Update - callers. Use const_and_copies table directly. - (lookup_avail_expr): Lose "const_and_copies" argument. Callers - updated. - (get_eq_expr_value): Similarly. Also accept a pointer to the - vrp_variables. Callers updated. - (update_rhs_and_lookup_avail_expr): Similarly. - (record_cond_is_true, record_cond_is_false): Similarly. - (simplify_rhs_and_lookup_avail_expr): Similarly. - (simplify_cond_and_lookup_avail_expr): Similarly. - (record_equivalences_from_phis): Similarly. - (record_equivalences_from_incoming_edge): Similarly. Also accept - a pointer to the block const_and_copies table and vrp_variables. - Callers updated. - (eliminate_redundant_computations): Similarly - (record_equivalences_from_stmt, thread_through_successor): Similarly. - (dom_opt_initialize_block): New function. Perform block local - initialization for the dominator optimizer. - (dom_opt_finalize_block): Renamed from finalize_block. Get - block local varrays from walk_data. Pop entry off block local - data stack when complete. - (dom_opt_walk_stmts): New function. - (cprop_into_phis): Get block local varrays from walk_data. - (record_range): Get vrp varray by reference than by value. - (tree_ssa_dominator_optimize): Store incoming "vars" variable into - global "vars_to_rename". Initialize walk_data. Use - walk_dominator_tree. - (cprop_into_stmt): Initialize may_have_exposed_new_symbols. - * tree-ssa.c: Include domwalk.h - (rewrite_finalize_block, rewrite_initialize_block): New functions - extracted from rewrite_block. - (rewrite_walk_stmts, rewrite_add_phi_arguments): Similarly. - (rewrite_block): Kill. - (rewrite_into_ssa): Initialize walk_data. Use walk_dominator_tree. - -2003-10-14 Richard Henderson - - * gimplify.c (gimplify_expr): Return bool. Bail gracefully if - fb_mayfail is set. - (gimplify_asm_expr): Take pointer-to-expr. Allow gimplify_expr - to fail for lvalues, and issue appropriate error messages. Zap - the entire asm statement on failure. - * tree-simple.h (enum fallback_t): Add fb_mayfail. - -2003-10-14 Richard Henderson - - * c-tree.h (C_LANG_TREE_NODE_CHAIN_NEXT): New. - (union lang_tree_node): Use it for chain_next annotation. - -2003-10-14 Richard Henderson - - * c-common.c: Include tree-iterator.h. - (c_expand_expr): Kill warn_unused_result checks. - (c_warn_unused_result): New. - * c-common.h (STMT_EXPR_WARN_UNUSED_RESULT): Remove. - (c_warn_unused_result): Declare. - * c-decl.c (finish_function): Always gimplify. Call - c_warn_unused_result. - * calls.c (expand_call): Kill warn_unused_result checks. - * Makefile.in (c-common.o): Update. - -2003-10-15 Steven Bosscher - - * cfghooks.c (dump_bb): Take extra `int indent' argument. - * cfg.c (dump_bb): Take extra argument to match cfg hook. - Write out all information about bb that is shared between the tree - and rtl representations. - * basic-block.c (dump_bb): Adjust prototype. - * cfgrtl.c (rtl_dump_bb): Update prototype to match cfg hook. - Use indent. - * flow.c (verify_wide_reg, verify_local_live_at_start): - Fixup dump_bb calls. - * tree-cfg.c (dump_tree_bb): Rename to tree_dump_bb. Remove unused - `prefix' argument. Put in tree_cfg_hooks as cfg hook for dump_bb. - (remove_bb, debug_tree_bb, dump_tree_cfg): Call dump_bb. - * tree-ssa (dump_tree_ssa): Likewise. - * tree-flow.h (dump_tree_bb): Replace with new tree_dump_bb - prototype. - * tree-pretty-print (dump_block_info): Match case of BLOCK, SUCC, - PRED with dump_bb. - -2003-10-14 Daniel Berlin - - * tree-alias-ander.c (throwaway_global): Delete. - (andersen_same_ponts_to_set): We handle all globals individually - now. - * tree-alias-common.c: Remove doxygen markers. - (get_alias_var_decl): Always create an alias var for globals now. - Assign the global alias vars to GLOBAL_VAR, too. - (intra_function_call): Fix logic, do a bit of pre-filtering to - avoid useless global aliasing. - (get_values_from_constructor): It's the same for field based and - not field based. - (create_alias_vars): Remove special global var handling. - (same_points_to_set): Ditto. - (ptr_may_alias_var): Ditto. - -2003-10-14 Jeff Law - - * tree-ssa-dom.c (cprop_into_phis): Avoid doing useless work if the - edge we care about is abnormal. - * tree-ssa-copyprop (cprop_phi): Avoid doing useless work if the - destination of the PHI node occurs in an abnormal PHI. - - * tree-ssa-dom.c (record_equivalences_from_stmt): Renamed from - record_equivalances. Caller updated. - (record_equivalences_from_phis): New function extracted from - optimize_block. - (record_equivalences_from_incoming_edge): Likewise. - (record_equivalances_from_block_entry): Likewise. - (cprop_into_phis): Likewise. - (optimize_stmt): Lots of code moved into new functions. Call - record_equivlances_from_block_entry. - - * tree-ssa-dom.c (optimize_block): Simplify interface slightly. - Use finalize_block. Extract edge_flags from our block's - incoming edge as necessary. Simplify recursive call. - (thread_through_successor): Extracted from optimize_block. - (finalize_block): Similarly. - - * tree-ssa-dom.c (eliminate_redundant_computations): New function - extracted from optimize_stmt. - (record_equivalences): Similarly. - (optimize_stmt): Use eliminate_redundant_computations and - record_equivalences. If fold_stmt changes stmt, then make sure - to get a new annotation as well. - - * tree-cfg.c (cleanup_control_flow): Pass last statement down to - cleanup_cond_expr_graph and cleanup_switch_expr_graph. - (cleanup_cond_expr_graph): Accept statement from caller and - use it. Return nonzero if the predicate was constant. No longer - static. - (cleanup_switch_expr_graph): Similarly. - (disconnect_unreachable_case_labels): Similarly, except that it - is still static. - * tree-flow.h (cleanup_cond_expr_graph): Prototype. - (cleanup_switch_expr_graph): Similarly. - * tree-ssa-dom.c (optimize_stmt): Also optimize the condition - in a SWITCH_EXPR. Use COND_EXPR_COND and SWITCH_COND to get - conditions instead of relying upon known operand positions. - Use cleanup_cond_expr_graph and cleanup_switch_expr_graph rather - than open coding equivalents. - (lookup_avail_expr): Handle SWITCH_EXPRs. Use COND_EXPR_COND and - SWITCH_COND to get conditions instead of relying upon known - operand positions. - (avail_expr_hash, avail_expr_eq): Similarly. - -2003-10-14 Richard Henderson - - * gimplify.c (gimplify_body): Save and restore input_location; - initialize input_location to DECL_SOURCE_LOCATION. - (gimplify_expr): Always save and restore input_location. - -2003-10-14 Richard Henderson - - * expr.c (expand_expr): Break out EXPR_LOCUS code from ... - (expand_expr_1): ... here, renamed from expand_expr. - -2003-10-13 Richard Henderson - - * c-simplify.c (c_gimplify_stmt): Upreate on location_t and not - fine and line individually. - (gimplify_c_loop, gimplify_switch_stmt): Likewise. - * gimplify.c (wfl_locus): Merge wfl_filename+wfl_lineno. - (annotate_all_with_locus_1): Rename from annotate_stmt_with_file_line. - (annotate_all_with_locus): Replace annotate_all_with_file_line; - update all callers. - * tree-simple.h: Update. - * tree.c, tree.h (annotate_with_locus): New. - -2003-10-13 Steven Bosscher - - * tree-flow-inline.h (def_ops): Take a stmt_ann_t as argument - instead of a tree. - (use_ops): Likewise. - (vdef_ops): Likewise. - (vuse_ops): Likewise. - * tree-flow.h: Update prototypes. - * tree-cfg.c (remove_stmt): Load the statement annotation. - Adjust *_ops calls. - * tree-dfa.c (compute_immediate_uses_for_stmt, - mark_new_vars_to_rename): Likewise. - * tree-pretty-print.c (dump_vops): Likewise. - * tree-ssa-ccp.c (tree_ssa_ccp): Likewise. Also remove now - superfluous stmt_ann() calls. - (visit_stmt, cpp_fold, add_var_to_ssa_edges_worklist, - initialize, replace_uses_in, likely_value): Likewise. - * tree-ssa-copyprop.c (copyprop_stmt): Likewise. - * tree-ssa-dce.c (stmt_useful_p, process_worklist): Likewise. - * tree-ssa-dom.c (cprop_into_stmt, optimize_stmt, - avail_expr_hash, avail_expr_eq): - Likewise. - * tree-ssa-live.c (create_ssa_var_map, calculate_live_on_entry, - build_tree_conflict_graph): Likewise. - * tree-ssa-pre.c (maybe_find_rhs_use_for_var, - expr_phi_insertion, same_e_version_real_occ_real_occ, - generate_expr_as_of_bb, bool load_modified_real_occ_real_occ, - bool same_e_version_phi_result, get_default_def,reaching_def, - tree_perform_ssapre): Likewise. - * tree-ssa.c (mark_def_sites, rewrite_out_of_ssa, rewrite_stmt): - Likewise. - -2003-10-12 Richard Henderson - - * gimplify.c (gimplify_array_ref_to_plus): Be prepared for - null TYPE_DOMAIN or TYPE_MIN_VALUE for the array. - * tree-ssa-ccp.c (fold_indirect_refs_r): Likewise. - -2003-10-12 Richard Henderson - - * tree.h (struct tree_common): Rename unused_1 to invariant_flag. - (TREE_INVARIANT): New. - * builtins.c (build_string_literal): Set TREE_INVARIANT. - * c-common.c (fix_string_type): Likewise. - * c-typeck.c (build_external_ref): Likewise. - (build_c_cast, pop_init_level): Likewise. - * fold-const.c (fold_convert, fold): Likewise. - * tree.c (make_node, build_constructor): Likewise. - (build, build1): Likewise. - (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. - * print-tree.c (print_node): Print TREE_INVARIANT. - - * c-common.c (pointer_int_sum): Rely on build to set TREE_CONSTANT. - (finish_label_address_expr): Likewise. - * c-typeck.c (default_function_array_conversion): Likewise. - (parser_build_binary_op, pointer_diff): Likewise. - (build_unary_op, build_binary_op): Likewise. - * fold-const.c (non_lvalue): Likewise. - - * tree-pretty-print.c (dump_generic_node): Handle VIEW_CONVERT_EXPR. - -2003-10-12 Richard Henderson - Diego Novillo - - * gimplify.c (gimplify_array_ref_to_plus): Subtract the array - domain minimum index. - (gimplify_addr_expr): Expand ARRAY_REFs. Cope with Fortran - missing cast wierdnesses. - * tree-dfa.c (get_expr_operands): Handle (&v + c); abort on - other address invariants that should have been folded. - (vdefs_disappeared_p): New. - (mark_new_vars_to_rename): Use it. Move from ... - * tree-ssa-dom.c: ... here. - * tree-flow-inline.h (is_unchanging_value): Remove; use - is_gimple_min_invariant everywhere instead. - (phi_ssa_name_p): New. - * tree-must-alias.c (find_addressable_vars): Process PHIs. - * tree-simple.c (is_gimple_min_invariant): Rename from - is_gimple_const; allow non-static variable addresses; update callers. - (is_gimple_val): Remove ADDR_EXPR checks. - * tree-simple.h: Update. - * tree-ssa-ccp.c (replace_uses_in): Add replaced_address argument. - (substitute_and_fold): Use that to mark_new_vars_to_rename. - (fold_indirect_refs_r): New. - (fold_stmt): Use it. - * tree-ssa-copyprop.c (copyprop_stmt): Call fold_stmt. - * tree-ssa-dce.c (NECESSARY): Use asm_written_flag. - (mark_necessary): Reject DECLs. - * tree-ssa-live.c (register_ssa_partition): Use phi_ssa_name_p. - * tree-ssa-pre.c (generate_expr_as_of_bb): Call fold_stmt if we - replaced with constants. - * tree-ssa.c (insert_copy_on_edge): Unwrap ADDR_EXPRs to set_is_used. - (eliminate_build, coalesce_abnormal_edges, coalesce_vars): Use - phi_ssa_name_p. - -2003-10-09 Frank Ch. Eigler - - java/12211 - * gimplify.c (gimplify_save_expr): Tolerate void-typed saved - expressions. - -2003-10-09 Diego Novillo - - * tree-dfa.c (add_call_clobber_ops): If a variable is read-only, - add a VUSE operand instead of VDEF. - -2003-10-08 Jason Merrill - - PR optimization/12525 - * tree-dfa.c (note_addressable): New fn, split out from... - (add_stmt_operands): Here. - (get_stmt_operands) : Call it for mem ops. - * gimplify.c (gimplify_asm_expr): Call parse_input_constraint - directly. It's only a mem op if allows_mem is set. - -2003-10-08 Diego Novillo - - PR/12187 - * tree-dfa.c (add_stmt_operand): Test against current_function_decl - when checking for global variables. - (may_access_global_mem_p): Likewise. - (add_referenced_var): Likewise. - Consider DECL_NONLOCAL variables call clobbered and used. - (find_hidden_use_vars): Do not test for DECL_NONLOCAL variables. - * tree-optimize.c (tree_rest_of_compilation): Test against - current_function_decl when checking for global variables. - * tree-ssa-ccp.c (get_default_value): Likewise. - * tree-ssa-dce.c (need_to_preserve_store): Likewise. - -2003-10-07 Jason Merrill - - PR optimization/12525 - * gimplify.c (gimplify_asm_expr): If the constraint doesn't allow - a register, call mark_addressable. Split an in/out operand that - does allow a register into separate input and output operands. - -2003-10-06 Richard Henderson - - * fold-const.c (fold): Fold (T1)((T2)X op Y) into (T1)X op Y, - for suitable values of T1 & T2. - -2003-10-06 Andrew Macleod - - * tree-dfa.c (compute_immediate_uses): Add optional callback. - (compute_immediate_uses_for_phi): Remove unused parameter. Add optional - callback to determine if usage info should be calculated for variable. - (compute_immediate_uses_for_stmt): Add optional callback to determine - if usage info should be calculated for variable. - * tree-flow.h (compute_immediate_uses): Update prototype. - * tree-ssa-ccp.c (need_imm_uses_for): New. Callback function passed to - compute_immediate_uses. - (initialize): Calculate defaults initially, then build reduced - immediate use information. - (get_default_value): Non empty stmt's which are not a PHI_NODE or - a MODIFY_EXPR default to VARYING. - -2003-10-06 Andrew Macleod - - * tree-cfg.c (tree_split_edge): Mark edge as FALLTHRU when splitting. - -2003-10-03 Zdenek Dvorak - - * tree-ssa.c (rewrite_block): Test vars_to_rename instead of - PHI_ARG_CAPACITY. - * tree-dfa.c (remove_phi_arg_num): Don't update - PHI_ARG_CAPACITY. - -2003-10-01 Richard Henderson - - * c-decl.c (set_decl_nonlocal): New. - (store_parm_decls): Use it via walk_tree. - -2003-10-01 Jeff Law - - * tree-ssa-dom.c (cprop_into_stmt): New function extracted from - optimize_stmt. - (optimize_stmt): Use cprop_into_stmt. - -2003-09-30 Richard Henderson - - * function.h (struct function): Add function_end_locus. - * c-decl.c (finish_function): Set it. - * tree-optimize.c (tree_rest_of_compilation): Set input_location - to function_end_locus before expand_function_end. - - * tree-optimize.c (optimize_function_tree): Move calls to - remove_useless_stmts_and_vars and lower_eh_constructs ... - (tree_rest_of_compilation): ... here. - - * c-simplify.c (gimplify_expr_stmt): Don't warn for any statement - with void result type. - -2003-09-30 Jeff Law - - * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): Fix thinko - in test for swapping ranges. - - * tree-ssa-dom.c (record_range): New function. - (extract_range_from_cond): Likewise. - (tree_ssa_dominator_optimize): Initialize the vrp_data varray. - (optimize_block): Initialize the vrp_variables varray. Wipe - appropriate entries from the VRP varrays when done processing a block. - (get_eq_expr_value): Accept new argument "bb". Call record_range - appropriately. Refactor code to avoid useless work. - (simplify_cond_and_lookup_avail_expr): Use value range records to - simplify conditions. - (simplify_rhs_and_lookup_avail_expr): When simplifying ABS_EXPR, - DIV_EXPR and MOD_EXPR, use simplify_cond_and_lookup_avail_expr - to determine the range of the given variable. - - * tree-ssa-dom.c (find_equivalent_equality_comparison): Do not - look through a typecast which narrows a value. - -2003-09-30 Paul Brook - - * Makefile.in: Add rules for check-gfortran. - -2003-09-29 Richard Henderson - - * gimplify.c (gimplify_cond_expr): Fix both arms dead return value. - -2003-09-29 Jeff Law - - * tree-ssa-dom.c (simplify_cond_and_lookup_avail_expr): New function. - (find_equivalent_equality_comparison): Likewise. - (optimize_block): Remove code to build a == c equivalence after - seeing a == b and b == c. Remove code to walk backwards - though typecasts to record equivalences and move relevant parts - into find_equivalent_equality_comparison. - (optimize_stmt): Call simplify_cond_and_lookup_avail_expr. - -2003-09-28 Richard Henderson - - * gimplify.c (gimplify_call_expr): Annotate all call_exprs. - * tree-inline.c (expand_call_inline): Set input_location based - on EXPR_LOCUS; save and restore input_location around that. - (walk_tree): Do not set input_location. - -2003-09-27 Graham Stott - - * expr.c (expand_expr)[CATCH_EXPR]: Fix bogus return value. - -2003-09-26 Andrew MacLeod - - * tree-ssa-dom.c (struct var_value_d): Remove. - (const_and_copies): Change to a varray_type. - (tree_ssa_dominator_optimize): Initialize const_and_copies as a varray. - (optimize_block): Simply set the value in const_and_copies. - (dump_dominator_optimization_stats): No hash stats for const_and_copies. - (record_cond_is_true, record_cond_is_false, - simplify_rhs_and_lookup_avail_expr, update_rhs_and_lookup_avail_expr): - Parameter const_and_copies is now a varray_type. - (var_value_hash, var_value_eq): Remove. - (get_value_for, set_value_for): Access varray elements. - (get_eq_expr_value): Parameter const_and_copies is now a varray_type. - - * tree-cfg.c (handle_switch_split): Update container of previous stmt. - -2003-09-25 Daniel Berlin - - * tree-ssa-pre.c (split_critical_edges): New function, temporarily - disabled until some edge splitting/insertion problems are fixed. - (opnum_of_ephi): Take an edge argument, constify. Use hash table lookup. - Update all callers. - (ephi_pindex_eq): New function. - (ephi_pindex_hash): New function. - (ephi_pindex_htab): New variable. - (add_ephi_pred): Update hash table. - (expr_phi_insertion): Don't free the bitmap returned by compute_idfs - anymore. - (idfs_cache): New variable. - (compute_idfs): Rewrite to use cache as much as possible, and not - recompute when we can avoid it. - -2003-09-25 Daniel Berlin - - * tree-alias-ander.c: Fixup comment spacing. - (andersen_op_assign): Handle >2 operands case. - -2003-09-24 Steven Bosscher - - * tree-dfa.c (compute_immediate_uses_for): Split up in two - separate functions, one for PHIs and one for normal statements. - (compute_immediate_uses_for_phi): New. - (compute_immediate_uses_for_stmt): New. - -2003-09-25 Jeff Law - - * tree-ssa-dom.c (optimize_block): When EQ_EXPR_VALUE has the - form DEST = SRC where both DEST and SRC are SSA_NAMEs also - record SRC = DEST into the const and copies table. - - * tree-ssa-dom.c (optimize_block): Change tests which checked - for SSA_VAR_P to only allow SSA_NAMEs. - (get_value_for, set_value_for): Likewise. - (lookup_avail_expr, get_eq_expr_value): Likewise. - -2003-09-25 Andrew MacLeod - - * tree-ssa-dce.c (pdom_info, needed_stmts): Remove. - (NECESSARY): Define. - (necessary_p): Check bit instead of hash table lookup. - (clear_necessary): New. Clear necessary bit. - (mark_necessary): Use bit instead of hash table. No control lookup. - (mark_tree_necessary): Remove. - (find_useful_stmts): Clear necessary bit before checking it. - (stmt_useful_p): Remove GOTO_EXPR case. Check arms of COND_EXPR for - GOTO. All other control flow stmts are necessary. - (process_worklist): Dont look for control parents. - (remove_dead_stmts): No dominattor info is necessary. - (remove_dead_stmt): Don't need BB any more. Remove COND_EXPR by changing - the condition to 'if (0)'. Abort on other control flow. - (tree_ssa_dce): No longer need the hash table. - (remove_conditional): Remove. - -2003-09-25 Andreas Schwab - - * tree-flow.h: Declare next_ssa_version. - * tree-ssa-ccp.c: Remove conflicting declaration. - * tree-ssa-live.c: Likewise. - * tree.c (make_ssa_name): Likewise. - -2003-09-24 Jason Merrill - - * tree.h (DECL_SOURCE_LOCATION): Resurrect. - (DECL_SOURCE_FILE, DECL_SOURCE_LINE): Likewise. - (EXPR_LOCUS): Renamed from TREE_LOCUS. Null for non-exprs. - (SET_EXPR_LOCUS): New macro. - (EXPR_FILENAME): Renamed from TREE_FILENAME. - (EXPR_LINENO): Renamed from TREE_LINENO. - (struct tree_common): Remove locus field. - (struct tree_decl): Re-add locus field. - (struct tree_expr): Add locus field. - * c-aux-info.c, c-decl.c, coverage.c, c-parse.in, dbxout.c, - diagnostic.c, dwarf2out.c, expr.c, function.c, gimplify.c, - integrate.c, print-tree.c, stmt.c, tree.c, tree-cfg.c, - tree-dump.c, tree-flow-inline.h, config/alpha/alpha.c, - config/mips/mips.c: Adjust. - -2003-09-24 Andrew MacLeod - - * tree-ssa-ccp.c (enum latticevalue): Add UNINITIALIZED. - (const_values, struct value_map_d): Remove hash table structures. - (value_vector): New array of values. - (get_value): Use value_vector instead of hash table. Mark inline. - (visit_phi_node): Ignore arguments if the PHI result is already VARYING. - (initialize): Initialize value vector instead of hash table. - (finalize): Free value vector instead of hash table. - (add_var_to_ssa_edges_worklist): Don't add to worklist if - DONT_SIMULATE_AGAIN flag is set. - (value_map_hash, value_map_eq): Delete. - -2003-09-24 Jeff Law - - * tree-ssa-dom.c (optimize_block): Create infrastructure for - tracking const_and_copies equivalences which disappear when - we leave the current block. Use it for equivalences created - by EQ_EXPR_VALUE. Follow use-def chains for EQ_EXPR_VALUE - equivalences and see if certain NOP_EXPRs can be ignored - to create a block-local equivalence for const_and_copies. - (optimize_stmt): Do not get confused by a cast of the return - value from alloca or the address of a non-weak decl. - - * fold-const.c (fold_read_from_constant_string): New function. - * tree.h (fold_read_from_constant_string): Prototype. - * expr.c (expand_expr, case INDIRECT_REF): Use it. - (expand_expr, case ARRAY_REF): Likewise. Put checking code - inside an ENABLE_CHECKING. - * tree-ssa-ccp.c (fold_stmt): Use fold_read_from_constant_string. - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Likewise. - -2003-09-23 Jeff Law - - * tree-ssa-dom.c (optimize_block): Ignore "useless" type - conversions in SWITCH_COND when creating equivalenecs at - case labels. - -2003-09-22 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Addresses of non-weak symbols - as well as dynamically allocated stack space are always nonzero. - - * tree-cfg.c (handle_switch_split): Properly mark the fallthru - edge from SRC to DEST with EDGE_FALLTHRU. - -2003-09-22 Daniel Berlin - - * tree-flow.h (struct bb_ann_d): Add erefs array. - * tree-ssa-pre.c (handle_bb_creation): Remove ei parameter. - Update caller. - (struct expr_info): Remove erefs array. - (append_eref_to_block): New function. - (clear_all_eref_arrays): Ditto. - (expr_phi_insertion): Use append_eref_to_block. - (insert_occ_in_preorder_dt_order_1): Ditto. - (subst_phis): Only copy expression, not the containing EUSE/EPHI. - Update all callers to reflect this. - (compute_will_be_avail): Update for per-block eref array. - (handle_bb_creation): Ditto. - (pre_expression): Ditto. - (tree_perform_ssapre): Clear eref arrays when done with expression. - -2003-09-22 Diego Novillo - - * tree-cfg.c (dump_tree_bb): Remove superlfuous newlines. - -2003-09-21 Diego Novillo - - * tree-dfa.c (compute_alias_sets): Use TDI_alias instead of - TDI_ssa. - * tree-dump.c (dump_files): Add enties for TDI_alias, TDI_ssa1, - TDI_dom1, TDI_ssa2, TDI_dce1, TDI_ssa3, TDI_dom2, TDI_ssa4, - TDI_ssa5 and TDI_dce2. - Remove entries for TDI_ssa, TDI_dom and TDI_dce. - * tree.h (enum tree_dump_index): Similarly. - (TDF_ALIAS): Remove. - (TDF_VOPS): Change value. - * doc/invoke.texi (-fdump-tree-alias): Document. - * tree-flow.h (tree_warn_uninitialized): Remove unused variable. - (rewrite_into_ssa): Add enum tree_dump_index argument. Update all - callers. - (rewrite_out_of_ssa): Likewise. - (tree_perform_ssa_pre): Likewise. - (tree_ssa_dominator_optimize): Likewise. - (tree_ssa_dce): Likewise. - (tree_ssa_copyprop): Likewise. - (tree_ssa_ccp): Likewise. - Add sbitmap argument. - (tree_compute_must_alias): Likewise. - (mark_new_vars_to_rename): Declare. - * tree-must-alias.c (tree_compute_must_alias): Do not call - rewrite_into_ssa. - Remove local vars_to_rename. Use new argument instead. - * tree-optimize.c (optimize_function_tree): Re-write optimization - ordering to support passes that need the SSA form updated. - Call tree_ssa_dominator_optimize. - Re-arrange optimization ordering. - * tree-ssa-ccp.c (substitute_and_fold): Take new argument - vars_to_rename. - Call mark_new_vars_to_rename. - (visit_phi_node): Move variable 'val' into the right scope. - (initialize): Move call dump_begin ... - (tree_ssa_ccp): ... here. - * tree-ssa-dom.c (mark_new_vars_to_rename): Declare extern. - Make sure that variables in virtual operands aren't marked - unnecessarily. - * tree-ssa.c (rewrite_into_ssa): Do not call - tree_ssa_dominator_optimize. - -2003-09-21 Diego Novillo - - * tree-ssa-dce.c (dom_info): Remove unused variable. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): If the CFG has been - altered, call cleanup_tree_cfg. - Call cleanup_tree_cfg before returning. - * tree-ssa-pre.c (tree_perform_ssapre): Call get_stmt_operands - before processing the statement. - * tree-ssa-dom.c (thread_edge): Remove attribute EDGE_FALLTHRU from - edge. - -2003-09-21 Jeff Law - - * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Break out of - optimize_stmt. Follow the def-use chains back for certain expressions - to see if we can simplify the RHS of the current expression based - on earlier expressions. - - * tree-ssa-dom.c (optimize_block): Rework code to propagate values - into PHI nodes to be more efficient. - -2003-09-20 Andrew MacLeod - - * tree-flow.h (struct dataflow_d): Remove reaching fields, add 2 element - vector of trees. - * tree-flow-inline.h (immediate_uses): Rename to get_immediate_uses, - return a dataflow object. - (reaching_defs): Remove until needed. - (num_immediate_uses): New. Return number of immediate uses. - (immediate_use): New. Return a specified immediate use. - * tree-dfa.c (add_immediate_use): Use new fields. - (dump_immediate_uses_for): Use new interface. - (create_phi_node): Chain to start of list. - * tree-ssa-ccp.c (add_var_to_ssa_edges_worklist): Use new interface. - * tree-ssa.c (compute_global_livein): Loop interchange. - -2003-09-18 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Allow optimizing the RHS of a - MODIFY_EXPR even if we can't record any equivalences created by - the MODIFY_EXPR. Move code to simplify ABS_EXPR, TRUNC_DIV_EXPR - and TRUNC_MOD_EXPR to an earlier position. - -2003-09-19 Andrew MacLeod - - * tree-ssa-ccp.c (cfg_edges): Rename to cfg_blocks. - (cfg_blocks_num, cfg_blocks_head, cfg_blocks_tail): New. Queue markers. - (bb_in_list): New. Vector indicating if a BB is in the cfg_blocks list. - (tree_ssa_ccp): Use new routines. - (add_control_edge): Add to cfg_blocks list. - (initialize): Initialize new variables. - (finalize): Free allocations. - (cfg_blocks_empty): New. Is cfg_blocks queue list. - (cfg_blocks_add): New. Add a basic block to cfg_blocks list. - (cfg_blocks_pop): New. Get a basic_block from the list. - -2003-09-18 Richard Henderson - - * tree-cfg.c (struct rusv_data): Add may_throw, may_branch. - (remove_useless_stmts_and_vars_1): Set them. - (remove_useless_stmts_and_vars_goto): Likewise. - (remove_useless_stmts_and_vars_tf): Transform to compound_expr - if only fallthrough. - (remove_useless_stmts_and_vars_tc): Kill region if nothrow. - Detect catch regions that don't propagate exceptions. - (remove_useless_stmts_and_vars): Zero entire data struct. - -2003-09-18 Richard Henderson - - * tree-eh.c (lower_try_finally_dup_block): New. - (honor_protect_cleanup_actions, lower_try_finally_copy): Use it. - -2003-09-18 Richard Henderson - - * tree-cfg (remove_useless_stmts_and_vars_cond, - remove_useless_stmts_and_vars_tf, - remove_useless_stmts_and_vars_tc, - remove_useless_stmts_and_vars_bind, - remove_useless_stmts_and_vars_goto): Break out of ... - (remove_useless_stmts_and_vars_1): ... here. Rename to _1; - take and use struct rusv_data. - (remove_useless_stmts_and_vars): New. Loop until no change. - * tree-flow.h (remove_useless_stmts_and_vars): Update decl. - * tree-ssa.c (rewrite_out_of_ssa): Don't loop here. - -2003-09-18 Richard Henderson - - * tree-pretty-print.c (dump_generic_node): Don't double indent asms. - -2003-09-18 Richard Henderson - - * tree-eh.c: Include langhooks.h, remove errors.h. - (decide_copy_try_finally): Use estimate_num_insns to choose - between copy and switch implementations. - - * c-common.c (c_estimate_num_insns): Take an expr, not a decl. - * tree-inline.c (limits_allow_inlining): Pass it the body of the decl. - -2003-09-18 Jeff Law - - * tree-ssa-dom.c (lookup_avail_expr): New argument which indicates - if the expression should be entered into the hash table. All - callers updated. - (update_rhs_and_lookup_avail_expr): New function factored out - of optimize_stmt. - - * tree.h (commutative_tree_code, associative_tree_code): Declare - * tree.c (commutative_tree_code, associative_tree_code): New - functions. - (iterative_hash_expr): Use commutative_tree_code. - * fold-const.c (operand_equal_p): Use commutative_tree_code - rather than inlining the communitivy check. - (fold, nondestructive_fold_binary_to_constant): Similarly. - -2003-09-18 Diego Novillo - - * Makefile.in (tree-eh.o): Add dependency on errors.h - * tree-eh.c: Include errors.h - -2003-09-17 Richard Henderson - - * tree-cfg.c (remove_useless_stmts_and_vars): Revert last change. - * tree-flow.h, tree-ssa.c: Likewise. - -2003-09-17 Richard Henderson - - * tree-eh.c (decide_copy_try_finally): Remove forgotten debug code. - -2003-09-17 Daniel Berlin - - * tree-ssa-pre.c (pick_ssa_name): New function. - (code_motion): Use it. - -2003-09-17 Richard Henderson - - * tree-eh.c: New file. - * Makefile.in (OBJS-common): Add it. - (tree-eh.o): New. - * calls.c (emit_call_1): New argument for full call expr. - Check with lookup_stmt_eh_region to set REG_EH_REGION. - (expand_call): Likewise for tail-calls. - * except.c (struct eh_region): Add tree_label. - (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. - * expr.c (expand_expr): Handle RESX_EXPR, FILTER_EXPR. - * gimplify.c (gimplify_modify_expr): Use tree_could_trap_p. - * stmt.c (using_eh_for_cleanups_p): Export. - (expand_return): Allow any typed rhs. - * timevar.def (TV_TREE_EH): New. - * tree-cfg.c (eh_stack): Kill. - (build_tree_cfg): Don't set it. Kill code to handle EH. - (could_trap_p): Move to tree-eh.c as tree_could_trap_p. - (get_eh_region_type, make_try_expr_blocks, make_catch_expr_blocks, - make_eh_filter_expr_blocks, try_finallys): Kill. - (make_edges): Kill code to handle EH. - (make_ctrl_stmt_edges): Kill TRY_FINALLY_EXPR, CATCH_EXPR, - EH_FILTER_EXPR. Handle RESX_EXPR. - (make_call_expr_edges): Kill. - (make_exit_edges): Use make_eh_edges. - (label_to_block): New. - (make_goto_expr_edges): Use it. - (is_ctrl_stmt): Add RESX_EXPR. - (is_ctrl_altering_stmt): Restructure. Use tree_can_throw_internal. - (last_exec_block, compute_reachable_eh): Kill. - * tree-dfa.c (get_stmt_operands): Add RESX_EXPR. - (get_expr_operands): Add FILTER_EXPR. - * tree-dump.c (dump_files): Add tree-eh. - * tree-flow.h (struct stmt_ann_d): Kill reachable_exception_handlers. - (label_to_block, lower_eh_constructs, make_eh_edges, - tree_could_trap_p, tree_could_throw_p, tree_can_throw_internal, - tree_can_throw_external): Declare. - * tree-optimize.c (optimize_function_tree): Call lower_eh_constructs. - (tree_rest_of_compilation): Save tree for inlining. - * tree-pretty-print.c (dump_generic_node): Handle FILTER_EXPR, - RESX_EXPR. - * tree-simple.c (is_gimple_stmt): Add RESX_EXPR. - (is_gimple_val): Add FILTER_EXPR. - * tree-ssa-dce.c (stmt_useful_p): Restructure. Add lhs of - EXC_PTR_EXPR or FILTER_EXPR. - * tree.def (FILTER_EXPR, RESX_EXPR): New. - * tree.h (enum tree_dump_index): Add TDI_eh. - -2003-09-17 Richard Henderson - - * tree.c (tsi_link_before): Remove unnecessary parens. - (tsi_link_chain_before, tsi_delink): Likewise. - (tsi_link_after): Accept the case if the iterator points - to a NULL node; treat it as an empty list. - (tsi_link_chain_after): Likewise. Update iterator properly - for TSI_CHAIN_END. - -2003-09-17 Richard Henderson - - * tree-inline.c (debug_find_tree_1, debug_find_tree): New. - -2003-09-17 Richard Henderson - - * tree-cfg.c (struct rusv_data): New. - (remove_useless_stmts_and_vars_1): Rename from - remove_useless_stmts_and_vars. Use rusv_data. Handle goto-next - via remembering the last goto seen, and zapping it when appropriate. - (remove_useless_stmts_and_vars): New. Loop until done. - * tree-flow.h (remove_useless_stmts_and_vars): Update decl. - * tree-optimize.c (optimize_function_tree): Don't cache fnbody. - Dump data after remove_useless_stmts_and_vars. - * tree-ssa.c (rewrite_out_of_ssa): Kill loop around - remove_useless_stmts_and_vars. - * tree-dump.c (dump_files): Add .useless. - * tree.h (enum tree_dump_index): Add TDI_useless. - -2003-09-17 Diego Novillo - - * pretty-print.c (pp_write_text_to_stream): Export. - * pretty-print.h (pp_write_text_to_stream): Declare. - * tree-pretty-print.c (print_generic_stmt): Flush to file. - (dump_generic_node): Call pp_write_text_to_stream. - (maybe_init_pretty_print): Take file argument; associate the - stream with the buffer. - -2003-09-17 Jeff Law - - * tree-ssa-ccp.c (ccp_fold): If the return value has the wrong - type, try to convert it to the proper type rather than failing. - - * tree-ssa-dom.c (optimize_stmt): Note that the statement is - modified, even if we just change the virtual operands. If - the statement was modified by const/copy propagation, then - set may_have_exposed_new_symbols. - -2003-09-17 Diego Novillo - - * tree-dfa.c (find_vars_r): Do not consider 'void *' pointers as - dereferenced when scanning function call arguments. - * tree-flow-inline.h (may_propagate_copy): Block propagation of - pointers when they have different memory tags. - * tree-ssa-copyprop.c (propagate_copy): When copy propagating - pointers, abort if the two pointers don't have identical memory - tags. - -2003-09-16 Jeff Law - - * tree-ssa-ccp.c (visit_stmt): Do not set DONT_SIMULATE_AGAIN - just because a statement as virtual definitions. - (likely_value): A CALL_EXPR is assumed to return a VARYING - result, regardless of its operands. - -2003-09-15 Jason Merrill - - * tree-simple.c (is_gimple_val): Allow addresses of all decls. - (is_gimple_const): Allow addresses of all non-weak statics. - * tree-ssa-ccp.c (fold_stmt): Return bool. - * tree-flow.h: Adjust prototype. - * tree-ssa-dom.c (optimize_stmt): If folding changed stuff, we - need to recalculate the vops. - -2003-09-13 Diego Novillo - - Fix PR optimization/12268 - * tree-dfa.c (add_referenced_var): Call-clobbered pointers may - point to global memory. - -2003-09-13 Jason Merrill - - * c-common.c (c_apply_type_quals_to_decl): Unset TREE_READONLY for - types with constructors. - Remove superfluous references to TREE_TYPE (decl). - -2003-09-13 Diego Novillo - - * opts.c (decode_options): Enable must-alias optimization by default. - * tree-dfa.c (get_expr_operands): Always call add_stmt_operand when - dealing with ADDR_EXPR nodes. - (add_stmt_operand): If the variable has an alias set - of size zero, abort. - Call get_base_symbol() to retrieve the variable from an ADDR_EXPR - node. - (compute_alias_sets): Deep copy the aliases array when triggering - the alias grouping heuristic. - Don't group aliases if -ftree-must-alias is given. - * tree-must-alias.c (tree_compute_must_alias): Call - dump_referenced_vars when doing detailed dumps. - Rename promoted_vars to vars_to_rename. Update all users. - (find_addressable_vars): Always mark statements modified. - (promote_var): Also mark aliases of promoted variable to be - renamed. - Call find_variable_in and remove_element_from to update varrays for - call-clobbered variables and alias sets. - (find_variable_in): New local function. - (remove_element_from): New local function. - * varray.c (varray_copy): New function. - * varray.h (varray_copy): Declare. - -2003-09-13 Diego Novillo - - * tree-flow-inline.h (is_optimizable_addr_expr): Remove. Update - all users. - * tree-ssa-dom.c (optimize_stmt): Do not propagate SSA names from - redundant expressions across abnormal edges. - -2003-09-13 Zdenek Dvorak - - * tree-cfg.c (remove_unreachable_blocks): Clean up. - (debug_tree_bb_n): New. - (is_ctrl_structure): Remove LOOP_EXPR. - * tree-flow.h (debug_tree_bb_n): Declare. - -2003-09-12 Andrew Macleod - - * tree-ssa-live.c (calculate_live_on_entry): Use default_def to add - addition checks to live on entry calculations. - * tree-ssa.c (print_exprs_edge): New debug output function. - (coalesce_abnormal_edges): Add basic block information to output. - (coalesce_ssa_name): Use default_def instead of trying to compute live - on entry variables. - -2003-09-12 Diego Novillo - - * tree-optimize.c (tree_rest_of_compilation): Set TREE_ASM_WRITTEN - for functions that have errors. - -2003-09-12 Diego Novillo - - * tree-ssa-pre.c (graph_dump_file, graph_dump_flags): Remove - unused variables. - -2003-09-11 Daniel Berlin - - * tree-ssa-pre.c (reset_down_safe): Make test less conservative. - (cba_search_start_from): Start from abnormal edge arguments, too. - (cba_search_continue_from_to): Ditto here. - -2003-09-11 Daniel Berlin - - * tree-ssa-pre.c: s/#if ENABLE_CHECKING/#ifdef ENABLE_CHECKING/g. - Add more comments to DFS searching functions. - (cba_search_reach_from_to): Remove empty function. - (code_motion): Remove #if 0'd code. - (pre_expression): Ditto. - * tree.h (tree_dump_index): Remove TDI_predot. - * tree-dump.c (dump_files): Ditto. - -2003-09-11 Jason Merrill - - Make EDGE_FALLTHRU meaningful for tree-cfg. - * tree-cfg.c (make_edges): Set EDGE_FALLTHRU on fallthrough edge. - (make_exit_edges): Likewise. - (make_ctrl_stmt_edges): Don't set EDGE_FALLTHRU on edges into a - control structure. - (handle_switch_fallthru): Clear EDGE_FALLTHRU after inserting a goto. - (find_insert_location): Only insert after a CALL_EXPR or MODIFY_EXPR. - (bsi_insert_on_edge_immediate): Count outgoing abnormal edges. - Insert before all control stmts. - (bsi_link_after): Handle a block with nops after the last stmt. - - Rename some things to clarify difference between "control structures" - (i.e. COND_EXPR) and "control statements" (also GOTO_EXPR). - * basic-block.h (BB_CONTROL_STRUCTURE): Rename from BB_CONTROL_EXPR. - * tree-cfg.c (REMOVE_NON_CONTROL_STRUCTS): Rename from - REMOVE_NON_CONTROL_STMTS. - (REMOVE_CONTROL_STRUCTS): Rename from REMOVE_CONTROL_STMTS. - (make_ctrl_stmt_edges): Move GOTO_EXPR/RETURN_EXPR handling here... - (make_exit_edges): ...from here. - (is_ctrl_altering_stmt): Don't accept GOTO_EXPR/RETURN_EXPR. - (is_ctrl_structure): Renamed from old is_ctrl_stmt. - (is_ctrl_stmt): New fn. - (bsi_move_to_bb_end): Use it. - (stmt_starts_bb_p): Use is_ctrl_stmt and is_ctrl_altering_stmt. - * tree-flow.h: Add prototype. - * tree-ssa-ccp.c, tree-ssa-dom.c: Update for name changes. - -2003-09-10 Daniel Berlin - - * tree-ssa-pre.c (ephi_has_bottom): Remove dead function. - (ephi_has_unsafe_arg): New function. - (compute_down_safety): Use it. - (reset_down_safe): Continue search on abnormal edges, too. - -2003-09-10 Jason Merrill - - * gimplify.c (gimplify_asm_expr): Add post_p parm. - (get_initialized_tmp_var): Add post_p parm. - (internal_get_tmp_var): Likewise. - (gimplify_expr, get_formal_tmp_var): Pass it. - * c-simplify.c (gimplify_decl_stmt): Pass it. - * tree-simple.h: Adjust prototype. - - * tree-cfg.c (make_call_expr_edges): Break out from... - (make_exit_edges): ...here. Check TREE_NOTHROW. - (is_ctrl_altering_stmt): Check TREE_NOTHROW. - -2003-09-10 Paul Brook - - * gimplify.c (gimplify_compound_lval): Treat REALPART_EXPR and - IMAGPART_EXPR the same as COMPONENT_REF. - * tree-simple.c (is_gimple_addr_expr_arg): Ditto. - (is_gimple_lvalue): Remove REALPART_EXPR and IMAGPART_EXPR. - -2003-09-10 Diego Novillo - - * c-pretty-print.c (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. - -2003-09-10 Diego Novillo - - * tree-pretty-print.c (dump_generic_node): Change string used to - display _DECL nodes with no DECL_NAME. - -2003-09-10 Diego Novillo - - * tree-dfa.c (add_referenced_var): Handle cases when argument - walk_state is NULL. - (add_referenced_tmp_var): New function. - * tree-flow.h (add_referenced_tmp_var): Declare it. - * tree-ssa-pre.c (pre_expression): Call it. - * tree-ssa-live.c (create_ssa_var_map): Add checking for variables - being in real and virtual operands. - -2003-09-01 Zdenek Dvorak - Jeff Law - - * tree-flow.h (remove_unreachable_blocks): Declare. - * tree-cfg.c (remove_unreachable_blocks): Export. Return true - if blocks were removed. - * tree-ssa-dom.c (optimize_block, optimize_stmt): Record whether - the cfg has changed. Schedule jump threading. If a block - has more than one pred, then do not record equivalences created - by a controlling COND_EXPR. - (edges_to_redirect, redirection_targets): New variables. - (thread_edge): Split out of optimize_block. - (tree_ssa_dominator_optimize); Remove unreachable blocks and - recompute dominator tree when the cfg changes. - -2003-09-07 Steven Bosscher - - * c-tree.h: Don't declare c_genericize, it's already - declared in c-common.h. - -2003-09-07 Steven Bosscher - - Fix PR optimization/12198 - * tree-cfg.c (value_matches_some_label): Handle integer - case ranges. - -2003-09-06 Zdenek Dvorak - - * tree-iterator.h (tsi_iterator_update): Added TSI_CHAIN_START, - TSI_CHAIN_END, TSI_CONTINUE_LINKING and comments. - (tsi_link_chain_before, tsi_link_chain_after): Declare. - * tree.c (tsi_link_chain_before, tsi_link_chain_after): New. - (tsi_link_before, tsi_link_after): Handle new TSI_... - positions. - -2003-09-06 Diego Novillo - - * varray.c (element): Add entry for 'tree *'. - * varray.h (enum varray_data_enum): Add VARRAY_DATA_TREE_PTR. - (union varray_data_tag): Add entry for 'tree *'. - (VARRAY_TREE_PTR_INIT): Define. - (VARRAY_TREE_PTR): Define. - (VARRAY_PUSH_TREE_PTR): Define. - (VARRAY_TOP_TREE_PTR): Define. - * tree-cfg.c: Replace uses of VARRAY_GENERIC_PTR with - VARRAY_TREE_PTR when accessing operand arrays. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-copyprop.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-dom.c: Likewise. - * tree-ssa-live.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-dfa.c: Likewise. - * tree-ssa.c: Likewise. - * tree-flow.h (struct operands_d): Remove 'skip' GC markers from - all fields. - (struct dataflow_d): Likewise. - -2003-09-05 Diego Novillo - - * tree-dfa.c (find_referenced_vars): Re-enable .GLOBAL_VAR - optimization. - -2003-09-05 Daniel Berlin - - * tree.h (tree_eref_common): Make stmt a tree, not a tree *. - * tree-ssa-pre.c: Transform all tree *'s to tree. - -2003-09-05 Paul Brook - - * tree.h (enum tree_index): Delete TI_SIGNED_SIZE_TYPE here. - (signed_size_type_node): No longer a member of global_trees. - * c-common.h (enum c_tree_index): New member CTI_SIGNED_SIZE_TYPE. - (signed_size_type_node): Moved, now a member of c_global_trees. - -2003-09-05 Diego Novillo - - * tree-dfa.c (find_referenced_vars): Temporarily disable - .GLOBAL_VAR optimization. - -2003-09-04 Daniel Berlin - - * tree-alias-common.c: Add overview. - * tree-alias-ander.c: Add overview and more specific comments on what - each function does. - -2003-09-04 Diego Novillo - - * tree-optimize.c (tree_rest_of_compilation): Return if errorcount - or sorrycount are non-zero. - -2003-09-04 Diego Novillo - - * tree-cfg.c (cleanup_tree_cfg): Traverse basic blocks - with FOR_EACH_BB. - (remove_useless_stmts_and_vars): Likewise. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise. - * tree-ssa.c (rewrite_into_ssa): Likewise. - * tree-dfa.c (remove_all_phi_nodes_for): Make sure that the new - list of PHI nodes is NULL-terminated. - Add sanity checks to make sure all the PHI nodes for variables to - rename are gone. - -2003-09-04 Diego Novillo - - * tree-dfa.c (struct walk_state): Add field 'num_calls'. - (add_call_clobber_ops): New local function. - (add_call_read_ops): New local function. - (get_expr_operands): Call them. - (add_stmt_operand): Call-clobbered variables are always added to - virtual operands. - (find_referenced_vars): If the number of call-clobbered variables - and number of call sites is larger than a certain threshold, group - all call-clobbered variables under .GLOBAL_VAR. - (find_vars_r): Count the number of call sites. - Don't add .GLOBAL_VAR to the list of referenced variables. - (add_referenced_var): If the addressable variable is an array, - register alias set of the type of the elements, not the type of the - array. - * tree-ssa-dom.c (mark_new_vars_to_rename): Rename from - find_new_vars_to_rename. Update all users. - Before scanning the statement for new operands, mark the existing - virtual operands to be renamed again. - (optimize_stmt): Also check for newly exposed variables when doing - redundancy elimination. - * tree-ssa.c (rewrite_into_ssa): Don't abort when rename_count is - greater than 2. Simply stop trying at 3. - (prepare_operand_for_rename): New function. - (mark_def_sites): Call it. - (rewrite_stmt): Don't check if the operand is an SSA_NAME before - calling rewrite_operand. - (rewrite_operand): Don't abort if the operand was already an - SSA_NAME. Ignore it. - -2003-09-03 Richard Henderson - - * tree-optimize.c (set_save_expr_context, clear_decl_rtl, - tree_rest_of_compilation): Merge from mainline new file. - * Makefile.in (tree-optimize.o): Update. - * c-semantics.c (expand_stmt_toplev): New. - * c-common.h (expand_stmt_toplev): Declare. - * c-lang.c, objc/objc-lang.c (LANG_HOOKS_RTL_EXPAND_STMT): Use it. - -2003-09-03 Richard Henderson - - * gimplify.c (gimplify_switch_expr): Leave the outermost cast - as part of the switch condition. - -2003-09-02 Diego Novillo - - * Makefile.in (tree.o): Add dependency on $(BASIC_BLOCK_H) and - $(TREE_FLOW_H) - * tree.c: Include basic-block.h and tree-flow.h - (tsi_link_after): Adjust basic block tree pointers when inserting a - new COMPOUND_EXPR. - -2003-09-02 Richard Henderson - - * c-decl.c (finish_function): Fix misapplied patch. Don't - free_after_parsing or free_after_compilation. For real this time. - -2003-09-01 Daniel Berlin - - * tree-ssa-pre.c (finalize_1): Remove unnecessary call to - insert_euse_in_preorder_dt_order. - (code_motion): Ditto. - (pre_expression): Ditto. - -2003-09-01 Zdenek Dvorak - Jeff Law - - * basic-block.h (BB_LOOP_CONTROL_EXPR): Remove. - * c-simplify.c (gimplify_c_loop): Create loops in a better shape. - * cfgloop.h (create_loop_notes): Declare. - * cfgloopmanip.c (create_loop_notes): New. - * explow.c (probe_stack_range): Don't produce loop notes when we - recreate them. - * expr.c (emit_block_move_via_loop): Ditto. - * gimplify.c (build_and_jump): Export. - (gimplify_loop_expr): Don't produce LOOP_EXPRs. - * toplev.c (rest_of_compilation): Recreate loop notes if needed. - * tree-cfg.c (make_loop_expr_edges, make_loop_expr_blocks): Removed. - (find_contained_blocks, make_ctrl_stmt_edges, - remove_useless_stmts_and_vars, stmt_ends_bb_p, bsi_insert_before, - find_insert_location, bsi_insert_on_edge_immediate, - merge_tree_blocks): Remove handling of LOOP_EXPRs. - (remove_stmt): Remove handling of BB_LOOP_CONTROL_EXPR. - (find_taken_edge): Remove comment on LOOP_EXPRs. - (dump_tree_bb): Don't dump loop-related information. - (is_loop_stmt, is_latch_block_for): Removed. - (find_insert_location): Handle TRY_CATCH and TRY_FINALLY. - * tree-flow.h (is_loop_stmt, loop_body, set_loop_body, - is_latch_block_for): Removed. - * tree-dfa.c (get_stmt_operands): Don't handle LOOP_EXPRs. - * tree-simple.c (is_gimple_stmt): Remove handling of LOOP_EXPRs. - * tree-simple.h: Remove LOOP_EXPRs from gimple grammar comment. - (build_and_jump): Declare. - * tree-ssa.c (remove_annotations_r): Don't handle LOOP_EXPRs. - -2003-08-29 Daniel Berlin - - * opts.c (decode_options): Turn on SSAPRE by default. - -2003-08-29 Jason Merrill - - * builtins.c (simplify_builtin): Make sure that the replacement - has the same type as the original expression. - (simplify_builtin_strpbrk): Fix type of COMPOUND_EXPR. - (simplify_builtin_strncpy, simplify_builtin_memcmp): Likewise. - (simplify_builtin_strncmp, simplify_builtin_strncat): Likewise. - (simplify_builtin_strspn, simplify_builtin_strcspn): Likewise. - (simplify_builtin_fputs, simplify_builtin_sprintf): Likewise. - -2003-08-28 Zdenek Dvorak - - * builtins.c (expand_builtin): Expand BUILT_IN_STACK_SAVE and - BUILT_IN_STACK_RESTORE. - * builtins.def (BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE): New. - * gimplify.c (build_stack_save_restore): New functions. - (struct gimplify_ctx): New field save_stack. - (gimplify_bind_expr, gimplify_call_expr): Arrange save of stack on - BIND_EXPR entry and restore on exits. - * stmt.c (expand_stack_alloc): Saving of stack removed. - (expand_stack_save, expand_stack_restore): New. - * tree.h (expand_stack_save, expand_stack_restore): Declare. - -2003-08-28 Diego Novillo - - * tree-dfa.c (add_vdef): Check for duplicate voperands first. - Handle SSA_NAME in voperands. - (add_vuse): Likewise. - -2003-08-27 Diego Novillo - - * tree-flow.h (var_ann_d): Convert is_in_va_arg_expr into a - bitfield. - -2003-08-27 Daniel Berlin - - * tree-ssa-pre.c: Update comments to reflect reality. - (insert_one_operand): Remove #if'0d code. - -2003-08-27 Zdenek Dvorak - - * gcov.c (typedef struct arc_info): New field cs_count. - (accumulate_line_counts): Find cycles correctly. - -2003-08-27 Daniel Berlin - - * tree-ssa-pre.c (compute_du_info): Move #if ENABLE_CHECKING up one - line. - -2003-08-27 Daniel Berlin - - * tree.h (struct ephi_arg_d): New structure. - (struct eref_common): Remove non-used members, move some members - elsewhere. - (struct ephi_node): Ditto. - - * tree-optimize.c (optimize_function_tree): Move PRE before DCE. - - * tree.c (tree_size): use sizeof (struct ephi_arg_d) for ephi's. - - * tree-pretty-print.c (dump_generic_node): Re-teach to pretty - print euses/ephis/etc given new structures, members, and - relationships. - - * tree-ssa-pre.c (fixup_domchildren): Removed. - (a_dom_b): Ditto. - (calculate_preorder): Ditto. - (defs_match_p): Ditto. - (defs_y_dom_x): Ditto. - (compute_can_be_avail): Ditto. - (reset_can_be_avail): Ditto. - (reset_later): Ditto. - (compute_later): Ditto. - (repair_*): Ditto. - (set_replacement): Ditto. - (remove_ephi): Ditto. - (set_expruse_def): Ditto. - (occ_compare): Ditto. - (defs_hash_expr): Ditto. - (compute_dt_preorder): Ditto - (search_dt_preorder): Ditto. - (ephi_operand_for_pred): Ditto. - (injured_ephi_operand): Ditto. - (compute_stops): New function. - (occ_identical_to): Ditto. - (require_phi): Ditto. - (do_ephi_df_search_1): Ditto. - (do_ephi_df_search): Ditto. - (any_operand_injured): Ditto. - (compute_du_info): Ditto. - (add_ephi_use): Ditto. - (insert_one_operand): Ditto. - (add_ephi_pred): Ditto. - (created_phi_preds): New bitmap. - (dfn) Removed static variable. - (idom_of_ephi): Ditto. - (avdefs): Move into expr_info). - (struct ephi_use_entry): New structure for EPHI uses. - (struct ephi_df_search): New structure for depth first searchs. - (cant_be_avail_search): Implementation of structure for - cant_be_avail search. - (stops_search): Ditto for stops. - (replacing_search): Ditto for replacing_search. - (do_proper_save): Arguments changed, callers updated. - (create_ephi_node): Use sizeof (struct ephi_arg_d). - (ephi_has_bottom): Rewrite for updated ephi-pred handling. - (ephi_will_be_avail): Rewrite in terms of CANT_BE_AVAIL and STOPS. - (expr_phi_insertion): Remove dead code. - Update for new flags. - (insert_occ_in_preorder_dt_order_1): Only insert one ephi-pred per - block. - Fix exit occurence handling. - (rename_1): Remove occs stuff. - Update for new ephi-pred handling. - (reset_down_safe): Update for new ephi-pred handling. - (compute_down_safe): Ditto. - (can_insert): Ditto. - (insert_one_operand): Split out from finalize_1. - (finalize_1): Update for new ephi-pred handling. - Only insert non-pointless, will-be-avail phis, rather than *all* - ephis. - (get_temp): New function. Hand us the right temporary for a given - EPHI/EUSE. - (code_motion): Use EREF_TEMP again, now that we can do it - properly. - -2003-08-26 Zdenek Dvorak - - * builtins.c (expand_builtin): Handle STACK_ALLOC. - * builtins.def (BUILT_IN_STACK_ALLOC): New. - * c-simplify.c (gimplify_decl_stmt, c_gimplify_stmt, - gimplify_compound_literal_expr): Arrange explicit stack allocation. - * expr.c (expand_expr): Handle deferred variables. - * stmt.c (expand_stack_alloc): New. - * tree-simple.c (is_gimple_val): Prevent ADDR_EXPRs of vla's from - being reduced. - * tree.h (expand_stack_alloc): Declare. - -2003-08-26 Zdenek Dvorak - - * tree-ssa.c (build_dominator_tree): Use FOR_EACH_BB. - -2003-08-26 Jason Merrill - - * tree-simple.c (is_gimple_val): Also disallow memory vars. - -2003-08-25 Zdenek Dvorak - - * integrate.c (copy_decl_for_inlining): Reset DECL_TOO_LATE. - -2003-08-25 Zdenek Dvorak - - * tree-ssa-dom.c (optimize_block): Handle empty source block. - - * tree-ssa-dom.c (optimize_block): Handle case when dominance - tree children have also other sucessors. Add dump to jump - threading. - -2003-08-25 Jason Merrill - - * c-simplify.c (mark_labels_r): New fn. - (gimplify_decl_stmt): Use it to mark labels in static initializers. - * tree-simple.c (is_gimple_initializer): Remove. - (is_gimple_reg_type): New fn. - (is_gimple_reg): Use it. Handle SSA_NAMEs properly. - * tree-simple.h: Adjust. - * gimplify.c (gimplify_expr) : Do nothing here. - - * gimplify.c (create_tmp_var): Set DECL_IGNORED_P. - - * tree-inline.c (initialize_inlined_parameters): Improve error - recovery. - - * gimplify.c (gimplify_boolean_expr): Just replace with a COND_EXPR. - -2003-08-25 Diego Novillo - - * tree-dfa.c (get_expr_operands): Don't create shared operands when - folding *&VAR expressions. - -2003-08-24 Diego Novillo - - * tree-flow.h (struct var_ann_d): Add field default_def. - (widen_bitfield): Declare. - (set_default_def): Declare. - (default_def): Declare. - * tree-flow-inline.h (set_default_def): New inline function. - (default_def): New inline function. - * tree-dfa.c (dump_variable): Display default_def, if set. - * tree-simple.c (is_gimple_reg): Check for DECL_P before checking - for DECL_EXTERNAL. - * tree-ssa-dom.c (add_expr_propagated_p): Remove. Update all - users. - (find_new_vars_to_rename): New local function. - (tree_ssa_dominator_optimize): Add new argument vars_to_rename. - Change return type to void. Update all users. - (optimize_block): Add new argument vars_to_rename. Update all - users. - If the call to optimize_stmt returns true, add the statement to the - list of statements to re-scan for operands. - After optimizing the block and its dominator children, call - find_new_vars_to_rename for every statement that may have had new - symbols exposed. - (optimize_stmt): Change return type to bool. Return true if the - statement may have had new symbols exposed by optimization. - Add a sanity check for the value returned by lookup_avail_expr. - Create equivalences for more memory stores, not just the ones done - via INDIRECT_REF expressions. - Call widen_bitfield when optimizing stores to bitfields. - (lookup_avail_expr): Reformat comment. - * tree-ssa.c (rewrite_into_ssa): Remove local variable - addr_expr_propagated_p. - Clear out vars_to_rename before running dominator optimizations. - (check_for_new_variables): Remove. - (rewrite_stmt): Always register new definitions and virtual - definitions. - (register_new_def): Update comment. - (get_reaching_def): Update the default_def field for the variable - if it didn't have a reaching definition. - * tree-ssa-ccp.c (widen_bitfield): Declare it extern. - -2003-08-23 Zdenek Dvorak - - * tree-cfg.c (bsi_next_in_bb): Work correctly when the block ends - with start of BIND_EXPR. - -2003-08-23 Daniel Berlin - - * tree-alias-ander.c (andersen_op_assign): Fix to join the operands, - the assign to the lhs. - -2003-08-23 Daniel Berlin - - * tree-alias-common.c (get_alias_var): Remove REFERENCE_EXPR. - (find_func_aliases): Fix some not quite right predicates, add ARRAY_REF - handling. - -2003-08-22 Jeff Law - - * tree-dfa.c (compute_alias_sets): A memory tag used for stores can - not conflict with objects marked TREE_READONLY. - - * tree-ssa-ccp.c (fold_stmt): Optimize reads from constant strings. - -2003-08-22 Jason Merrill - - * tree-simple.c: Total overhaul to only check forms and remove - unnecessary predicates. - (is_gimple_const): Accept function addresses here. - Don't accept LABEL_DECL or RESULT_DECL. - (is_gimple_val): Accept EXC_PTR_EXPR here. - (is_gimple_lvalue): Rename from is_gimple_modify_expr_lhs. - Accept BIT_FIELD_REF, REALPART_EXPR and IMAGPART_EXPR here. - (is_gimple_addr_expr_arg): Replace with former is_gimple_varname. - (is_gimple_constructor_elt): Just check for CONSTRUCTOR. - (is_gimple_initializer): Just hand off to is_gimple_rhs. - (is_gimple_rhs): Recognize most expressions here. - (is_gimple_variable): New fn. - (is_gimple_id): Use it. Now static. - (is_gimple_reg): New fn. - (is_gimple_cast): Replace with former is_gimple_cast_op. - (is_gimple_constructor, is_gimple_expr): Remove. - (is_gimple_modify_expr, is_gimple_relop): Remove. - (is_gimple_binary_expr, is_gimple_unary_expr): Remove. - (is_gimple_call_expr, is_gimple_arglist): Remove. - (is_gimple_compound_lval, is_gimple_arrayref): Remove. - (is_gimple_compref, is_gimple_exprseq): Remove. - (is_gimplifiable_builtin): Remove. - * tree-simple.h: Adjust. - * gimplify.c (gimplify_conversion): Break out from gimplify_expr. - (gimplify_expr): Use is_gimple_reg predicate to force a temp. - : Use gimplify_compound_lval. - : Likewise. - : Use is_gimple_reg predicate. - : Use new gimplify_minimax_expr. - : Reject. - (gimplify_tree_list, gimplify_component_ref): Remove. - (gimplify_compound_lval): Include REALPART_EXPR and IMAGPART_EXPR. - (gimplify_component_ref): Remove. - (gimplify_call_expr): Handle non-gimplifiable builtins and walking - the argument list here. - (gimplify_tree_list): Remove. - (gimplify_addr_expr): Use fb_either. - * tree-simple.h: Adjust. - * tree-alias-common.c (find_func_aliases): Update use of predicates. - -2003-08-21 Andrew Pinski - - * tree-ssa.c (tree_ssa_useless_type_conversion): Check also the - precision of the type to make sure they are really useless type - conversions. - -2003-08-21 Diego Novillo - - * tree-dump.c (dequeue_and_dump): Handle 'r' and 's' code classes. - -2003-08-21 Zdenek Dvorak - - * c-pretty-print.c (print_c_tree): Create new pp object. - -2003-08-21 Zdenek Dvorak - - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Don't free hash tables - before statistics are made from them. - * tree-ssa.c (rewrite_into_ssa): Ditto. - -2003-08-21 Jason Merrill - - * tree-inline.c (copy_body_r): Don't convert when stripping &*. - Fix thinko in stripping *&. - -2003-08-21 Diego Novillo - Zdenek Dvorak - - * tree-cfg.c (stmt_starts_bb_p): Nonlocal and computed GOTO targets - always start a new block. - -2003-08-20 Jason Merrill - - * tree-pretty-print.c (dump_generic_node): Just print "" - for the RESULT_DECL. - - * c-simplify.c (make_type_writable, mostly_copy_tree_r): Remove. - (deep_copy_list, deep_copy_node): Remove. - - * expr.c (expand_expr): Don't check for 'r' or 's' if we're - checking IS_EXPR_CODE_CLASS. - * tree-dfa.c (may_access_global_mem_p): Likewise. - * tree-browser.c (browse_tree): Likewise. - * tree-ssa-pre.c (defs_hash_expr): Likewise. - * gimplify.c (gimplify_expr): Likewise. - (internal_get_tmp_var): Only copy TREE_LOCUS from an expr. - (mostly_copy_tree_r): Ignore decls here. - -2003-08-20 Diego Novillo - - * c-pretty-print.c: Discard. Replace with same file from - mainline. Update all users. - (print_c_tree): New function. - * c-pretty-print.h (print_c_tree): Declare. - * tree-pretty-print.c: Update to use new pp_* primitives. - * c-simplify.c: Include c-pretty-print.h. - * Makefile.in (c-simplify.o): Add dependency on $(C_PRETTY_PRINT_H). - -2003-08-20 Roger Sayle - - * c-common.h (enum c_tree_index): Delete CTI_SIGNED_SIZE_TYPE. - (signed_size_type_node): No longer a member of c_global_trees. - * tree.h (enum tree_index): New member TI_SIGNED_SIZE_TYPE here. - (signed_size_type_node): Moved, now a member of global_trees. - -2003-08-20 Zdenek Dvorak - - * tree-ssa-dom.c (optimize_block): Thread jump into empty - block correctly. - - * tree-cfg.c (linearize_cond_expr): Don't merge blocks if the - later has other predecessors. - -2003-08-19 Jason Merrill - - * c-typeck.c (build_array_ref): Also build ARRAY_REFs from - INDIRECT_REFs of ARRAY_TYPE. - - * tree-ssa.c (tree_ssa_useless_type_conversion): Also strip - conversions between pointer and reference types. - - * tree-dfa.c (get_stmt_operands): Just mark non-GIMPLE statements - as unmodified. - (find_referenced_vars): So we don't need to mark them here. - - * tree-inline.c (inline_data): Add retvar field. - (declare_return_variable): Set it. - (remap_decls): Use it. - (expand_call_inline): Tweak. - -2003-08-19 Zdenek Dvorak - - * cfg.c (dump_edge_info): Add name for EDGE_LOOP_EXIT flag. - -2003-08-19 Zdenek Dvorak - - * tree-flow.h (struct var_ann_d): New field scope. - (struct stmt_ann_d): New field scope. - (propagate_copy): Declaration changed. - (fixup_var_scope): Declare. - * tree-cfg.c (make_blocks, make_cond_expr_blocks, - make_catch_expr_blocks, make_eh_filter_expr_blocks, - make_try_expr_blocks, make_loop_expr_blocks, make_switch_expr_blocks, - make_bind_expr_blocks, build_tree_cfg): Assign variables and statements - to scopes. - (assign_vars_to_scope): New. - * tree-ssa-copyprop.c (move_var_to_scope): New. - (copyprop_stmt): Pass scope of statement to propagate_copy. - (propagate_copy): Assign variable to the right bind_expr. - (fixup_var_scope): New. - * tree-ssa-dom.c (optimize_stmt): Pass scope of statement to - propagate_copy. - -2003-08-19 Daniel Berlin - - * tree-cfg (bsi_move_after): New function. - (bsi_move_before): New function. - (bsi_move_to_bb_end): New function. - * tree-flow.h: Prototype new functions. - -2003-08-18 Daniel Berlin - - * tree-alias-ander.c: Remove doxygen markers. - (eq_to_var): remove. - (simple_cmp): Add. - (throwaway_global): Add. - (andersen_same_points_to_set): Handle ignoring global var aliasing the - right way here. - (andersen_may_alias): Use list_member to avoid stupid hack. - * tree-alias-common.c: Remove hacks for disabling global var aliasing. - -2003-08-17 Zdenek Dvorak - - * tree.c (resize_phi_node): Initialize new entries. - -2003-08-17 Jeff Law - - * tree-pretty-print.c (last_bb): Actually record the basic block, - not just its index. - (maybe_init_pretty_print): Corresponding changes. - (dump_generic_node, dump_vops): Test the actual block pointers, not - their indices. - - * tree-ssa-dom.c (optimize_block): Use equivalences from the - dominator tree walk to thread through conditional jumps at leafs in - the dominator tree. - - * tree-cfg.c (blocks_unreachable_p, remove_blocks): Use a bitmap - rather than a varray. - (REMOVE_ALL_STMTS, REMOVE_NO_STMTS): New defines for remove_bb. - (REMOVE_NON_CONTROL_STMTS, REMOVE_CONTROL_STMTS): Likewise. - (remove_unreachable_block): Use find_contained_blocks rather - than find_subblocks. If we have a COND_EXPR or SWITCH_EXPR which - is unreachable, but which has reachable children clear out the - condition and request all non-control statements be removed - from the block. - (remove_bb): Allow better control over what (if any) statements - are removed. All callers updated. - (find_subblocks): Remove. - (find_contained_blocks): Handle statements with no associated - basic block. - -2003-08-15 Andrew Pinski - - * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Define - as the c gimplifier. - -2003-08-15 Jeff Law - - * tree-cfg.c (cleanup_tree_cfg): Wipe out the dominator tree - if the number of basic blocks changes as a result of cfg cleanups. - * tree-flow.h (build_dominator_tree): Prototype. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Build the dominator - tree if it is not already available. - * tree-ssa.c (build_dominator_tree): New function. - (rewrite_into_ssa): Use it. - - * gimplify.c (gimplify_expr, cases NOP_EXPR, CONVERT_EXPR): If a - COMPONENT_REF is wrapped with a NOP_EXPR, then force the type of - the COMPONENT_REF to match the accessed field. Strip away - unnecessary type conversions and handle the case where all type - conversions were removed. - (case ARRAY_REF, COMPONENT_REF): Indicate to gimplify_array_ref - and gimplify_component_ref if we want an lvalue or not. - (gimplify_array_ref, gimplify_component_ref): Pass new argument - WANT_LVALUE through to gimplify_compound_lval. - (gimplify_compound_lval): If we do not want an lvalue and the - toplevel COMPONENT_REF's type does not match its field's type, - then wrap the COMPONENT_REF in a NOP_EXPR and force the - COMPONENT_REF's type to match its field's type. - (gimplify_modify_expr): If the RHS is a CALL_EXPR and the LHS - is not a gimple temporary, then force the RHS through a gimple - temporary, even if the call can not throw. - (create_tmp_var): Make sure not to lose the type's attributes - for the new variable. - * tree-ssa.c (tree_ssa_useless_type_conversion): New function. - * tree-flow.h (tree_ssa_useless_type_conversion): Prototype. - * tree-ssa-dom.c (optimize_stmt): Use tree_ssa_useless_type_conversion. - - * tree-cfg.c (remove_useless_stmts_and_vars): Catch more - useless statements created during the out-of-ssa pass. - -2003-08-14 Jeff Law - - * tree-ssa-dom.c (optimize_block): Record equivalences created by - SWITCH_EXPRs. - - * tree-ssa-dom.c (optimize_stmt): Allow optimizing the RHS of - a RETURN_EXPR which contains an optimizable MODIFY_EXPR. - (lookup_avail_expr): Corresponding changes. - (avail_expr_hash, avail_expr_eq): Likewise. - - * tree-ssa-dom.c (optimize_stmt): Fix typo which prevented - stores with more than one VDEF from creating useful equivalences. - - * tree-dfa.c (get_expr_operands): Do not special case *0; - - * fold-const.c (fold, case INDIRECT_REF): Revert last change. - -2003-08-14 Diego Novillo - - * tree-cfg.c (bsi_insert_on_edge_immediate): Only update the - container for the head tree of the next block if the new statement - needs to be linked to it. - -2003-08-13 Jeff Law - - * fold-const.c (fold, case INDIRECT_REF): Optimize reads from - constant strings. - - * tree-cfg.c (remove_useless_stmts_and_vars): For a COND_EXPR - where the condition is a variable and the ELSE clause merely - sets that variable to zero, remove the ELSE clause. - - * tree-ssa-dom.c (optimize_stmt): Do not check the type of the - value returned by lookup_avail_expr. - -2003-08-13 Daniel Berlin - - * tree-cfg.c (remove_stmt): Add new argument saying whether to remove - annotations and invalidate defs. Update all callers - (remove_bsi_from_block): Moved from bsi_remove, argument added. - (bsi_remove): Made into wrapper for remove_bsi_from_block. - -2003-08-13 Zdenek Dvorak - - * tree-ssa-dom.c (optimize_stmt): Call get_stmt_operands. - -2003-08-12 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Record equivalences created - by memory stores. - -2003-08-12 Diego Novillo - - * tree-cfg.c (find_insert_location): Handle other control - statements that may be at the end of the block. - -2003-08-12 Zdenek Dvorak - - * Makefile.in (tree-pretty-print.o): Add tree-iterator.h dependency. - * tree-pretty-print.c: Include tree-iterator.h. - (dump_generic_node): Avoid recursing into COMPOUND_EXPRs. - -2003-08-12 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Optimize ABS_EXPR when we know - the sign of the source operand. - - * tree-ssa-dom.c (optimize_stmt): Rewrite TRUNC_DIV_EXPR and - TRUNC_MOD_EXPR even if the LHS is not an SSA variable. Do not - enter the new expression in the hash tables if !may_optimize_p. - Also try GE_EXPR to see if this transformation is safe. - - * tree-ssa-dom.c (optimize_stmt): Fix typo in last change which - prevented recording equivalences created by IOR_EXPR. - - * tree-ssa-dom.c (optimize_stmt): Record that the destination of - a MODIFY_EXPR nonzero if the RHS contains an IOR with a nonzero - constant. Turn DIV/MOD by a power of 2 into SHIFT/AND if we know - dividend is positive. - -2003-08-11 Jeff Law - - * fold-const.c (fold, cases NE_EXPR and EQ_EXPR): Fold equality - comparisons of non-weak symbol addresses against zero. - - * tree-ssa-ccp.c (fold_stmt): Strip unnecessary NOP_EXPRs from - the folded result. - - * gimplify.c (gimplify_expr, case INDIRECT_REF): Copy the base - object into a temporary if it's in static memory or is addressable. - -2003-08-11 Steven Bosscher - - * tree-alias-common.h (struct tree_alias_ops): Add a semicolon, fix - bootstrap. - -2003-08-10 Daniel Berlin - - * tree-dfa.c (compute_may_aliases): Move points-to initialization from - here. - (find_referenced_vars): To here. - (get_memory_tag_for): Use new same_points_to_set function. - - * tree-alias-common.h (struct tree_alias_ops): Remove doxygen markers. - Add same_points_to_set function to struct. - (same_points_to_set): New function. - - * tree-alias-common.c (we_created_global_var): A bit of magic to ignore - global var aliasing when we didn't create global var. This will go - away soon - (same_points_to_set): New function. - - * tree-alias-andersen.c (struct andersen_alias_ops): Add - andersen_same_points_to_set. - (andersen_same_points_to_set): New function. Return true if the two - variables have the same points-to set. - - * opts.c (common_handle_option): Add "none" as a points-to option. - -2003-08-10 Paul Brook - - * doc/install.texi: Mention --enable-languages=f95. - -2003-08-09 Daniel Berlin - - * tree-pretty-print.c (dump_vops): check bb->tree_annotations, not - bb->aux. - -2003-08-08 Daniel Berlin - - * tree-cfg.c (bsi_insert_on_edge_immediate): If there's only - one statement in the block, and it's an empty statement, replace it. - -2003-08-08 Jason Merrill - - * c-decl.c (c_expand_body_1): Restore support for - !keep_function_tree_in_gimple_form. - (finish_function, c_expand_deferred_function): Do TDI_inlined dump. - - * gimplify.c (voidify_wrapper_expr): Set TREE_SIDE_EFFECTS on the - wrapper if we insert a MODIFY_EXPR. - -2003-08-07 Diego Novillo - - * Makefile.in (GTFILES): Add tree-ssa.c, tree-dfa.c and - tree-ssa-ccp.c. - (gt-tree-ssa.h, gt-tree-dfa.h, gt-tree-ssa-ccp.h): Depend on - s-gtype. - * tree-dfa.c (struct clobber_data_d): Remove. Update all users. - (struct alias_map_d): Mark for garbage collection. - (struct walk_state): Add fields 'is_not_gimple' and - 'is_va_arg_expr'. - (clobber_vars_r): Remove. Update all users. - (get_stmt_operands): Abort if attempting to get operands from a - non-GIMPLE statement. - (get_expr_operands): Likewise. - Do not force a virtual operand when scanning VA_ARG_EXPR. - (add_stmt_operand): If the variable has hidden uses, mark the - statement as having volatile operands and return. - If the variable occurs inside a VA_ARG_EXPR, add it as a virtual - operand. - (add_immediate_use): Call VARRAY_TREE_INIT instead of - VARRAY_GENERIC_PTR_INIT. - (dump_variable): Check is_in_va_arg_expr flag. - (compute_may_aliases): Move code to find variables ... - (find_referenced_vars): ... here. - (find_vars_r): Abort if we find a non-GIMPLE expression - unexpectedly. - Mark variables found inside a VA_ARG_EXPR. - Do not scan arguments for non-GIMPLE CALL_EXPRs. - Remove local variable saved_is_store. - Reformat some code for readability. - (add_referenced_var): If the variable is already marked as having - hidden uses, ignore it. - If the variable is found inside a non-GIMPLE expression, mark it. - If the variable is found inside a VA_ARG_EXPR, mark it. - - * tree-flow.h (struct var_ann_d): Add field is_in_va_arg_expr. - (find_referenced_vars): Declare. - * tree-optimize.c (optimize_function_tree): Call - find_referenced_vars before computing may aliases. - - * tree-ssa-dce.c (need_to_preserve_store): Do not check if the - variable has hidden uses. - * tree-ssa-live.c (type_var_init): Likewise. - - * tree-ssa-ccp.c (ssa_edges): Mark for garbage collection. - (tree_ssa_ccp): Use VARRAY_.*_EDGE calls to manipulate the varray - of CFG edges. - (add_control_edge): Likewise. - (initialize): Likewise. - * tree-ssa.c (struct def_blocks_d): Mark for garbage collection. - (struct var_value_d): Likewise. - (def_blocks_free): Remove. Update all users. - (rewrite_into_ssa): Do not specify free function when creating - def_blocks and currdefs. - Call sbitmap_free instead of free. - (mark_def_sites): Call sbitmap_free instead of free. - (set_def_block): Use GC allocation. - (set_livein_block): Likewise. - (insert_phi_nodes): Adjust name of varray def_maps when creating it. - (insert_phis_for_deferred_variables): Remove call to BITMAP_XFREE. - (insert_phi_nodes_for): Use GC allocation for phi_insertion_points. - (init_tree_ssa): Remove typecast in call to memset. - (set_value_for): Use GC allocation. - (get_def_blocks_for): Remove typecast in call to htab_find. - * varray.c (element): Add entry for struct edge_def *. - * varray.h (enum varray_data_enum): Add VARRAY_DATA_EDGE. - (union varray_data_tag): Add field of type struct edge_def *. - (VARRAY_EDGE_INIT): Define. - (VARRAY_EDGE): Define. - (VARRAY_PUSH_EDGE): Define. - (VARRAY_TOP_EDGE): Define. - -2003-08-06 Diego Novillo - - * tree-cfg.c (handle_switch_fallthru): Do not abort when the last - statement of the case block needs to be the last statement of the - block. - (find_insert_location): Fix typo. - -2003-08-06 Steven Bosscher - - * tree-dfa.c (remove_phi_arg): When the PHI no longer has - arguments, don't remove it here, but do so... - (remove_phi_arg_num): ...from here. - -2003-08-05 Jason Merrill - - * gimplify.c (gimplify_cond_expr): Gimplify shortcut expansion in - a conditional context. - - * tree-cfg.c (make_catch_expr_blocks): Don't change next_block_link. - (make_eh_filter_expr_blocks): Likewise. - - * tree-dfa.c (add_referenced_var): Static locals are call - clobbered. - -2003-08-05 Steven Bosscher - - * tree-dfa.c (add_phi_arg): Allow PHI capacity to grow. - * tree-flow.h (add_phi_arg): Adjust prototype. - * tree-ssa-pre.c (code_motion): Adjust call. - * tree-ssa.c (rewrite_block): Likewise. - * tree.c (resize_phi_node): New function. - * tree.h (resize_phi_node): Add prototype. - -2003-08-05 Jeff Law - - * tree-ssa-dom.c (optimize_block): Be more aggressive about - creating equivalences from PHI nodes. - - * tree-ssa-dom.c (optimize_stmt): Strip away certain NOP_EXPRs - before determining if we have an equivalence to enter into - the const_and_copies table. - - * tree-ssa-dce.c (remove_dead_stmts): Iterate backwards through the - basic blocks removing dead statements. Within each block iterate - backwards through the statements removing those which are dead. - - * tree-ssa-optimize.c (optimize_function_tree): Call - remove_useless_stmts_and_vars before building the flow graph. - * tree-cfg.c (remove_useless_stmts_and_vars): Rename argument from - first_iteration to remove_unused_vars. - - * tree-cfg.c (remove_unreachable_blocks): Remove blocks in reverse - order. - (remove_bb): Remove unwanted call to bsi_next. - (bsi_remove): Refine code which removes useless COMPOUND_EXPRs to allow - removal if one of the arms is not associated with a basic block. - (remove_stmt): Improve check for testing when a basic block head/end - pointer needs to be updated when removing a COMPOUND_EXPR. - - * tree-cfg.c (phi_alternatives_equal): New function. - (linearize_cond_expr): Allow linearization if the PHI nodes at the - target have equivalent arguments for the incoming edges from the THEN - and ELSE clauses. - - * tree-ssa-dce.c (mark_tree_necessary): Empty statements may be - necessary. - (process_worklist): Handle any incoming abnormal edges the first - time a statement in each block becomes executable. - - * tree-ssa-ccp.c (substitute_and_fold): Substitute known - constants into PHI nodes. - -2003-08-04 Sebastian Pop - - * basic-block.h: Declare bb_ann_d. - (basic_block_def): Add a field tree_annotations. - * cfg.c (entry_exit_blocks): Initialize tree_annotations to NULL. - * cfghooks.c: Remove the definition of cfg_level. - (rtl_register_cfg_hooks): Remove the initiallization of cfg_level. - * cfghooks.h (cfg_hooks): Add cfgh_loop_optimizer_init, and - cfgh_loop_optimizer_finalize. - (loop_optimizer_init, loop_optimizer_finalize): New macros. - (cfg_level): Remove. - * cfgloop.h (loop_optimizer_init, loop_optimizer_finalize): Rename - to rtl_loop_optimizer_init and rtl_loop_optimizer_finalize. - * cfgrtl.c (rtl_loop_optimizer_init, rtl_loop_optimizer_finalize): - Declare, and register them in rtl_cfg_hooks and cfg_layout_rtl_cfg_hook. - * loop-init.c (loop_optimizer_init, loop_optimizer_finalize): Rename - to rtl_loop_optimizer_init and rtl_loop_optimizer_finalize. Remove - the checks to cfg_level. - * tree-cfg.c (block_tree_ann_obstack, first_block_tree_ann_obj): New. - (create_blocks_annotations, create_block_annotation, - free_blocks_annotations, clear_blocks_annotations): New functions. - (tree_loop_optimizer_init, tree_loop_optimizer_finalize): New - functions. Register them in tree_cfg_hooks. - (build_tree_cfg, dump_tree_bb, delete_tree_cfg, tree_split_edge): Use - create_blocks_annotations instead of alloc_aux_for_blocks, - create_block_annotation instead of alloc_aux_for_block, - .tree_annotations instead of .aux, - free_blocks_annotations instead of free_aux_for_blocks. - (tree_register_cfg_hooks): Remove initialization of cfg_level. - * tree-flow-inline.h (bb_ann): Use .tree_annotations. - * tree-flow.h: Update comment. - -2003-08-04 Zdenek Dvorak - - * Makefile.in (c-pretty-print.o): Add TREE_H and C_TREE_H dependencies. - -2003-08-01 Paul Brook - - * Makefile.in (GMPINC): Set and use. - (GMPLIBS): Set it. - * configure.in: Add test and switches for the GMP library. - (all_need_gmp): Set from config-lang.in. - * sourcebuild.texi: Document need_gmp. - * configure: regen - -2003-08-01 Steven Bosscher - - * tree-inline.c (expand_calls_inline): Fix comments. - -2003-07-31 Diego Novillo - - * Makefile.in (tree-ssa-ccp.o): Depend on $(EXPR_H). - * builtins.c (c_strlen): Remove static declaration. - (simplify_builtin_fputs): Remove static declaration. - (simplify_builtin_sprintf): New local function. - (expand_builtin_sprintf): Remove by surrounding with #if 0. - (expand_builtin): Add BUILT_IN_SPRINTF to the list of built-ins - handed over to simplify_builtin. - (validate_arglist): Do not allow arguments with TREE_SIDE_EFFECTS. - (simplify_builtin_fputs): Add new argument KNOWN_LEN. If it's set, - use it instead of trying to compute the length of the string. - Update all callers. - * expr.h (simplify_builtin_fputs): Declare. - * tree-flow.h (fold_stmt): Change argument type to tree *. Update - all users. - * tree-ssa-ccp.c: Include expr.h. - (replace_uses_in): If the statement makes a call to some selected - built-ins, mark it for folding. - (get_strlen): New local function. - (ccp_fold_builtin): New local function. - (fold_stmt): Call it. - (set_rhs): Fix if-else-if chaining. Handle cases where the whole - statement needs to be replaced. - * tree.h (c_strlen): Declare. - -2003-07-31 Diego Novillo - - Fix PR optimization/11373 - * tree-ssa-dce.c (stmt_useful_p): Get statement operands before - checking for volatile operands. - * tree-dfa.c (get_expr_operands): If a constant is dereferenced as a - pointer, mark the statement as having volatile operands. - (may_access_global_mem_p): If a non-NULL constant is used as a - pointer, consider it as pointing to global memory. - * tree-ssa-dom.c (optimize_stmt): Set addr_expr_propagated_p when - propagating pointers that are integer constants. - -2003-07-31 Andrew MacLeod - - * tree-dfa.c (add_stmt_operand): Don't treat complex types as scalars. - * tree-ssa-live.c (var_union): Change comment. - (coalesce_tpa_members): Don't proceed if var_union fails. - * tree-ssa.c (insert_copy_on_edge): Change comment. - (coalesce_abnormal_edges): Handle var_union failing. - (coalesce_vars): Skip constant PHI arguments. - -2003-07-30 Jeff Law - - * tree-cfg.c (bsi_remove): Don't remove a COMPOUND_EXPR with empty - arms if the arms are in different basic blocks. - - * tree-ssa-dom.c (record_cond_is_false): New function. - (record_cond_is_true): Similarly. - (get_eq_expr_value): Use record_cond_expr_is_{true,false}. - (optimize_stmt): Fix minor formatting issue. If we encounter an - INDIRECT_REF, record that the dereferenced pointer can not be - null. - -2003-07-30 Daniel Berlin - - * tree-dump.c (dump_option_value_in): "all" is now everything but - TDF_RAW and TDF_SLIM. - -2003-07-30 Diego Novillo - - * tree-simple.c (is_gimple_const): Accept CONST + CONST expressions - as GIMPLE constants. - -2003-07-30 Daniel Berlin - - * tree-ssa-pre.c: #include real.h - (defs_match_p): Change arguments to something normal now that we use - the new renaming algorithm. Update all callers. - Use defs_hash_expr. - (defs_y_dom_x): Ditto. - (defs_hash_expr): New. Based on iterative_hash_expr. - (generate_exr_as_of_bb): If there aren't any uses, return. - (subst_phis): Call modify_stmt on the actually modified statement. :) - (get_default_def): Only walk SSA_NAME arguments in PHI's. - -2003-07-30 Jason Merrill - - Don't modify code that is already GIMPLE. - * gimplify.c (gimplify_expr): Don't return early if the predicate - matches. - Use a variable temp if the caller wants an lvalue. - Don't call gimplify_constructor if we're on the rhs of a MODIFY_EXPR. - (add_tree, add_stmt_to_compound): Do add an empty stmt if we - previously had nothing at all. - (gimplify_return_expr): Don't mess with iterators if it was already - gimple. - (gimplify_cond_expr): Remove a COND_EXPR with two empty arms. - (gimplify_call_expr): Try to simplify a builtin again after - gimplifying the args. - (internal_get_tmp_var): Gimplify the new MODIFY_EXPR. - (gimplify_expr, gimple_push_cleanup): Use boolean_false_node. - (gimplify_init_constructor): New fn, broken out from... - (gimplify_modify_expr): ...here. Be smarter about zero-initialization. - * tree-simple.c (is_gimple_rhs): Accept any CONSTRUCTOR. - * tree-simple.h: Adjust add_tree prototype. - -2003-07-29 Daniel Berlin - - * tree-alias-common.c (create_alias_vars): If we created global_var, - delete it when we are done. - (ptr_may_alias_var): Handle case that global_var is now NULL_TREE. - -2003-07-29 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Propagate copies into VUSEs and - the RHS of VDEFs. - -2003-07-29 Andrew MacLeod - - * tree-ssa.c (insert_copy_on_edge): Only set used bit on DECL nodes. - -2003-07-29 Andrew MacLeod - - * common.opt (ftree-combine-temps): Add new option. - * flags.h (flag_tree_combine_temps): New flag. - * opts.c (decode_options): Initialize flag_tree_combine_temps. - (common_handle_option): Handle new flag. - * toplev.c (flag_tree_combine_temps): Declare. - (lang_independent_options f): Add tree-combine-temp. - * tree-ssa-live.c (var_union): When combining 2 root variables, choose - the user variable over a temporary as the new variable. - (compact_var_map): Use renamed root_var routines. - (calculate_live_on_exit): Reformatting. - (tpa_init): Initialize a tpa object. - (tpa_remove_partition): Remove a partition from a tpa list. - (tpa_delete): Delete a tpa object. - (tpa_compact): Hide single elemenet lists. - (root_var_init): Split common part into tpa_init and rename. - (remove_root_var_partition, delete_root_va, dump_root_var): Delete. - (type_var_init): New. Initialize a type_var object. - (create_coalesce_list): New. Create a coalesce_list object. - (delete_coalesce_list): New. Free a coalesce list's memory. - (find_partition_pair): New. Find a coalesce pair in a coalesce list. - (add_coalesce): New. Add a coalesce between 2 partitions. - (sort_coalesce_list): New. Sort coalesce pairs by importance. - (pop_best_coalesce): New. Get best remaining pair to coalesce. - (add_conflicts_if_valid): Move from tree-ssa.c. - (build_tree_conflict_graph): Move from coalesce_ssa_name in tree-ssa.c. - Genericize to use tpa_p instead of root_var object. Don't add - interferences between copies. Update coalesce list. - (coalesce_tpa_members): Move from coalesce_ssa_name in tree-ssa.c. Use - tpa_p instead of root_var. Use coalesce list if provided. - (dump_coalesce_list): New. Show debug info for a coalesce list. - (tpa_dump): Rename from dump_root_var and genericize to use tpa_p. - * tree-ssa-live.h (root_var_p): Rename structure type to tpa_p - (tpa_num_trees, tpa_tree, tpa_first_partition, tpa_next_partition, - tpa_find_tree): New. Generic versions of existing root_var routines. - (tpa_decompact): New. Include single version lists. - (root_var_p): Declare as type tpa_p. - (root_var_num, root_var, root_var_first_partition, - root_var_next_partition, root_var_dump, root_var_delete, - root_var_remove_partition, root_var_find , root_var_compac, - root_var_decompac): Rename and call generic versions. - (type_var_p): New. Use tpa_p structure for a type based association. - (type_var_num, type_var, type_var_first_partition, - type_var_next_partition, type_var_dump, type_var_delete, - type_var_remove_partition, type_var_find, type_var_compact, - type_var_decompact): New. Call generic versions of the routine. - (struct partition_pair_d): New. Represent a desired coalesce. - (struct coalesce_list_d): New. Organize lists of desired coalesces. - (NO_BEST_COALESCE): Define value. - * tree-ssa.c (set_if_valid): Remove. - (insert_copy_on_edge): Set variable as used when inserting a copy. - (add_conflicts_if_valid): Remove. Move to tree-ssa-live.c. - (print_exprs): New. Routine for commonly used output format. - (coalesce_abnormal_edges): New. Split from coalece_ssa_name. Force - partition coalesces across abnormal edges. - (coalesce_ssa_name): Split out build_tree_conflict_graph, - coalesce_abnormal_edges, and coalesce_tpa_members. Return live - range info if required. Use renamed root_var routines. - (assign_vars): Use renamed root_var routines. - (replace_variable): Mark as inline. - (coalesce_vars): Coalesce variable memory storage. - (rewrite_out_of_ssa): Don't compact varmap anymore. Free live range - info if required. Call coalesce_vars if combining temps. - -2003-07-29 Andrew MacLeod - - * tree-cfg.c (handle_switch_fallthru): Use bsi_link_after if stmt is - in a basic block. - -2003-07-28 Diego Novillo - - * opts.c (decode_options): Disable must-alias optimization. - -2003-07-28 Andrew MacLeod - - * tree-ssa.c (struct _elim_graph): Add varray for constant copies. - (new_elim_graph): Initialize constant copy array.. - (eliminate_build): Push constant copies onto stack instead of emitting. - (eliminate_phi): Emit any pending constant copies. - -2003-07-28 Jeff Law - - * tree-ssa-dom.c (optimize_block): If a PHI has a single argument - that is a constant, then that creates a useful equivalence. - Propagate constant values into PHI nodes. - - * tree-flow-inline.h (may_propagate_copy): Allow RHS to be a - constant. - - * tree-dfa.c (compute_immediate_uses_for): Do not assume that - PHI arguments are SSA_NAMEs. - * tree-ssa-dce.c (process_worklist): Likewise. - * tree-ssa-copyprop.c (copyprop_phi): Likewise. Use may_propagate_copy. - * tree-ssa-ccp.c (visit_phi_node): Do not assume that PHI arguments - are SSA_NAMEs. Create a suitable value if a PHI argument is a - constant. - - * tree-cfg.c (move_outgoing_edges): Correctly handle case where - an edge already exists from BB1 to BB2's successor. - -2003-07-27 Daniel Berlin - - * tree.h (EREF_TEMP): Rename to EPHI_TEMP. - (tree_eref_common): Move temp to tree_ephi_node. - * tree-ssa-pre.c: Remove #if 0'd code. - Use EPHI_TEMP rather than EREF_TEMP, remove EREF_TEMP on EUSE nodes. - (finalize_1): Handle empty blocks properly. - -2003-07-27 Andreas Jaeger - - * tree.c: Convert remaining K&R prototypes to ISO C90. - * tree-dump.c: Likewise. - * tree-inline.c: Likewise. - * stmt.c (expand_asm_expr): Likewise. - - * diagnostic.h: Remove PARAMS. - -2003-07-26 Paul Brook - - * Makefile.in: Rename check-g95 to check-gfortran. - * gcc.c (default_compilers): Add entries for .f90 and .f95. - * doc/frontends.texi: Document new F95 front end. - * doc/install.texi: Ditto. - * doc/invoke.texi: Ditto. - * doc/sourcebuild.texi: Ditto. - * fortran: New front end. - -2003-07-25 Jeff law - - * tree-ssa-dom.c (optimize_block): Use may_propagate_copy. - -2003-07-25 Diego Novillo - - * opts.c (decode_options): Re-enable must-alias optimizations. - -2003-07-25 Daniel Berlin - - * configure.in: Update BANSHEEREBUILD for PWD change. - * configure: regen - -2003-07-25 Andreas Jaeger - - * c-call-graph.c: Convert to ISO C90. - * c-common.c: Likewise. - * c-mudflap.c: Likewise. - * c-pretty-print.c: Likewise. - * cfganal.c (find_edge): Likewise. - * dependence.c: Likewise. - * diagnostic.c (debug_output_buffer): Likewise. - * except.c (expand_eh_handler): Likewise. - * fold-const.c: Likewise. - * langhooks.c: Likewise. - * tree-cfg.c (last_exec_block): Likewise. - * tree-ssa-pre.c: Likewise. - * builtins.c: Likewise. - - * tree.h: Remove remaining PARAMS. - * c-common.h: Likewise. - * c-pretty-print.h: Likewise - * c-tree.h: Likewise. - * except.h: Likewise. - * langhooks-def.h: Likewise. - * langhooks.h: Likewise. - -2003-07-24 Diego Novillo - - * tree-dfa.c (cleanup_operand_arrays): New local function. Remove - superfluous VUSE operands. - (get_stmt_operands): Call it. - -2003-07-24 Jason Merrill - - * gimplify.c (gimple_boolify): New fn. - (gimplify_expr) : Boolify arg. - (gimplify_cond_expr): Boolify condition. - (gimplify_boolean_expr): Boolify args. - (gimple_push_cleanup): Make flag boolean. - - * tree-simple.c (is_gimple_relop): TRUTH_{AND,OR,XOR}_EXPR - are not comparisons. - (is_gimple_binary_expr): They are binary ops. - - * tree-mudflap.c (mf_build_check_statement_for): Use TRUTH_OR_EXPR - rather than BIT_IOR_EXPR. - -2003-07-23 Jason Merrill - Diego Novillo - - * c-common.h (DECL_C_HARD_REGISTER): Replace ... - * tree.h (DECL_HARD_REGISTER): ... with this. Update all users. - -2003-07-23 Diego Novillo - - * tree-flow-inline.h (may_propagate_copy): New function. - * tree-flow.h (may_propagate_copy): Declare. - * tree-ssa-copyprop.c (copyprop_stmt): Call it. - (get_original): Likewise. - * tree-ssa-dom.c (optimize_stmt): Likewise. - -2003-07-23 Frank Ch. Eigler - - * gcc.c (MFWRAP_SPEC): Also wrap pthread_join and pthread_exit. - -2003-07-23 Steven Bosscher - - * tree-flow-inline.h (remove_dom_child): New function. - (clear_dom_children): New function. - * tree-cfg.c (bsi_insert_on_edge_immediate): Do not clear - the annotation for the new bb, it is already memset to zero - in alloc_aux_for_block(). - (move_outgoing_edges): Use dom_children() instead of looking - at the dom_children field in the basic block annotation. - * tree-ssa.c (rewrite_into_ssa): Use clear_dom_children(). - - * tree-cfg.c (dump_tree_cfg): Dump to `file', not `dump_file'. - -2003-07-23 Diego Novillo - - * tree.h (DECL_ESTIMATED_INSNS): Move from c-common.h. - -2003-07-23 Steven Bosscher - - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Make - found_unreachable a bool. Create/delete hash tables for - copies and available exprs outside the main loop. Use - htab_clean to wipe them after each iteration. - -2003-07-22 Diego Novillo - - * opts.c (decode_options): Add temporary test for environment - variable TREE_SSA_DO_PRE. - Do not disable dominator optimizations when PRE is enabled. - -2003-07-22 Daniel Berlin - - * tree-ssa-pre.c (finalize_1): Change to not use bsi_last. - -2003-07-22 Daniel Berlin - - * tree-cfg.c (remove_stmt): Revert 07-15 change. Turns out the bug is in - the reverse iterator. - -2003-07-22 Diego Novillo - - * tree-ssa-ccp.c (visit_phi_node): Assume default value of CONSTANT - if the PHI value was already constant. - -2003-07-22 Andrew MacLeod - - * c-pretty-print.c (print_call_name): Handle COND_EXPR correctly. - * tree-pretty-print.c (print_call_name): Handle COND_EXPR correctly and - handle SSA_NAME. - * tree-dfa.c (add_phi_arg, remove_phi_arg_num): Remove references to - SSA_NAME_HAS_REAL_REFS. - * tree-ssa-ccp.c (visit_phi_node): Remove SSA_NAME_HAS_REAL_REFS. - * tree-ssa-copyprop.c (copyprop_phi): Remove SSA_NAME_HAS_REAL_REFS. - * tree-ssa-live.c (register_ssa_partition): Register the PHI and it's - arguments if this variable is defined by a PHI. - (create_ssa_var_map): Only register real uses and defs, and virtual - operands of ASM_EXPR's. Remove SSA_NAME_HAS_REAL_REFS. Don't set - used flag on variables here. - (calculate_live_on_entry): Ignore constants in PHI arguments. - (calculate_live_on_exit): Ignore constants in PHI arguments. - (dump_live_info): New. Dump live range information. - * tree-ssa-live.h (dump_live_info): New prototype and flags. - * tree-ssa-pre.c (create_expr_ref, finalize_1, repair_use_injury, - code_motion): Remove SSA_NAME_HAS_REAL_REFS. - * tree-ssa.c (rewrite_operand, register_new_def): Remove real_ref - parameter and SSA_NAME_HAS_REAL_REFS. - (rewrite_block): Remove real_ref parameter from register_new_def call. - (eliminate_build): Remove SSA_NAME_HAS_REAL_REFS. Insert copy if PHI - argument is a constant. Handle irregular PHI argument ordering. - (elim_create): Remove dead code to count PHI nodes. - (assign_vars): Set used flag on variables when assigned. - (replace_variable): Eliminate dead code. - (coalesce_ssa_name): Remove SSA_NAME_HAS_REAL_REFS. Print error for - constant argument across an abnormal edge. - (eliminate_extraneous_phis): New. Remove PHI nodes which are not in - the partition. - (rewrite_out_of_ssa): Call eliminate_extraneous_phis. - (rewrite_stmt): Remove real_ref parameter from rewrite_operand and - register_new_def. - * tree.h (SSA_NAME_HAS_REAL_REFS): Remove. - (struct tree_ssa_name): Remove 'has_real_refs' field. - -2003-07-22 Daniel Berlin - - * tree-ssa-pre.c (factor_through_injuries): Take new argument specifying - whether use was injured or not (needed for SR). Update all callers. - (maybe_find_rhs_use_for_var): Take new argument specifying which - operand to start search with. Update all callers. - (phi_opnd_from_res): #if 0 out. - (rename_2): Ditto. - (rename_1): Ditto. - (defs_match_p): Take new arguments specifying which defs were injured. - Update all callers. - (defs_y_dom_x): Ditto. - (generate_expr_as_of_bb): Fix small memory overwrite. - (process_delayed_rename): Propagate injured flag around. - (new_rename_1): Ditto. - (finalize_1): Get correct variable names for newly created statement if - necessary due to PHI. - (repair_use_injury): Note the repair in the stats. Insert repair - in right place. - (repair_euse_injury): Fix handling of PHI_NODE. - (code_motion): Fix algorithm so it can handle using reaching_def all the - time (needed for SR). - Use reaching_def rather than EREF_TEMP. - -2003-07-21 Diego Novillo - - * tree-dfa.c (get_stmt_operands): Remove FIXME note - regarding virtual operands for ASM_EXPRs. - -2003-07-21 Diego Novillo - - * tree-dfa.c (add_def): Renamed from set_def. Update all users. - (get_stmt_operands): Don't force ASM_EXPR operands to be virtual. - (add_stmt_operand): Allow non-assignments to create new defs. - * tree-dump.c (dump_function): Move header dump... - (dump_function_to_file): ... here. - * tree-flow-inline.h (def_ops): Renamed from def_op. Return a - varray with all the definitions made by the statement. - Update all users. - * tree-flow.h (struct operands_d): Rename field 'def_op' to - 'def_ops'. Convert it into a varray. - * tree-must-alias.c (tree_compute_must_alias): Call - dump_function_to_file instead of dump_function. - * tree-ssa-ccp.c (tree_ssa_ccp): Likewise. - (visit_stmt): Only visit statements that make new definitions using - MODIFY_EXPR. - Definitions coming from other statements are considered VARYING. - * tree-ssa-copyprop.c (tree_ssa_copyprop): Call - dump_function_to_file instead of dump_function. - * tree-ssa-dce.c (tree_ssa_dce): Likewise. - * tree-ssa-dom.c (tree_ssa_dominator_optimize): Likewise. - (optimize_stmt): Don't abort if a statement makes more than one - definition. - Check for MODIFY_EXPR statements directly, instead of relying on - the presence of a single definition. - * tree-ssa-pre.c (tree_perform_ssapre): Call dump_function_to_file - instead of dump_function. - * tree-ssa.c (rewrite_into_ssa): Likewise. - Dump the function before dominator optimizations if TDF_DETAILS is - set. - (rewrite_stmt): Don't abort if the statement makes more than one - definition. - -2003-07-21 Jeff Law - - * tree-ssa-dom.c (tree_ssa_dominator_optimize): If we made any - blocks unreachable, repeat the dominator optimizations. - (optimize_block): Enter PHIs with a single source argument into - the const_and_copies table. When propagating into a PHI node, - break the loop over the PHI arguments when a propagation is performed. - If the PHI agument is not an SSA_VAR, then no propagation is possible. - (optimize_stmt): If an operand is not an SSA_VAR, then no propagation - is possible/needed. - -2003-07-21 Diego Novillo - - * Makefile.in (tree-ssa-dom.o): Add dependency on $(TREE_DUMP_H). - * fold-const.c (fold): Remove unusued local variable 'invert'. - * tree-dump.c (dump_files): Add entry for -fdump-tree-dom. - * tree-flow.h (tree_ssa_dominator_optimize): Change declaration to - accept a function decl. - * tree-ssa-dom.c: Include timevar.h and tree-dump.h. - (tree_ssa_dominator_optimize): Change to receive the function decl - for the function to optimize. Update callers. - Use own dump file instead of dumping on the .ssa dump file. - Dump function at the end. - Push and pop TV_TREE_SSA_DOMINATOR_OPTS. - * tree-ssa.c (rewrite_into_ssa): Restore check for number of times - that the rename loop has been executed. Abort if the loop executes - more than twice. - * tree.h (enum tree_dump_index): Add TDI_dom. - * doc/invoke.texi: Document -fdump-tree-dom. - -2003-07-21 Steven Bosscher - Diego Novillo - - * Makefile.in (install-po): Check if $CATALOGS is empty to avoid - buggy shells. - * basic-block.h (rtl_verify_flow_info): Remove. - (tree_verify_flow_info): Remove. - (verify_flow_info): Declare. - * builtins.c: Rearrange to simplify merges. Add #if 0 around - expand_ functions that are not used in the branch and move new code - to the end of the file. - * c-opts.c (c_common_handle_option): Move handling of -fdump- to - opts.c. - * cfgloopmanip.c (loop_split_edge_with_NULL): Remove. Update all - users. - * common.opt: Add all the tree-ssa switches. - * opts.c: Handle them. - * flags.h (flag_tree_cp): Remove unused variable. - (enum pta_type): Move from tree-must-alias.h - (flag_tree_points_to): Likewise. - * toplev.c (flag_tree_cp): Remove unused variable. - * tree-cfg.c: Move cfg_hooks structures and functions for - trees from cfghooks.c. - * tree-mudflap.c (mudflap_enqueue_decl): Don't use %D to - avoid warning about format specifiers. - -2003-07-21 Diego Novillo - - * gimplify.c (gimplify_function_tree): Move gimplification of the - function body ... - (gimplify_body): ... here. - * tree-simple.h (gimplify_body): Declare. - * tree-inline.c (initialize_inlined_parameters): If the - emitted assignment is not in GIMPLE form, gimplify the - body of assignments emitted. - -2003-07-17 Jeff Law - - * tree-dfa.c (remove_phi_arg): Update PHI_ARG_CAPACITY. - - * tree-ssa.c (mark_def_sites): Do not build the dominator tree here. - (rewrite_into_ssa): Do not depend on mark_def_sites to build the - dominator tree. Move computation of dominance frontiers out - of main loop (even though it was only done once). Free immediate - dominator information as soon as we're done with it. - - * tree-flow.h (remove_phi_nodes_and_edges_for_unreachable_block): - Prototype. - * tree-cfg.c (remove_phi_nodes_and_edges_for_unreachable_block): New - function extracted from remove_bb. - (remove_bb): Call remove_phi_nodes_and_edges_for_unreachable_block. - - * tree-ssa-dom.c (optimize_block): Propagate values into PHI nodes. - Do not optimize a block which has become unreachable. - If a COND_EXPR has a compile-time constant condition, then remove - outgoing from the COND_EXPR which can not execute. - -2003-07-16 Frank Ch. Eigler - - * tree-mudflap.c (mx_xfn_indirect_ref): Correct source locations - for tracked expressions by ignoring incidental decl source loci. - -2003-07-16 Jeff Law - - * tree-cfg.c (remove_bb): Remove statements in reverse order. - Simplify code to issue warnings for unreachable code. - - * tree-ssa-dom.c (get_eq_expr_value): Also enter expressions - into the available expression hash table. Callers changed to - pass in the block_avail_exprs varray and const_and_copies hash - table. - (optimize_stmt): Allow optimization of the condition in - a COND_EXPR statement. - (lookup_avail_expr): For COND_EXPRs, just see if their condition - has been recorded into the hash table, do not enter them into - the hash table. Only do a lookup of the result in the - const_and_copies table if it is an SSA_VAR. - (avail_expr_hash): Handle COND_EXPRs, specifically we only care - about their condition and virtual operands. - (avail_expr_eq): Likewise. If one statement has virtual operands - and the other does not, then the expressions are not equal. - - * tree-ssa.c (rewrite_into_ssa): If we have done dominator - optimizations, then call cleanup_tree_cfg after rewriting is - complete. - * tree-ssa-dom.c (optimize_block): Get eq_expr_value for the - current block rather than having it passed in by the caller. - Propagate eq_expr_value into the false arm of a COND_EXPR. - (get_eq_expr_value): Return equivalences for the false - arm of a COND_EXPR if requested. - -2003-07-16 Daniel Berlin - - * c-decl.c (store_parm_decls): Also strip NON_LVALUE_EXPRs and - CONVERT_EXPRs when setting DECL_NONLOCAL. - -2003-07-15 Daniel Berlin - - * tree-cfg.c (remove_stmt): Update bb->end_tree_p properly when - stmt_p is the end of the bb. - -2003-07-15 Jeff Law - - * tree-ssa-dom.c (optimize_stmt): Consider two types equivalent if - their TYPE_MAIN_VARIANT is equivalent. - (avail_expr_eq): Likewise. - - * Makefile.in (OBJS): Add tree-ssa-dom.o - (tree-ssa-dom.o): Add dependencies. - (ssa.o, cfghooks.o): Use $(TREE_FLOW_H), not tree-flow.h. - * timevar.def: Add new timevar for dominator optimizer. Reorder - slightly. - * tree-dfa.c (add_stmt_operand): Do not consider references to - static storage as volatile operands. - (add_referenced_var): Static storage items reference global memory. - * tree-ssa.c: Simplify by moving everything specific to the - dominator optimizer into tree-ssa-dom.c. Call into the dominator - optimizer after rewriting all the basic blocks. - * tree-ssa-dom.c: New file. Mostly extracted from tree-ssa.c - * tree-flow.h (tree_ssa_dominator_optimize): Prototype. - (dump_dominator_optimization_stats): Likewise. - (debug_dominator_optimization_stats): Likewise. - -2003-07-15 Diego Novillo - - * tree-dfa.c (add_stmt_operand): Move volatile handling... - (find_vars_r): ... here. - Mark when the walker is inside an ASM_EXPR. - (struct walk_state): Add field 'is_asm_expr'. - Change flag fields to bitfields. - (add_referenced_var): If the variable is a pointer being stored by - an ASM_EXPR, mark it as a global memory pointer. - * tree-flow-inline.h (is_optimizable_addr_expr): New function. - * tree-flow.h (is_optimizable_addr_expr): Declare it. - * tree-ssa.c (rewrite_and_optimize_stmt): Use it. - (lookup_avail_expr): Likewise. - (get_eq_expr_value): Likewise. - (avail_expr_eq): Return 'true' when comparing a statement against - itself. - * tree-ssa-dce.c (need_to_preserve_store): Move volatile checking... - (stmt_useful_p): ...here. - -2003-07-15 Andreas Jaeger - - * c-simplify.c: Convert prototypes to ISO C90. - * gimplify.c: Likewise. - * simple-break-elim.c: Likewise. - * simple-goto-elim.c: Likewise. - - * tree-alias-ander.c: Convert prototypes to ISO C90. - * tree-alias-common.c: Likewise. - * tree-alias-type.c: Likewise. - * tree-browser.c: Likewise. - * tree-dchain.c: Likewise. - * tree-mudflap.c: Likewise. - * tree-nomudflap.c: Likewise. - * tree-optimize.c: Likewise. - * tree-pretty-print.c: Likewise. - * tree-simple.c: Likewise. - - * tree-alias-common.h: Convert prototypes to ISO C90, remove extra - whitespace. - * tree-alias-type.h: Convert prototypes to ISO C90. - * tree-dchain.h: Likewise. - * tree-flow-inline.h: Likewise. - * tree-flow.h: Likewise. - * tree-iterator.h: Likewise. - * tree-mudflap.h: Likewise. - * tree-simple.h: Likewise. - -2003-07-14 Daniel Berlin - - * tree-ssa-pre.c (tree_perform_ssapre): Fix dom_children after DCE - breaks them. - -2003-07-14 Diego Novillo - - * tree-dfa.c (add_vdef): Initialize variable 'vdef'. - (add_vuse): Initialize variable 'vuse'. - -2003-07-14 Diego Novillo - - Must alias analysis. Allow the SSA rename pass to be done on a set - of variables. - - * Makefile.in (OBJS): Add tree-must-alias.o. - * flags.h (flag_tree_must_alias): Declare. - * timevar.def (TV_TREE_MUST_ALIAS): Define. - * toplev.c (flag_tree_must_alias): Declare. - (f_options): Add entry for -ftree-must-alias. - (parse_options_and_default_flags): Enable must-alias analysis at -O1. - - * tree-cfg.c (remove_useless_stmts_and_vars): Do not remove - addressable variables. - - * tree-dfa.c (dump_file, dump_flags): New local variables to - replace tree_ssa_dump_file and tree_ssa_dump_flags. Update every - user. - (get_stmt_operands): Clear the array of virtual operands before - scanning the statement. - (get_expr_operands): Do not add an operand for ADDR_EXPR if the - expression takes the address of a VAR_DECL or a PARM_DECL. Instead - add the variable to the list of variables whose address has been - taken by the statement. - Allow INDIRECT_REF expressions of the form *&VAR. Convert them - into an operand for VAR. - When processing function calls, add a VUSE for .GLOBAL_VAR if the - function is pure but not const. - (add_stmt_operand): If the operand is an ADDR_EXPR, add the - variable to the list of variables whose address has been taken by - the statement. - (add_vdef): If the statement had virtual definitions, try to find - an existing VDEF for the variable, to preserve SSA information. If - none is found, create a new one. - (add_vuse): Likewise. - (remove_all_phi_nodes_for): New function. - (get_call_flags): New function to replace call_may_clobber. Update - all callers. - - * tree-dump.c (dump_files): Add entry for -fdump-tree-mustalias. - * tree-flow-inline.h (addresses_taken): New function. - (is_unchanging_value): New function. - - * tree-flow.h (addresses_taken): Declare. - (remove_all_phi_nodes): Declare. - (init_tree_ssa): Declare. - (propagate_copy): Declare. - (is_unchanging_value): Declare. - (tree_compute_must_alias): Declare. - - * tree-inline.c (copy_body_r): Fold instances of *&VAR. - - * tree-must-alias.c: New file. - - * tree-optimize.c (optimize_function_tree): Call init_tree_ssa and - compute_may_aliases before calling rewrite_into_ssa. - After the SSA pass, run dead code elimination and compute - must-aliases. - - * tree-simple.c (is_gimple_call_expr): Add comment that - is_gimple_* predicates should not have side effects. - - * tree-ssa-ccp.c: Replace calls to really_constant_p with - is_unchanging_value everywhere. - (fold_stmt): Don't fold if the RHS is already a constant. - - * tree-ssa-copyprop.c (copyprop_stmt): Remove unnecessary - variable 'vuse'. - Call propagate_copy to replace the operand with its new value. - (copyprop_phi): Remove unnecessary variable 'vuse'. - (get_original): Remove unused parameter 'vuse_p'. - (propagate_copy): New function. - - * tree-ssa-dce.c (need_to_preserve_store): Update comments. - - * tree-ssa.c (dump_file, dump_flags): New local variables to - replace globals tree_ssa_dump_file and tree_ssa_dump_flags. Update - all users. - (addr_expr_propagated_p): New local variable. - (vars_to_rename): New local variable. - (check_for_new_variables): New local function. - (rewrite_into_ssa): Add new argument VARS which is a bitmap - representing all the variables that should be renamed into SSA. If - VARS is NULL, all the variables in the program are renamed. - Don't call init_tree_ssa nor compute_may_aliases. - Initialize all the local hash tables and bitmaps. - Add support for repeating the SSA rename process more than once. - If the dominator optimizations produced new symbols, repeat the - process. - (mark_def_sites): Ignore operands that are in SSA form already. - (insert_phi_nodes): Only add PHI nodes for variables in the - VARS_TO_RENAME bitmap. - (rewrite_block): Ignore PHI nodes that have been renamed already. - (rewrite_and_optimize_stmt): Ignore operands that are already in - SSA form. - When propagating ADDR_EXPR set addr_expr_propagated_p to 'true'. - Call propagate_copy when doing copy propagation. - Call is_unchanging_value to decide if the RHS of an assignment is a - constant. - (rewrite_stmt): Ignore operands that are already in SSA form. - (init_tree_ssa): Make external. - Move initialization of local hash tables and bitmaps to - rewrite_into_ssa. - (remove_annotations_r): Don't special case MODIFY_EXPR nodes. - (lookup_avail_expr): Call is_unchanging_value. - (get_eq_expr_value): Likewise. - - * tree.h (enum tree_dump_index): Add TDI_must_alias. - - * cp/optimize.c (optimize_function): Don't call the tree optimizers - if -fdisable-tree-ssa is given. - - * doc/invoke.texi: Add documentation for -ftree-must-alias. - -2003-07-07 Jeff Law - - * fold-const.c (nondestructive_fold_unary_to_constant: For BIT_NOT_EXPR - make sure OP0 is a suitable constant before trying to fold it. - - * tree-cfg.c (handle_switch_fallthru): Set DECL_CONTEXT for - newly created labels. - - * tree-cfg.c (move_outgoing_edges): New function. - (merge_tree_blocks): Use it. - (remove_bb): Remove the block from the pdom_info structures - as well if they exist. - (linearize_cond_expr): Move important edges from the then and - else arms to BB as appropriately - - * tree-cfg.c (remove_stmt): When removing a COMPOUND_EXPR, make - sure that any basic block pointers to the arms of the COMPOUND_EXPR - are updated. - - * tree-cfg.c (make_goto_expr_edges): Computed gotos create - abnormal edges. - -2003-07-05 Daniel Berlin - - * tree-ssa-pre.c (defs_match_p): Check for copies of the same version. - -2003-07-03 Frank Ch. Eigler - - * tree-nomudflap.c (mf_marked_p, mf_mark): New dummy functions. - -2003-07-03 Jeff Law - - * tree-ssa.c (lookup_avail_expr): Accept new argument containing the - const_and_copies table. All callers changed. If we find the - given expression in the availe expression hash table, then lookup - the LHS of the hash table's entry in the const_and_copies_table. - Do record type casts into the available expression table. - - * tree-nomudflap.c (mf_marked_p): Mark arguments as being unused. - (mf_mark): Likewise. - - * c-decl.c (store_parm_decls): Strip away NOP_EXPRs when looking - for hidden use variables. - -2003-07-02 Frank Ch. Eigler - - * varasm.c (build_constant_desc): Propagate mudflap marked-ness - across constant copying. - -2003-07-02 Daniel Berlin - - * tree-ssa-pre.c (tree_perform_ssapre): Don't optimize things with - volatile ops or making aliased loads right now. - (create_expr_ref): Mark the phi result of the new phi as having - real refs. - (finalize_1): Mark the new temp as having real refs. - (repair_use_injury): Ditto. - (code_motion): Ditto. - -2003-07-01 Daniel Berlin - - * tree.h (struct tree_eref_common): Add injured flag. - Add EREF_INJURED macro. - -2003-07-01 Daniel Berlin - - * tree-flow-inline.h (stmt_ann): We have stmt_ann on E*_NODE's as well, - so use is_essa_node as well. - * tree-dfa.c (create_stmt_ann): Ditto. - * tree.h (is_essa_node): Declare. - * tree.c (is_essa_node): Define. - -2003-07-01 Jason Merrill - - * tree-cfg.c (prepend_stmt_to_bb): New fn. - (bsi_insert_after): Add to the beginning of an empty block. - -2003-07-01 Jeff Law - - * expr.c (expand_expr, case COND_EXPR): Correctly (?) handle - cases where a containing block has a stack level. Handle - cases where one arm is a GOTO_EXPR and the other arm has - side effects. - - * stmt.c (containing_blocks_have_cleanups_or_stack_level): New - function. - (any_pending_cleanups): Further simplification. - * tree.h (containing_blocks_have_cleanups_or_stack_level): Prototype. - -2003-06-30 Diego Novillo - - * tree-flow.h (struct tree_ann_common_d): Remove 'stmt' field. - Update all users. - (struct var_ann_d): Remove field 'has_real_refs'. Update all callers - with calls to SSA_NAME_HAS_REAL_REFS. - Remove field 'occurs_in_abnormal_phi'. Update all callers with - calls to SSA_NAME_OCCURS_IN_ABNORMAL_PHI. - * tree-flow-inline.h (var_ann): Only accept _DECL nodes. - (stmt_ann): Only accept GIMPLE statements. - (tree_stmt): Remove. Update all users. - - * tree-cfg.c (linearize_cond_expr): Handle cases where BB doesn't - have a postdominator. - (find_contained_blocks): Do not look inside COND_EXPR_COND nor - SWITCH_COND expressions. - - * tree-dfa.c (get_stmt_operands): Force virtual operands on - ASM_EXPRs. - (get_expr_operands): Handle SSA names when adding operands for - memory tags. - (add_stmt_operand): Handle SSA names. - Move checks for volatile operands earlier in the code. - (add_vdef): Re-format for readability. - (create_var_ann): Only allow _DECL nodes. - (create_stmt_ann): Only allow GIMPLE statements. - (dump_variable): Handle SSA names. - (dump_may_aliases_for): Likewise. - (may_access_global_mem_p): Handle SSA names. - (remove_phi_arg): If the argument removed was the last one with - real references, update the LHS of the PHI node. - (add_phi_arg): If the argument added has real references, propagate - the attribute into the LHS of the PHI node. - - * tree-pretty-print.c (dump_generic_node): Only retrieve basic - block information from GIMPLE statements. - Always output the THEN and ELSE clauses of COND_EXPR nodes. - - * tree-simple.c (is_gimple_stmt): Accept PHI_NODEs. - (is_gimple_id): Accept SSA_NAMEs. - - * tree-ssa-copyprop.c (copyprop_phi): If an argument is used as a - real operand, propagate the attribute into the LHS of the PHI. - - * tree-ssa-live.c (create_ssa_var_map): Don't set 'used' flag on - both the operand and the result of VDEFs. - Only register PHI results and arguments that have been used as real - operands. - (calculate_live_on_entry): Fix formatting in debugging message. - - * tree-ssa.c (register_new_def): Add new argument - 'is_real_operand'. If it's set, set SSA_NAME_HAS_REAL_REFS for the - new name. Update all callers. - (rewrite_operand): Add new argument 'is_real_operand'. If it's - set, set SSA_NAME_HAS_REAL_REFS to the operand. - (eliminate_build): Ignore PHI arguments and PHI results that have - not been used in real operands. - (rewrite_vdefs): Remove. Update all users. - (set_is_used): Don't handle SSA names. - (coalesce_ssa_name): Ignore PHI arguments that have not had real - references in the program. - - * tree.c (make_ssa_name): Update documentation. - * tree.h (IS_EMPTY_STMT): Call integer_zerop instead of comparing - against size_zero_node. - (SSA_NAME_HAS_REAL_REFS): Define. - (SSA_NAME_OCCURS_IN_ABNORMAL_PHI): Define. - (struct tree_ssa_name): Add bitfields 'has_real_refs' and - 'occurs_in_abnormal_phi'. - -2003-06-30 Jeff Law - - * c-simplify.c (gimplify_c_loop): Don't return a LOOP_EXPR for - a do ... while (0) loop. - - * expr.c (expand_expr, case COND_EXPR): Be smarter about expanding - a COND_EXPR with only one useful arm, which happens to be a GOTO_EXPR. - - * tree-cfg.c (remove_useless_stmts_and_vars): Don't remove user - variables unless we're at -O2 or higher. - -2003-06-30 Daniel Berlin - - * tree-ssa-pre.c (expr_phi_insertion): Stop optimizing the expression - if we have > some very large number of ephi operands, as it will - take an ungodly amount of memory and time. - (pre_expression): Push/pop gc context so we can do gc collection - in between expressions. - Throw away expression info right after done optimizing it. - -2003-06-30 Jason Merrill - - * gimplify.c (gimplify_call_expr): Check PUSH_ARGS_REVERSED. - - * gimplify.c (gimplify_modify_expr): Also force a call with a - possible nonlocal goto into a temporary. - (gimplify_return_expr): Don't duplicate the MODIFY_EXPR. - * tree-iterator.h (tsi_one_before_end_p): New fn. - -2003-06-29 Jeff Sturm - - * fold-const.c (fold): Don't save_expr unless TREE_SIDE_EFFECTS. - -2003-06-26 Diego Novillo - - * c-simplify.c (gimplify_stmt_expr): Handle statement-expressions - that don't end in a non-void expression. Emit a warning in that - case. - -2003-06-26 Daniel Berlin - - * tree-ssa-pre.c (fixup_domchildren): Rename from - compute_domchildren, change to not use our own array. - (domchildren): Remove variable. - (insert_occ_in_preorder_dt_order_1): Use dom_children now. - (insert_euse_in_preorder_dt_order_1): Ditto. - (search_dt_preorder): Ditto. - (handle_bb_creation): Fix to work properly. - (tree_perform_ssapre): Remove remnants of domchildren. - Redo dominator info if we have to due to a new block. - -2003-06-26 Andrew MacLeod - - * tree-cfg.c (handle_switch_split): Use a tree iterator to find the - real split point rather than a block iterator. - -2003-06-26 Jason Merrill - - * tree-simple.c (is_gimple_stmt): Complete. - -2003-06-24 Jeff Law - - * tree-cfg.c (remove_useless_stmts_and_vars): On the first - iteration, remove unused variables from BIND_EXPRs. - * tree-flow.h (var_ann_d): Add new field USED. - (set_is_used): Prototype. - (remove_useless_stmts_and_vars): Update prototype. - * tree-ssa-live.c (create_ssa_var_map): Note which variables - are used so that we can delete those which are not used. - * tree-ssa.c (create_temp): Mark the new temporary as being used. - (rewrite_out_of_ssa): Note if the call to remove_useless_stmts_and_vars - is the first iteration or not. - (set_is_used): New function. - - * c-decl.c (store_parm_decls): Variables and parameters on the - pending_sizes chain have nonlocal uses. - -2003-06-25 Daniel Berlin - - * tree-ssa-pre.c: Convert to ISO C. - (handle_bb_creation): New function. - (ephi_will_be_avail): Remove dead code. - (finalize_1): Use handle_bb_creation, start to fix edge insertion - related fun. - (maybe_find_rhs_use_for_var): Stop using tree_stmt. - (code_motion): Always get the temporary from the right place. - -2003-06-24 Jason Merrill - - * gimplify.c (gimplify_self_mod_expr): Add want_value parm. - For postfix ops, make sure it returns an rvalue. - (gimplify_expr): Copy a volatile reference into a temp. - (create_tmp_var): Require a complete type. - (create_tmp_alias_var): Use TYPE_VOLATILE on types. - * tree-simple.c (is_gimple_stmt): Flesh out a bit. - (is_gimple_val): Don't allow volatiles. - - * c-simplify.c (gimplify_expr_stmt): Don't insert a null pointer. - - * gimplify.c (gimplify_return_expr): Search through the gimple - form for the interesting MODIFY_EXPR. - (gimplify_modify_expr): Don't suppress posteffects if want_value. - -2003-06-24 Diego Novillo - - * tree-dfa.c (struct dfa_stats_d): Remove obsolete fields - num_tree_refs and size_tree_refs. Update all users. - (dump_dfa_stats): Also dump information about VUSE and VDEF - operands. - * tree-ssa.c (rewrite_vdefs): Dump information about VDEF operators - promoted to real copies if -fdump-tree-optimized-details is given. - -2003-06-23 Jeff Law - - * tree-ssa.c (avail_expr_eq): Verify types are the same before - handing expressions to operand_equal_p. - - * tree-cfg.c (make_edges): Remove fake edges before building - extra edges for TRY_FINALLY_EXPRs. Delete unnecessary edges - leaving the TRY block in a TRY_FINALLY_EXPR. - (find_contained_blocks): Don't consider statements in the CATCH - clause of a TRY_CATCH_EXPR when noting the last statement in - the block. - * tree-dfa.c (remove_phi_arg): If we removed the last PHI argument, - then remove the entire PHI node. - * tree-ssa-dce.c (stmt_useful_p): Consider the other EH related - nodes useful as well (TRY_FINALLY_EXPR, TRY_CATCH_EXPR, and - EH_FILTER_EXPR). - - * tree-cfg.c (remove_useless_stmts_and_vars): If the body of a - TRY_CATCH_EXPR is empty, then the entire TRY_CATCH_EXPR can - be safely removed. - - * tree-cfg.c (find_contained_blocks): Renamed from - find_contained_blocks_and_edge_targets. Remove targets - bitmap argument and no longer record targets of edges. - All callers changed. - (make_edges): No longer need TRY_TARGETS bitmap. Kill it. - Simplify code which creates additional edges out of the TRY - block and the FINALLY block in a TRY_FINALLY_EXPR. - -2003-06-23 Diego Novillo - - * tree-alias-common.c (ptr_may_alias_var): Don't handle memory - tags. - * tree-dfa.c (struct alias_set_d): Remove. Update all users. - (alias_sets): Remove. Update all users. - (struct walk_state): Remove field aliased_objects_found. - (struct alias_map_d): New. - (addressable_vars): New local variable. - (pointers): New local variable. - (add_stmt_operand): Do not force aliased variables to be in virtual - operands. - (register_alias_set): Remove. Update all users. - (find_alias_for): Remove. Update all users. - (get_memory_tag_for): New local function. - (num_referenced_vars): Remove. - (num_aliased_objects): Remove. Update all users. - (aliased_objects): Remove. Update all users. - (aliased_objects_alias_set): Remove. Update all users. - (num_call_clobbered_vars): Remove. Update all users. - (dump_variable): Move code to dump aliases ... - (dump_may_aliases_for): ... here. - (debug_may_aliases_for): New function. - (compute_may_aliases): Initialize 'addressable_vars' and 'pointers' - arrays. - (compute_alias_sets): Re-implement matching pointers with - addressable variables. Limit the size of may-alias sets. - (may_alias_p): Re-implement to compare pointers against variables, - instead of memory tags. - (dump_alias_info): Re-implement to display pointers and addresable - variables arrays. - (add_referenced_var): Collect addressable variables and pointers. - Share memory tags among pointers that may alias each other. - * tree-flow.h (num_referenced_vars): Change to macro. - (referenced_var): Likewise. - (num_call_clobbered_vars): Likewise. - (call_clobbered_var): Likewise. - (dump_may_aliases_for): Declare. - (debug_may_aliases_for): Declare. - * tree-ssa.c (rewrite_vdefs): New local function. - (rewrite_out_of_ssa): Call it. - -2003-06-23 Jeff Law - - * tree-cfg.c (make_edges): Walk TRY_FINALLYs inner to outer and - simplify creation of special edges related to the TRY_FINALLY_EXPR. - - * tree-cfg.c (remove_useless_stmts_and_vars): More aggressively - remove TRY_CATCH_EXPRs and TRY_FINALLY_EXPRs. - - * tree-cfg.c (make_edges): Remove fake edges. - (make_exit_edges): Mark edges from nonreturning functions to the - exit block as being fake edges. - - * gimplify.c (gimplify_modify_expr): Don't create a new MODIFY_EXPR, - reuse the existing one. - -2003-06-23 Andrew MacLeod - - * tree-cfg.c (find_insert_location): Default case should insert after - the last stmt in the block. - -2003-06-22 Jeff Sturm - - * Makefile.in (old-tree-inline.o): Remove rule. - * old-tree-inline.c: Remove. - -2003-06-19 Jeff Law - - * tree-cfg.c (make_ctrl_stmt_edges): Do not create bogus edges - to the successor block of TRY_CATCH_EXPR, TRY_FINALLY_EXPR, - CATCH_EXPR or EH_FILTER_EXPR nodes. - - * gimplify.c (gimplify_modify_expr): If the RHS of an MODIFY_EXPR - might throw, then make sure its result goes into a temporary. - - * tree-cfg.c (handle_switch_split): Handle case where target - block has only one statement (the case label itself). - -2003-06-19 Diego Novillo - - * doc/invoke.texi: Add documentation for -ftree-dominator-opts - that was missing from an earlier patch. - -2003-06-19 Jeff Sturm - - * gimplify.c (gimplify_expr): Handle LABELED_BLOCK_EXPR - and EXIT_BLOCK_EXPR. - (gimplify_labeled_block_expr): New function. - (gimplify_exit_block_expr): New function. - -2003-06-18 Andrew MacLeod - - * tree-cfg.c (EDGE_INSERT_LOCATION_BSI_AFTER): New location code. - (cleanup_switch_expr_graph): Find default case correctly. - (bsi_insert_after): Get BB from stmt when its avialble. - (bsi_insert_before): Get BB from stmt when its avialble. - (handle_switch_fallthru): New. Handle edge from switch to the fallthru. - (handle_switch_split): Re-implement using new scheme. - (find_insert_location): Use handle_switch_fallthru (). - (bsi_insert_on_edge_immediate): Handle EDGE_INSERT_LOCATION_BSI_AFTER. - * tree-iterator.h (tsi_last): New. Find last stmt in a chain. - -2003-06-17 Daniel Berlin - - * tree-alias-common.c (find_func_aliases): Guard cast op - properly. - (ptr_may_alias_var): Small optimization to avoid calling - decl_function_context so often. - * tree-alias-ander.c (ander_simple_assign): Ignore if lhs == rhs. - -2003-06-17 Steven Bosscher - - * timevar.def (TV_TREE_BUILD_FUD_CHAINS): Remove. - -2003-06-16 Diego Novillo - - * tree-ssa-ccp.c (DONT_SIMULATE_AGAIN): Define. - (visit_phi_node): Don't do anything if the PHI node doesn't need to - be simulated. - If the PHI variable does not have real references, consider it - VARYING. - If the PHI node has a lattice value of VARYING, set - DONT_SIMULATE_AGAIN. - (visit_stmt): Don't do anything if the statement doesn't need to be - simulated. - Only visit conditional branches COND_EXPR and SWITCH_EXPR. - If the statement doesn't produce a result mark it with - DONT_SIMULATE_AGAIN. - (visit_assignment): Remove unnecessary def_op() check. - If the value is VARYING, mark the statement with - DONT_SIMULATE_AGAIN. - (visit_cond_stmt): Remove unnecessary is_ctrl_stmt() check. - If the predicate is VARYING, mark the statement with - DONT_SIMULATE_AGAIN. - (initialize): Clear DONT_SIMULATE_AGAIN flag for every statement - and PHI node. - (likely_value): Get statement operands after checking if it makes - aliased loads or has volatile operands. - -2003-06-16 Jeff Law - Jason Merrill - - * except.c (enum eh_region_type): Don't declare the enumeration - members here. Instead do it in except.h. - (expand_eh_hander): Use expr_first instead of open-coding it. - * except.h (enum eh_region_type): Define the enumeration memebers - here. - * tree-cfg.c (last_exec_block): Break out from make_edges. - (could_trap_p): No longer static. - (get_eh_region_type): New function. - (make_try_expr_blocks): Keep the whole TRY_CATCH_EXPR or - TRY_FINALLY_EXPR instead of just the handler part in the - EH_STACK varray. For a cleanup, record which cleanup higher - in the EH_STACK it can reach. - (make_edges): Use last_exec_block. - (make_ctrl_stmt_edges): Thread cleanups as needed. - (compute_reachable_eh): Use get_eh_region_type. Properly - track when we can skip cleanups. Skip cleanups when possible. - * tree-flow.h (could_trap_p): Prototype. - -2003-06-16 Andrew Macleod - - * tree-cfg.c (find_insert_location): Check for control_altering stmts, - and abort if its an unrecognized BB ending stmt. - (bsi_commit_first_edge_insert): Rename to bsi_insert_on_edge_immediate, - externalize, and change the interface to an on-demand inserter. - (bsi_commit_edge_inserts): Call bsi_insert_on_edge_immediate(). - * tree-flow.h (bsi_insert_on_edge_immediate): Prototype. - * tree-pretty-print.c (dump_block_info): Add 'ab' for abnormal edges. - * tree-ssa-dce.c (process_worklist): Use sparse bitmaps. - * tree-ssa-live.c (calculate_live_on_entry): Abort if ssa_name has a - definition, but is also live on entry. - * tree-ssa.c (coalesce_ssa_name): Call abort() instead of error(), and - provide more detailed info. - (rewrite_out_of_ssa): Provide CFG dumps before and after rewritting. - -2003-06-16 Frank Ch. Eigler - - * tree-mudflap.c (mf_mark): Use GC-compatible htab_create_ggc. - -2003-06-15 Jeff Law - - * tree-ssa-ccp.c (visit_phi_node): If the PHI is already known - to be varying, don't recompute its value. - -2003-06-14 Jeff Law - Jason Merrill - - * tree-cfg.c (make_blocks): Do not return early if presented - with an empty statement. - (make_ctrl_stmt_edges): Do not try to optimize an empty TRY - block in a TRY_FINALLY_EXPR. Simplify TRY_FINALLY_EXPR, - TRY_CATCH_EXPR, CATCH_EXPR, and EH_FILTER_EXPR now that empty - statements are no longer shared. - -2003-06-14 Kazu Hirata - - * tree-ssa-pre.c: Fix a comment typo. - -2003-06-13 Diego Novillo - - * tree-dfa.c (get_stmt_operands): Abort if the statement is a - variable. - (create_var_ann): Abort if the variable is not a _DECL node. - -2003-06-13 Frank Ch. Eigler - - * tree-mudflap.c (mudflap_c_function): Change calling conventions so - as to return the instrumented function body rather than changing the - given fndecl in place. Gimplify at the very end, for cosmetic - reasons. - * tree-mudflap.h, tree-nomudflap.c: Corresponding changes. - * c-decl.c (c_expand_body_1): Call mudflap_c_function just before - rtl expansion of function body; don't interfere with inlining. - -2003-06-13 Diego Novillo - - * c-simplify.c: Fix typo in previous change. - -2003-06-13 Diego Novillo - - * c-common.c, c-common.h, c-decl.c, c-lang.c, c-simplify.c, - flags.h, gimplify.c, langhooks-def.h, langhooks.c, langhooks.h, - simple-break-elim.c, simple-goto-elim.c, toplev.c, - tree-alias-common.c, tree-cfg.c, tree-dfa.c, tree-dump.c, - tree-inline.c, tree-mudflap.c, tree-simple.c, tree-simple.h, - tree-ssa-ccp.c, tree-ssa-pre.c, tree-ssa.c, tree.h, doc/invoke.texi: - Rename SIMPLE to GIMPLE everywhere. - -2003-06-13 Andrew MacLeod - - * tree-cfg.c (bsi_commit_first_edge_insert): Only consider non-abnormal - edges when determining whether an edge needs to be split. - - * tree-ssa-dce.c (process_worklist): When checking for GOTO and - COND_EXPR's that are necessary, check each BB's predecessors only once. - -2003-06-12 Jeff Law - - * tree-ssa.c (avail_expr_eq): Add some checking code to - detect when equal expressions have different hash values. - - * tree.c (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. - - * Makefile.in (gimplify.o): Depend on $(RTL_H). Ugh. - * gimplify.c: Include "rtl.h". - (simplify_call_expr): Use call_expr_flags and check for ECF_CONST - rather than checking bits in the tree node directly. - - * fold-const.c (operand_equal_p): CALL_EXPRs with side effects - are never equal. - -2003-06-11 Frank Ch. Eigler - - * gcc.c (MFWRAP_SPEC): Always wrap main(). - * tree-mudflap.c (mudflap_enqueue_decl): Mark enqueued decls - to prevent their repeated processing. - -2003-06-11 Daniel Berlin - - * tree-ssa-pre.c: add graph_dump_file, graph_dump_flags. - (finalize_1): Modify to use temporary in expr_info structure, - remove temporary from arguments. - Use bsi_insert_on_edge for ephi insertions. - Set EREF_TEMP on inserted euses. - (repair_phi_injury): Note (to dump file) injuries we have - repaired already. - (repair_use_injury): Ditto. - (repair_euse_injury): Ditto. - (count_stmts_in_bb): Count both forwards and backwards, and make - sure the numbers agree. This makes sure both the head and end are - updated properly. - (code_motion): Use the EREF_TEMP, rather than calculating the - reaching def, when possible, because it's faster. - Add the phi we created when we insert the ephi. We should always - be able to get the reaching def of the ephi from EREF_TEMP (since - the args should have already been inserted, or in the case of - phi's, have a phi already allocated), so abort if we can't. - (create_expr_ref): Take expr_info parameter. Make a phi for the - ephi's, but don't add to the bb yet. Update all callers. - (get_default_def): New function. - (get_reaching_def): Use it to find the default def when we hit the - top of the dom tree. - (struct expr_info): Add temp. - (new_rename_1): Dump out occurrences after rename 1, but before - rename 2. - (requires_edge_placement): Now that we can insert on edges, we - shouldn't need this, so make it always return false. - Will remove unless something bad comes up. - (pre_expression): Start working on dumping the redundancy graph. - - * tree.h (struct treeeref_common): Add the temp member. - Add EREF_TEMP macro. - (tree_dump_index): Reorder to match actual optimization order. - Add TDI_predot. - - * tree-dump.c: Ditto. - -2003-06-11 Jeff Law - - * gimplify.c (simplify_call_expr): Clear TREE_SIDE_EFFECTS for - calls to "const" functions. - - * tree-inline.c (expand_call_inline): Recalculate TREE_SIDE_EFFECTS - properly when inlining gimplified functions. - - * fold-const.c (operand_equal_p): Handle CALL_EXPRs. - - * tree-cfg.c (first_exec_block): Kill. - (make_edges): Use bb_for_stmt rather than first_exec_block. - (make_ctrl_stmt_edges, make_exit_edges): Likewise. - (make_loop_expr_edges, make_cond_expr_edges): Likewise. - (successor_block): Don't skip empty statements. - - * tree-ssa.c (rewrite_and_optimize_stmt): Do not special case - CALL_EXPRs they're caught by the TREE_SIDE_EFFECTS test. - - * tree-ssa.c (rewrite_and_optimize_stmt): Improve/correct setting of - may_optimize_p. Simplify later code knowing may_optimize_p is - correctly set. - (avail_expr_hash): Do not use iterative_hash_object or deal with - SSA names for real operands. Instead use iterative_hash_expr - which handles both. - (avail_expr_eq): Use operand_equal_p to test for equality. - -2003-06-11 Steven Bosscher - - * tree-flow.h, tree-ssa-ccp.c, tree-ssa-copyprop.c, - tree-ssa-dce.c, tree-ssa-live.c, tree-ssa-live.h: - Convert function prototypes to ISO C. - -2003-06-10 Jeff Law - - * toplev.c (parse_options_and_default_flags): Fix typo in last change. - - * gimplify.c (simplify_expr, case BIT_FIELD_REF): Make sure - to call recalculate_side_effects after gimplifying the - operands. - -2003-06-10 Diego Novillo - - * toplev.c (flag_tree_dom): New variable. - (f_options): Add new entry for -ftree-dominator-opts. - (parse_options_and_default_flags): Enable flag_tree_dom for - -O1 and higher. At -O2 and higher, disable flag_tree_dom is - SSA-PRE is also specified. - * flags.h (flag_tree_dom): Declare. - * doc/invoke.texi: Document -ftree-dominator-opts. - * tree-ssa.c (rewrite_block): Disable tracking of available - expressions when not doing dominator optimizations. - Call rewrite_stmt when not doing dominator optimizations. - Otherwise, call rewrite_and_optimize_stmt. - (rewrite_stmt): Don't optimize the statement. Just rename. - (rewrite_and_optimize_stmt): Optimize the statement while rewriting - its operands. - (lookup_avail_expr): Update comments. - -2003-06-10 Andrew Haley - - * c-simplify.c (c_simplify_stmt): case ASM_STMT: Ensure qualifiers - come from input statement. - -2003-06-09 Andrew MacLeod - - * tree-cfg.c (handle_switch_split): Update PHI nodes when splitting. - (tree_split_edge): Update PHI nodes in destination block. - -2003-06-09 Steven Bosscher - - * basic-block.h, tree-dfa.c, tree-ssa.c, tree-cfg.c, - tree-flow.h: Convert function prototypes to ISO C. - -2003-06-09 Daniel Berlin - - * tree-cfg.c (bsi_commit_edge_inserts): Fix computation of - new_blocks. - -2003-06-08 Diego Novillo - - * tree-cfg.c (handle_switch_split): Don't allocate basic block - annotations more than once. - (bsi_commit_first_edge_insert): Likewise. - -2003-06-07 Jeff Sturm - - * tree-cfg.c (could_trap_p): New function. - (stmt_ends_bb_p): Handle flag_non_call_exceptions. - (make_exit_edges): Handle flag_non_call_exceptions. - (is_ctrl_altering_stmt): Handle flag_non_call_exceptions. - * tree-inline.c (walk_tree): Add case for CHAR_TYPE. - * tree-ssa-dce.c (stmt_useful_p): Keep all CATCH_EXPRs. - -2003-06-05 Jason Merrill - - * stmt.c (asm_op_is_mem_input): New fn. - * tree.h: Declare it. - * gimplify.c (simplify_asm_expr): Call resolve_asm_operand_names. - Use is_simple_modify_expr_lhs for mem input ops. - -2003-06-05 Frank Ch. Eigler - - * c-mudflap.c (mflang_register_call): Give the synthetic decl - undefined (not zero) size. - -2003-06-05 Frank Ch. Eigler - - * tree-mudflap.c (mx_flag): Remove. Update callers to use mf_mark. - (TREE_MUDFLAPPED_P): Remove. Update callers to use mf_marked_p. - (mf_mark, mf_marked_p): Replacement functions to replace old node - marking based on tree flag-bits. - (mf_mostly_copy_tree_r): Preserve markedness across copies. - * tree-mudflap.h: Add new decls - * c-mudflap.c (mx_flag): Remove. Update callers to use mf_mark. - -2003-06-04 Diego Novillo - - * tree-dfa.c (add_stmt_operand): Always consider non-scalar types - virtual operands. - -2003-06-04 Andrew MacLeod - - * toplev.c (parse_options_and_default_flags): Turn tree_copyprop on by - default. - * tree-cfg.c (linearize_control_structures, linearize_cond_expr, - replace_stmt, merge_tree_blocks, remap_stmts): Fix PROTOS. - (find_insert_location): Add additional basic block parameter. Handle - switch stmts. - (handle_switch_split): New. Split edges to switch labels. - (bsi_commit_first_edge_insert): Add extra parameter to - find_insert_location call. Fix split block chaining in THEN & ELSE. - * tree-ssa-live.c (calculate_live_on_entry): Process all PHI def's - after all the arguments have been processed. - * tree-ssa.c (struct ssa_stats_d, struct loops *loops, var_is_live, - rewrite_into_ssa): Remove old UNSSA code. - (rewrite_block): Remove stmt is rewrite_stmt returns 1. - (assign_vars): Remove abort and enable overlapping live ranges. - (replace_variable): New. Replace SSA name with the partition variable. - (rewrite_out_of_ssa): Use replace_variable(). - (dump_tree_ssa_stats): Remove old UNSSA code. - (rewrite_stmt): Return 1 if stmt should be deleted. Remove old - UNSSA code. - -2003-06-03 Diego Novillo - - * gimplify.c (simplify_call_expr): Move code to mark MD builtins - non-simplifiable... - * tree-simple.c (is_simple_call_expr): ... here. - -2003-06-03 Diego Novillo - - * c-parse.in: Fix botched merge. - -2003-06-03 Diego Novillo - - * tree-mudflap.c (MARK_TREE_MUDFLAPPED, TREE_MUDFLAPPED): - Use TREE_VISITED instead of TREE_BOUNDED. - * c-mudflap.c (TREE_MUDFLAPPED): Likewise. - * tree-pretty-print.c (dump_generic_node): Remove - references to TYPE_QUAL_BOUNDED. - -2003-06-03 Jason Merrill - - * gimplify.c (simplify_cond_expr): Call truthvalue_conversion - before invert_truthvalue. - -2003-06-02 Daniel Berlin - - * tree-dfa.c (compute_may_aliases): Call delete_alias_vars whenever we - call create_alias_vars. - - * tree-alias-common (ptr_may_alias_var): Cleanup determination of - global vars and whatnot. - -2003-06-02 Diego Novillo - - * Makefile.in (tree-ssa.o, tree-cfg.o): Add dependency on cfgloop.h - (tree-optimize.o): Remove dependency on cfgloop.h. - * basic-block.h (struct basic_block_def): Fix documentation for - field 'loop_father'. - * tree-dfa.c (add_referenced_var): Fix type of element - pushed into aliased_objects_alias_set. - * tree-optimize.c: Don't include cfgloop.h - (optimize_function_tree): Move code to initialize loop optimizer... - * tree-cfg.c (build_tree_cfg): ... here. - * tree-ssa.c: Include cfgloop.h. - (loops): New file local variable. - (rewrite_into_ssa): Initialize/finalize loop optimizer. - (rewrite_stmt): Call var_is_live when processing redundant - assignments to the same LHS. - (var_is_live): Add heuristic to discover overlapping definitions in - loops that do not have PHI nodes for VAR at the loop header. - -2003-06-02 Jason Merrill - - * gimplify.c (simplify_expr): Only allow a cast from a 'val'. - * tree-simple.c (is_simple_cast): Likewise. - -2003-06-02 Andrew MacLeod - - * tree-cfg.c (bsi_insert_before): Update end of block pointer if we - inserted before the last stmt in a block. (The container changed). - * tree-ssa.c (elim_backward): Inserting copy should be within - conditional check. - (elim_create): Only select one bit instead of the all. - -2003-06-01 Jason Merrill - - * Makefile.in: Remove lots of -Wno-error targets. - - * tree-simple.c (recalculate_side_effects): Check TREE_THIS_VOLATILE. - - * gimplify.c (simplify_compound_lval): Call - recalculate_side_effects on each of the subexpressions. - - * expr.c (expand_expr) : Use the if-statement code if - it's void. - -2003-06-01 Daniel Berlin - - * tree-alias-common.c: Remove setting of DECL_CONTEXT in temp vars, - it's done in create_tmp_alias_var for us. - (ptr_may_alias_var): Check if the variables are memory tags, and get - the associated pointers if they are. - -2003-05-30 Frank Ch. Eigler - - * tree-mudflap.c (mudflap_c_function, enqueue_constant, enqueue_decl): - Rework dumping logic. - -2003-05-27 Jason Merrill - - * tree-ssa.c (avail_expr_hash): Simplify by using iterative_hash_expr - in more places. - * tree.c (iterative_hash_expr): Handle SSA_NAME. - -2003-05-29 Jeff Law - - * tree-ssa.c (rewrite_stmt): Detect and remove redundant - memory loads. - (avail_expr_hash): Use iterative_hash_expr, not iterative_hash_object - as needed. - -2003-05-27 Jason Merrill - - * gimplify.c (shortcut_cond_expr): Avoid jumps to jumps. - -2003-05-26 Jason Merrill - - * c-simplify.c (simplify_switch_stmt): A SWITCH_EXPR also gets the - source location of its first line. - -2003-05-24 Diego Novillo - - Do not consider INDIRECT_REF nodes to be variables. - - * gimplify.c (create_tmp_alias_var): Allow temporaries of - ARRAY_TYPE to be created. - Create new temporaries with function scope. - Don't call build_type_variant. - Mark the temporary volatile if its type is volatile. - - * tree-dfa.c: Change every function that received a variable and - its base symbol to just receive the variable. Update all callers. - (struct alias_set_d): Remove field 'tag_sym'. - Add documentation for fields. - (struct walk_state): Add field 'is_indirect_ref'. - Add documentation for fields. - (opf_ignore_bp): Remove. Update all users. - (aliased_objects_base): Remove. Update all users. - (get_stmt_operands): If the statement had virtual operands, do not - scan them again. - (get_expr_operands): Handle INDIRECT_REF nodes by adding an operand - for the memory tag represented and a use for the base pointer. - Don't add VUSE operands for pointer arguments to functions. - Force a virtual operand when processing ADDR_EXPR nodes. - (add_stmt_operand): If the variable is an alias tag, always add it - as a virtual operand. - Remove code to handle INDIRECT_REF nodes. - Move code to determine if a pointer may point to global memory to - find_vars_r. - Set has_volatile_ops flag in the statement when adding operands for - globals and local statics. - If the variable is an alias tag, mark the statement as making - aliased loads or stores. - (set_def): Mark the variable as having real references. - (add_use): Likewise. - (add_vdef): Remove code to re-add previous virtual operands. - If PREV_VOPS is set, don't add a new virtual operand. - (add_vuse): Likewise. - (dump_variable): Show annotation bitfields 'mem_tag', - 'occurs_in_abnormal_phi', 'is_alias_tag' and 'is_stored'. - (compute_may_aliases): Initialize walk_state.is_indirect_ref to 0. - (compute_alias_sets): Don't remove alias sets with exactly one - entry. - (register_alias_set): Re-implement to support memory tags instead - of INDIRECT_REF nodes. Document algorithm. - (find_alias_for): Likewise. - (may_alias_p): Likewise. - (add_may_alias): Likewise. - (find_vars_r): If a pointer assignment is found and the RHS of the - assignment may access global memory, mark the pointer as pointing - to global memory. - Handle INDIRECT_REF nodes by marking the base pointer as - dereferenced. - Do not share INDIRECT_REF nodes. - (add_referenced_var): Don't handle INDIRECT_REF nodes. - If called from a store operation, mark the variable as stored. - By default mark the variable as not having real references. - When processing a pointer that has been dereferenced, create a - memory tag for the pointer. - (add_indirect_ref_var): Remove. Update all callers. - (get_virtual_var): Don't handle INDIRECT_REF nodes. - (find_hidden_use_vars_r): - - * tree-flow-inline.h (get_var_ann): New function. Change all - functions that called var_ann and create_var_ann to call - get_var_ann. - (get_stmt_ann): Likewise. - (set_indirect_ref): Remove. Update all callers. - (indirect_ref): Remove. Update all callers. - (create_indirect_ref): Remove. Update all callers. - - * tree-flow.h (struct var_ann_d): Remove fields 'is_loaded', - 'unused' and 'indirect_ref'. - Add fields 'mem_tag', 'is_mem_tag', 'is_alias_tag' and - 'has_real_refs'. - (get_var_ann, get_stmt_ann): Declare. - (create_indirect_ref, set_indirect_ref, indirect_ref): Remove. - - * tree-pretty-print.c (dump_generic_node): Don't handle - INDIRECT_REF nodes inside SSA_NAME nodes. - - * tree-simple.c (get_base_symbol): Don't handle INDIRECT_REF nodes. - (is_simple_unary_expr): Don't call STRIP_NOPS. - - * tree-ssa-copyprop.c (get_original): Don't handle INDIRECT_REF - nodes. Allow pointers to be copy propagated. - - * tree-ssa-dce.c (need_to_preserve_store): Don't handle - INDIRECT_REF nodes. - - * tree-ssa-live.c (create_ssa_var_map): Only process variables that - have real references. - - * tree-ssa.c: Update documentation regarding INDIRECT_REF nodes. - (update_indirect_ref_vuses): Remove. Update all users. - (update_pointer_vuses): Remove. Update all users. - (MAY_COPYPROP_P): Remove. Update all users. - (create_temp): Don't handle INDIRECT_REF nodes. - (coalesce_ssa_name): Ignore variables that have no real references. - (rewrite_stmt): Mark the statement modified if a new copy or - constant was propagated into it. - Don't special-case pointers. - (rewrite_operand): Don't handle INDIRECT_REF nodes. - * tree.h (SSA_VAR_P): Remove. Update all users. - (SSA_DECL_P): Rename to SSA_VAR_P. - -2003-05-22 Jeff Law - - * gimplify.c (simplify_expr): Avoid gimplifying expressions which - are already in gimple form. - * tree-simple.c (is_simple_constructor): No longer treat TREE_STATIC - constructors specially. - (is_simple_addr_expr_arg): If we're taking the address of a label - for the first time, then the ADDR_EXPR is not in gimple form. - -2003-05-22 Jason Merrill - - * tree-cfg.c (compute_reachable_eh): Don't skip cleanups. - - * tree-dfa.c (add_referenced_var): Read-only INDIRECT_REFs can - also be clobbered by function calls. - -2003-05-22 Jeff Law - - * expr.c (convert_move): Avoid making silly copies. - (expand_expr, case BIND_EXPR): Correctly determine when the - result of the BIND_EXPR will not be used. - -2003-05-21 Jason Merrill - - * tree-cfg.c (compute_reachable_eh): Handle multiple CATCH_EXPRs. - - * builtins.c (simplify_builtin_next_arg): Split out from... - (expand_builtin_next_arg): ...here. - (simplify_builtin_va_start): Split out from... - (expand_builtin_va_start): ...here. - (simplify_builtin): Call it. - * gimplify.c (simplify_call_expr): If simplify_builtin worked, - just return. - -2003-05-20 Jason Merrill - - * gimplify.c (shortcut_cond_expr, shortcut_cond_r): Rewrite. - (simplify_cond_expr): Also invert ifs with no 'then'. - (build_and_jump): New fn, split out from... - (gimplify_exit_expr): ...here. Don't bother gimplifying the - condition. - - * gimplify.c (simplify_save_expr): Add post-effects to the - postqueue. - - * gimplify.c (mostly_copy_tree_r): Don't unshare constants. - -2003-05-20 Jeff Law - - * expr.c (expand_expr, case COND_EXPR): Avoid useless RTL generation - when the THEN or ELSE arm is empty. - - * tree-cfg.c (make_loop_expr_blocks): Do not accept next_block_link - as an argument, make it a local variable. Callers changed. - - * tree-cfg.c (remove_useless_stmts_and_empty_vars): Eliminate - GOTO_EXPRs which jump to the next statement occuring in an - outer control/block structure nest. - -2003-05-20 Diego Novillo - - * tree-ssa-ccp.c (set_rhs): Fix typo in handling of - RETURN_EXPR nodes. - -2003-05-19 Daniel Berlin - - * tree-alias-common.c (alias_get_name): Handle unnamed variables once - and for all. - -2003-05-19 Jeff Law - - * tree-ssa-dce.c (remove_conditional): If the conditional's block - has no post dominator in the CFG, then wire it to the exit node. - Avoid unnecessary check of bb->succ. - -2003-05-17 Daniel Berlin - - * tree-pretty-print.c (MASK_POINTER): Parameter is P, not node. - -2003-05-17 Daniel Berlin - - * tree-alias-common.c (get_alias_var): Handle REFERENCE_EXPR. - (find_func_aliases): Ditto. - (get_alias_var): Use POINTER_TYPE_P. - -2003-05-16 Frank Ch. Eigler - - * gcc.c (cc1_options): Correct "-fmudflapth" handling. - * tree-mudflap.c (mudflap_c_function, mf_build_check_statement_for): - Use locally cached mask/shift values only in single-threaded mode. - -2003-05-16 Daniel Berlin - - * tree-alias-common.c (ptr_may_alias_var): Fix DECL_CONTEXT - checking. - -2003-05-16 Andrew MacLeod - - * tree-flow.h (ssa_make_edge): Remove prototype. - * tree-ssa-dce.c (remove_dead_stmt): Change comment about removing - conditionals. - (remove_conditional): Don't update PHI nodes or call ssa_make_edge. - * tree-ssa.c (ssa_make_edge): Remove. - -2003-05-16 Jeff Law - - * tree-cfg.c (remove_useless_stmts_and_vars): Handle case where - both arms of an if-then-else simply jump to the same location. - - * tree-ssa-ccp.c (get_rhs): Correctly handle MODIFY_EXPR embedded in - a RETURN_EXPR. - (set_rhs): Likewise. - -2003-05-15 John David Anglin - - * Makefile.in (regmove.o-warn): Change to -Wno-error. - -2003-05-15 Andrew MacLeod - - * tree-cfg.c (enum find_location_action): Enum for find_insert_location. - (bsi_insert_before): Handle insert at start of a BB and update pointers - from parents if appropriate. - (find_insert_location): Handle COND_EXPR properly. Return - an enum type indicating what action to take on the returned value. - (bsi_commit_first_edge_insert): Use new returned action. - -2003-05-15 Jeff Law - - * tree-cfg.c (make_edges): Factor out loop invariants from - code to insert edges from the TRY to the FINALLY block. - Avoid creating unnecessary edges from the end of the - FINALLY block back to the start of the FINALLY block. - -2003-05-15 Diego Novillo - - * tree-ssa.c (rewrite_out_of_ssa): Undo previous patch. - -2003-05-15 Diego Novillo - - * tree-ssa.c (rewrite_out_of_ssa): Don't dump the optimized - function after the SSA->normal pass. - -2003-05-14 Toon Moene - - * Makefile.in: Add additional -Wno-error targets for Alpha. - -2003-05-13 Jason Merrill - - * gdbinit.in (pgs, pge): New macros. - - Implement expression temporary optimization. - * gimplify.c (gimplify_ctx): Add temp_htab field. - (push_gimplify_context): Initialize it. - (pop_gimplify_context): Destroy it. - (simplify_expr): If there's no internal postqueue, generate an - expression temporary. - (gimple_tree_hash, gimple_tree_eq): New fns. - (create_tmp_from_val, lookup_tmp_var): New fns. - (get_formal_tmp_var): New fn. - (internal_get_tmp_var): New fn. - (get_initialized_tmp_var): Use it. - * tree-simple.h: Declare it. - - * gimplify.c (simplify_cond_expr): Reorganize. - (shortcut_cond_expr, shortcut_cond_r): New fns. - (build_and_jump): New fn. - (gimplify_exit_expr): Use it. - - * gimplify.c (simplify_expr): Do better at stripping unnecessary - NOPs. Tidy GOTO_EXPR handling. Don't allow NON_LVALUE_EXPR. - * tree-simple.c (is_simple_modify_expr): Don't allow NON_LVALUE_EXPR. - (is_simple_binary_expr, is_simple_condexpr): Likewise. - (is_simple_unary_expr, is_simple_compound_lval): Likewise. - (is_simple_id): Likewise. - - * tree-ssa.c (rewrite_stmt): Discard redundant assignments. - (avail_expr_eq): Don't test ops1 == ops2. - (avail_expr_hash): Use iterative_hash_object. - -2003-05-13 Jeff Law - - * tree-cfg.c (cleanup_tree_cfg): Update comments. Set repeat - anytime we remove a control structure. - - * tree-flow.h (struct var_ann_d): New field occurs_in_abnormal_phi. - * tree-ssa.c (MAY_COPYPROP_P): Do not allow copy propagations - if either argument occurs in an abnormal phi. - * tree-dfa.c (add_phi_arg): Set occurs_in_abrnomal_phi as needed. - * tree-ssa-copyprop.c (copyprop_stmt): Do not allow copy - propagations if either argument occurs in an abnormal phi. - (copyprop_phi): Likewise. - -2003-05-12 Diego Novillo - - * c-common.h (STATEMENT_CODE_P): Use size_t cast instead - of int. - (INIT_STATEMENT_CODES): Change type of local variable i to - size_t. - -2003-05-12 Diego Novillo - - * c-pretty-print.c (dump_c_node): Call CONSTRUCTOR_ELTS - to access the operand of a CONSTRUCTOR node. - * tree-pretty-print.c (dump_generic_node): Likewise. - -2003-05-11 Diego Novillo - - * c-simplify.c (simplify_if_stmt): Replace calls to - warning_with_file_and_line with warning. - -2003-05-12 Frank Ch. Eigler - - * toplev.c (lang_independent_options): Add "-fmudflapth". - * flags.h (flag_mudflap): Document meaning of >1 value. - * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): Add -fmudflapth support. - (cpp_unique_options, cc1_options): Ditto. - -2003-05-10 Sebastian Pop - - * gimplify.c (simplify_expr): Replace CONST_DECL with its DECL_INITIAL. - -2003-05-09 Sebastian Pop - - * tree-optimize.c (optimize_function_tree): Clarify the use of the - loop analyzer. - -2003-05-09 Jeff Law - - * c-simplify.c (simplify_cleanup): Remove code which optimizes - TRY_FINALLY and TRY_CATCH. It doesn't trigger. - - * tree-cfg.c (remove_useless_stmts_and_vars): Optimize away - TRY_CATCH and TRY_FINALLY blocks when possible. - -2003-05-09 Diego Novillo - - * tree-pretty-print.c (dump_generic_node): CONSTRUCTOR - nodes have only one operand now. - -2003-05-08 Andrew MacLeod - - * tree-cfg.c (pdom_info): New file level static. - (cleanup_tree_cfg): Free dominance info, if it was used. - (bsi_replace): New. Replace a stmt with a new one. - (linearize_cond_expr): Use post dominator info to determine is a - conditional can be safely removed. - (find_insert_location): New. Determine where to insert a new stmt that - is placed on a split edge. - (bsi_commit_first_edge_insert): Use find_insert_location to determine - where to link a stmt when splitting an edge. - (merge_tree_blocks): When deleting a basic block, remove it from the - dominance structure if it exists. - * tree-dfa.c (add_stmt_operand): Don't rename local statics. Treat - them just like globals. - * tree-flow.h (struct var_ann_d): Add root_var_processed bit and - root_index fields. - * tree-ssa-dce.c (process_worklist): Mark conditions feeding PHI's as - necessary as well. - (remove_dead_phis): Add missing debug information. - * tree-ssa-live.c (var_union): Handle combining partitions when one - has a root_variable as a representative. - (compact_var_map): Add comments and use flags. - (init_root_var): Use new root_var fields in struct var_ann_d. - (dump_root_var): Send output to specified file, not stderr. - (dump_var_map): Remove dump_flag parameter & some grotesque debug info. - * tree-ssa-live.h (VAR_ANN_ROOT_INDEX): Define. - (VARMAP_NORMAL, VARMAP_NO_SINGLE_DEFS): Define flags for compact_var_map. - (var_to_partition_to_var): Return NULL if not in a partition. - (find_root_var): Use VAR_ANN_ROOT_INDEX. - * tree-ssa.c (insert_copy_on_edge): Add listing info. - (coalesce_ssa_name): Coalesce live-on-entry variables to their root. - Coalesce partitions across abnormal edges. - (assign_vars): Remove redundant initialization code. Handle root_vars - which have already been coalesced to a partition. - (rewrite_out_of_ssa): Add debug info & remove PHI nodes when processed. - (rewrite_stmt): Don't redefine redundant expressions. - -2003-05-08 Jeff Law - - * c-simplify.c (simplify_expr_stmt): Make sure to - simplify the body of the EXPR_STMT. - - * tree-dfa.c (remove_decl): Accept new argument for the block - to start the search. - * tree-flow.h (remove_decl): Update prototype. - * tree-cfg.c (remove_stmt): Pass the toplevel block to - remove_decl. - - * tree-dfa.c (find_hidden_use_vars): No longer returns a value. - Callers and prototype updated. No longer need to look for - nested functions, instead just mark any variables and - parameters with DECL_NONLOCAL set as having hidden uses. - -2003-05-08 Diego Novillo - - * version.c (version_string): Change format to show daily - datestamp and merged date. - -2003-05-07 Jeff Law - - * tree-cfg.c (remove_useless_stmts_and_vars): Do not remove - the toplevel BIND_EXPR for an inlined function. - - * tree-dfa.c (find_hidden_use_vars): Look at the size of - VAR_DECLs, not the size of ARRAY_TYPES. Also make sure - to reset *inside_vla to its original value when done - processing any particular VAR_DECL. - -2003-05-06 Diego Novillo - - * c-simplify.c (simplify_if_stmt): Warn if - -Wunreachable-code is given and the conditional is always - true or always false. - - * expr.c (expand_expr): Don't try to expand FUNCTION_DECL - nodes when processing BIND_EXPR_VARS. - - * varasm.c (output_constant_def_contents): Re-use the - label when emitting a label for mudflap. - - Disable the following patch: - - 2003-04-30 Steven Bosscher - - * ggc-page.c (TREE_EXP_SIZE): Define. - (extra_order_size_table): New entry for expr trees with - two operands. - -2003-05-06 Jeff Law - - * tree-cfg.c (make_exit_edges): Fix handling of blocks which - end with calls. - - * tree-cfg.c (remove_useless_stmts_and_vars): Remove GOTO_EXPRs - to the immediately following tree node. - - * tree-cfg.c (make_goto_expr_edges): Fix typo in comment. - (remove_useless_stmts_and_vars): New function. - * tree-flow.h (remove_useless_stmts_and_vars): Prototype. - * tree-ssa.c (rewrite_out_of_ssa): After returning to normal - form, call remove_useless_stmts_and_vars. - -2003-05-02 Daniel Berlin - - * tree-alias-common.c (alias_get_name): Given unnamed result decls - a name. - (create_fun_alias_var): Use DECL_RESULT if available. - -2003-05-02 Jeff Law - - * tree-inline.c (expand_call_inline): Avoid creating naked - _DECL nodes for inlined functions which had NRV optimizations - applied. - -2003-05-02 Diego Novillo - - * tree-cfg.c (build_tree_cfg): Update comment. - (make_blocks): Don't skip over empty statements. - Move exception handling code ... - (compute_reachable_eh): ... here. - (set_parent_stmt): Don't skip over empty statements. - (bsi_remove): Don't return early on empty statements. - Don't call STRIP_NOPS. - (remove_stmt): Don't call STRIP_NOPS. - Always compute the block holding the statement. - After replacing the statement with an empty statement, add the - empty statement to the block. - (successor_block): Don't call STRIP_NOPS. - (first_exec_stmt): Likewise. - (first_exec_block): Don't return early for empty statements. - (first_stmt): Don't test for NULL blocks. - Reformat to improve legibility. - (bsi_next_in_bb): Don't call STRIP_NOPS. - Reformat to improve legibility. - (set_bb_for_stmt): Don't ignore empty statements. - - * tree-dfa.c (get_stmt_operands): Don't call STRIP_NOPS. - (create_stmt_ann): Don't abort on emtpy statements. - Don't call STRIP_NOPS. - (copy_stmt): Remove unused function. - * tree-flow.h (copy_stmt): Remove prototype. - - * tree-flow-inline.h: Don't call STRIP_NOPS. - Remove local variable 't'. - (bsi_stmt): Don't return NULL_TREE for empty statements. - Ignore error_mark_node. - - * tree-iterator.h (tsi_next): Don't call STRIP_NOPS. - (tsi_stmt_ptr): Likewise. - (tsi_stmt): Likewise. - Don't return NULL_TREE for empty statements. - - * tree-pretty-print.c (dump_generic_node): Don't ignore empty - statements. - - * tree-ssa-ccp.c (fold_stmt): Don't call STRIP_NOPS. - * tree-ssa-dce.c (find_useful_stmts): Likewise. - (remove_dead_stmt): Likewise. - * tree-ssa.c (mark_def_sites): Likewise. - (rewrite_out_of_ssa): Likewise. - (rewrite_stmt): Likewise. - - * tree.c (make_ssa_name): Don't ignore empty statements. - (body_is_empty): Fix comment. - -2003-05-01 Jeff Law - - * tree-dfa.c (find_hidden_use_vars): Renamed from find_vla_decls. - Now returns a value indicating if nested function was found. - When nested functions are found, mark suitable variables as - having hidden uses. - (find_hidden_use_vars_r): Renamed from find_vla_decls_r. - (compute_may_alias): Corresponding changes. Handle - multiple BLOCKs at the toplevel of a function. - -2003-04-30 Diego Novillo - - * tree.c (build_empty_stmt): New function. - * tree.h (IS_EMPTY_STMT): Define. - (TI_EMPTY_STMT): Remove. - (empty_stmt_node): Remove. - Replace 'X = empty_stmt_node' with 'X = build_empty_stmt ()', - and 'X == empty_stmt_node' with 'IS_EMPTY_STMT (X)' everywhere. - (build_empty_stmt): Declare. - - * cp/cp-simplify.c (cp_simplify_stmt): Use IS_EMPTY_STMT. - - * java/java-tree.h (build_java_empty_stmt): Declare. - * java/expr.c (build_java_empty_stmt): New function. - * java/decl.c (java_init_decl_processing): Don't build empty_stmt_node. - Replace 'X = empty_stmt_node' with 'X = build_java_empty_stmt ()', - and 'X == empty_stmt_node' with 'IS_EMPTY_STMT (X)' everwhere. - -2003-04-30 Jeff Law - - * tree-dfa.c (get_expr_operands): Do not ignore operands of an - an ADDR_EXPR if it is a PARM_DECL or VAR_DECL. - - * tree-dfa.c (get_expr_operands): Look inside operands in - a TREE_LIST. - -2003-04-29 Diego Novillo - - * builtins.def (BUILTIN_CONSTANT_P): Mark as constant. - - * tree-dfa.c (get_expr_operands): Do not add VDEF operands for - dereferenced pointers at call sites. - * tree-ssa.c (assign_vars): Abort if we couldn't coalesce all the - versions together. - -2003-04-29 Andrew MacLeod - - * tree-cfg.c (bsi_start): If there are no stmts in a block, use the - context pointer to represent the basic block. - (bsi_insert_after): Handle inserting into empty blocks better. - (bsi_insert_before): Call bsi_insert_after to handle empty blocks. - * tree-ssa.c (elim_create): Clear bitmap after its been processed - instead of during loop. - -2003-04-27 Diego Novillo - - * Makefile.in (tree-mudflap.o): Add dependency on $(TREE_DUMP_H). - * c-decl.c (c_expand_body_1): Don't call simplify_function_tree - after mudflap_c_function. - Move mudflap instrumentation after SSA optimizers. - * tree-dump.c (dump_files): Add entry for -fdump-tree-mudflap. - * tree.h (enum tree_dump_index): Add TDI_mudflap. - * doc/invoke.texi: Document -fdump-tree-mudflap. - * tree-mudflap.c: Include tree-dump.h. - (dump_file): New local variable. - (dump_flags): New local variable. - (mudflap_c_function): Call dump_begin, dump_end and dump_function. - (mf_decl_cache_locals): Set DECL_CONTEXT for __mf_lookup_shift_l - and __mf_lookup_mask_l to current_function_decl. - (mf_offset_expr_of_array_ref): Likewise for __mf_index_X. - (mf_build_check_statement_for): Re-implement to emit a proper - STMT_EXPR. - (mx_xfn_indirect_ref): Emit detailed debugging info if - -fdump-tree-mudflap-details is given. - (mudflap_enqueue_decl): Likewise - * tree-optimize.c (optimize_function_tree): Don't check for - -fmudflap. - -2003-04-26 Diego Novillo - - * c-simplify.c (build_bc_goto): If the target label couldn't be - found, emit an error message. - -2003-04-25 Andrew MacLeod - - * tree-ssa-live.c (compact_var_map): Add parameter to exclude variables - with a single SSA version. - (init_root_var): Allow that a var_map might not be compacted yet. - * tree-ssa-live.h (compact_var_map): Change Prototype. - * tree-ssa.c (rewrite_out_of_ssa): When coalescing, don't include single - reference variables during the compaction. - -2003-04-25 Jeff Law - - * tree-optimize.c (optimize_function_tree): Simplify slightly. - -2003-04-25 Andrew MacLeod - - * tree-ssa.c (struct _elim_graph): Change type of fields - 'pred' and 'succ' to be bitmaps instead of sbitmaps. - Update all uses. - -2003-04-25 Diego Novillo - - * tree-cfg.c (linearize_cond_expr): Reformat. - * tree-dfa.c (get_expr_operands): Check for read-only - status the dereferenced argument pointer, not the pointer - itself. - (add_stmt_operand): Always consider global variables as - virtual operands. - -2003-04-24 Jason Merrill - - * gimplify.c (simplify_cond_expr): Avoid redundant gimplification. - - Add TREE_VEC of case labels to the SWITCH_EXPR during gimplification. - * tree.def (CASE_LABEL_EXPR): Add an operand for the LABEL_DECL. - * tree.h (SWITCH_LABELS, CASE_LABEL): New macros. - * c-simplify.c (c_simplify_stmt) : Create LABEL_DECL here. - * expr.c (expand_expr) : Not here. - * gimplify.c (gimplify_ctx): Add case_labels field. - (gimplify_switch_expr, gimple_add_case_label): New fns. - (simplify_expr): Use them. - -2003-04-24 Andrew MacLeod - - * tree-flow.h (processed_out_of_ssa): Rename to out_of_ssa_tag. - * tree-ssa-live.c (register_ssa_partition): Add variable to partition. - (change_partition_var): Use out_of_ssa_tag. - (create_ssa_var_map): Add all uses, defs and PHI elements to partition. - (new_tree_live_info): Create a live range info structure. - (delete_tree_live_info): Free storage. - (live_worklist): Fill in the live range info for a variable for the - blocks between the def and all the blocks containing uses. - (set_if_valid): Set partition bit if variable is in a partition. - (add_livein_if_notdef): Set live on entry bit for a var's partition - if a definition has not been seen. - (calculate_live_on_entry): Create partition live on entry bitmaps for - all basic blocks . - (calculate_live_on_exit): Calculate live on exit information for each - basic block. - (init_root_var): Initialize and fill in a root_var structure. - (remove_root_var_partition): remove a partition from a root_var list. - (delete_root_var): Free storage. - (dump_root_var): Display root_var summary. - (dump_var_map): Show extra info for ssa name versions. - * tree-ssa-live.h (NO_PARTITION): Define. - (register_ssa_partition): Remove. - (partition_to_var): Use partition_find after decompressing. - (var_to_partition): Return NO_PARTITION if var is not in a partition. - (struct tree_live_info_d): Define live range info structure. - (partition_is_global): Return 1 if used outside a basic block. - (live_entry_blocks): Return bitmap over blocks that partition is live - on entry to. - (live_on_exit): Return bitmap of partitions live on exit from a block. - (struct root_var_d): Define a root_var structure. - (ROOT_VAR_NONE): Define. - (num_root_vars): Number of variables in root_var object. - (root_var): Return variable for a root_var index. - (first_root_var_partition): Return first partition for a root_var. - (next_root_var_partition): Get next partition for a root_var. - (find_root_var): Find root_var index for a specific partition. - * tree-ssa.c (eliminate_extraneous_phis): Remove. - (set_if_valid): Set partition bit if variable is in a partition. - (add_conflicts_if_valid): Add conflict between variable and all - related partitions set in a bitvector. - (coalesce_ssa_name): Create a conflict graph and coalesce all - partitions which don't conflict and are related by the same root_var. - (assign_vars): Use a root_var object, and assign different real - variables to all partitions. - (rewrite_out_of_ssa): Call compact_var_map() once, and don't call - eliminate_extraneous_phis. - -2003-04-23 Daniel Berlin - - * tree-flow.h (create_global_var): Add prototype. - - * tree-dfa.c (create_global_var): Externalize. - - * tree-alias-common.c: Set DECL_CONTEXT on our temp alias vars. - (call_may_clobber): Make a copy of this function, since our version - will be slightly different soon. - (create_alias_vars): We need global_var, so create it if necessary. - -2003-04-23 Daniel Berlin - - * tree-ssa-pre.c (do_proper_save): Remove old code, since the new - insertion code works okay. - (pre_expression): Use new_rename_1, it removes a *lot* of useless - saves. - -2003-04-23 Jeff Law - - * gimplify.c (simplify_target_expr): Make sure to simplify - the cleanup too. - - * tree-ssa.c (struct def_blocks_d): Add new field phi_insertion_points. - (compute_global_livein): Accept varray rather than bitmaps. Callers - updated. Rewrite to compute global life information for all the - objects in the varray in parallel. - (insert_phis_for_deferred_variables): New function. - (insert_phi_nodes_for): New argument DEF_MAPs. When an object - crosses the threshold for using fully pruned PHI insertions, - push it on the def_maps varray for deferred processing. - (insert_phi_nodes): Initialize def_maps. Pass it to - insert_phi_nodes_for. Drain the def_maps varray as it grows. - Also drain any residual objects in def_maps. Zero def_maps - when complete. - -2003-04-21 Jeff Law - - * tree-cfg.c (find_contained_blocks_and_edge_targets): New function. - (try_finallys): New varray used during edge creation. - (make_edges): Initialize try_finallys varray. After creating - all the "normal" edges, go back and create the special edges - for the try-finally blocks. - (make_ctrl_stmt_edges): Create edges for the EH nodes. Also - make sure to build the try-finally stack. - (make_exit_edges): Create edges from calls which may throw - to any directly reachable exception handlers. - (is_ctrl_altering_stmt): Statements which may throw alter - flow control. - - * tree-cfg.c: Include except.h. - (eh_stack): New file-scoped varray. - (build_tree_cfg): Initialize eh_stack. - (make_catch_expr_blocks): New function. - (make_try_expr_blocks, make_eh_filter_expr_blocks): Likewise. - (make_blocks): Call new functions as needed. When ending a block - due to a statement that may throw, compute the reachable exception - handlers and store it in the statement's annotation. - (is_ctrl_stmt): Handle EH nodes. - (stmt_ends_bb_p): Likewise. - * tree-flow.h (stmt_ann_d): Add new field reachable_exception_handlers. - - * except.c (check_handled): No longer static. - * except.h (check_handled): Prototype. - - * c-simplify.c (c_build_bind_expr): Revert change from earlier today. - - * c-common.h (find_reachable_label): Prototype. - * c-semantics.c (find_reachable_label): No longer static. - * c-simplify.c (c_build_bind_expr): Avoid creating unnecessary - BIND_EXPRs. - (simplify_cleanup): Avoid creating unnecessary TRY_CATCH_EXPRs - or TRY_FINALLY_EXPRs. - (simplify_if_stmt): If the condition is constant and the - unexecuted arm has no reachable code, then just emit - the executed arm. - -2003-04-18 Sebastian Pop - - * cfghooks.h, cfghooks.c: New files. - * Makefile.in (BASIC_BLOCK_H): Depends on cfghooks.h. - (OBJS): Add cfghooks.o. - (tree-optimize.o): Depends on cfgloop.h. - (cfghooks.o): New rule. - * basic-block.h (split_edge): Rename to rtl_split_edge. - (tree_split_edge): Declare. - (create_bb): Declare extern here. - (verify_flow_info): Rename to rtl_verify_flow_info. - (tree_verify_flow_info): Declare. - (cfghooks.h): Included here. - * cfgloop.c (tree.h, tree-flow.h): Included. - (make_forwarder_block): Renamed to rtl_make_forwarder_block. - (tree_make_forwarder_block): New static function. - (blocks_headers): Declared static. - (HEADER_BLOCK): Use blocks_headers instead of bb's .aux field. - (redirect_edge_with_latch_update, make_forwarder_block, - canonicalize_loop_headers): Don't allocate .aux, but makes grow - the blocks_headers array. - (canonicalize_loop_headers): Register tree_make_forwarder_block - into the tree_cfg_hooks and rtl_make_forwarder_block into the - rtl_cfg_hooks structure. - (canonicalize_loop_headers): Initialize/free the blocks_headers - array rather than the bb's .aux field. - * cfgloopmanip.c (loop_split_edge_with_NULL): New static function. - (remove_path, force_single_succ_latches): - Call loop_split_edge_with_NULL instead of loop_split_edge_with. - * cfgrtl.c (split_block): Update the comment. - (split_edge): Renamed rtl_split_edge. - (verify_flow_info): Renamed rtl_verify_flow_info. - * loop-init.c (loop_optimizer_init, loop_optimizer_finalize): - Execute code following the value of cfg_level. - * toplev.c (rest_of_compilation): Call rtl_register_cfg_hooks. - * tree-cfg.c (create_bb): Declared extern. - (build_tree_cfg): Call tree_register_cfg_hooks. - (make_edges, make_exit_edges): Remove the use of EDGE_FALLTHRU. - (bsi_commit_first_edge_insert): Use split_edge. - (tree_split_edge, tree_verify_flow_info): New functions. - * tree-optimize.c (cfgloop.h): Included. - (optimize_function_tree): Add #if 0'ed calls to - loop_optimizer_init and loop_optimizer_finalize. - -2003-04-16 Jeff Law - - * Makefile.in (tree-ssa.o): Depend on langhooks.h. - (tree-dfa.o, tree-cfg.o): Likewise. - * tree-cfg.c: Include langhooks.h - (dump_tree_cfg): Revamp how we get the current function's name - to not rely on current_function_name (and implicitly cfun). - (dump_cfg_stats, tree_cfg2dot): Likewise. - * tree-dfa.c: Include langhooks.h - (dump_immediate_uses): Revamp how we get the current function's name - to not rely on current_function_name (and implicitly cfun). - (dump_dfa_stats, dump_alias_info): Likewise. - * tree-ssa.c: Include langhooks.h - (dump_tree_ssa): Revamp how we get the current function's name - to not rely on current_function_name (and implicitly cfun). - - * tree-cfg.c (make_loop_expr_blocks): When determining the value for - NEXT_BLOCK_LINK, correctly handle empty statement nodes at the - end of the tree. - (make_cond_expr_blocks, make_switch_expr_blocks): Likewise. - (make_bind_expr_blocks): Likewise. - - * gimplify.c (keep_function_tree_in_gimple_form): Move check of - flag_disable_simple here. Include flags.h. - * Makefile.in (gimplify.o): Depends on flags.h - * c-decl.c (c_expand_body_1): No longer check flag_disable_simple. - * tree-inline.c (copy_body_r): Avoid creating non-gimple code - when inlining a function where the RESULT_DECL's initialization - is not on the RETURN_EXPR. - -2003-04-15 Jeff Law - - * tree-flow.h (struct var_ann_d): Renamed is_vla_decl field to - has_hidden_use. - (has_hidden_use, set_has_hidden_use): Renamed from is_vla_decl - and set_vla_decl. - * tree-flow-inline.h (has_hidden_use): Renamed from is_vla_decl. - Updated to use "has_hidden_use" instead of "is_vla_decl" field. - (set_has_hidden_use): Renamed from set_vla_decl. - Updated to use "has_hidden_use" instead of "is_vla_decl" field. - * tree-dfa.c (dump_variable): Corresponding changes. - (find_vla_decls_r): Likewise. - * c-simplify.c (simplify_decl_stmt): Likewise. - * tree-ssa-dce.c: Likewise. - -2003-04-09 Jeff Law - - * tree-dfa.c (struct alias_set_d, field tag_sym_set): Remove - unused field. - (register_alias_set): Rework to avoid incorrect coalescing of - entries. Fix memory leak. No longer set field tag_sym_set. - (get_expr_operands): ADDR_EXPR expressions may have interesting - operands in some cases. - -2003-04-09 Diego Novillo - - * gimplify.c (simplify_expr): Handle VECTOR_CST nodes. - * tree-cfg.c (make_blocks): Ignore empty statement containers. - Create a basic block before processing containers that only have - empty statements. - (make_loop_expr_blocks): Use the container instead of the statement - when setting NEXT_BLOCK_LINK. - (make_cond_expr_blocks): Likewise. - (make_switch_expr_blocks): Likewise. - (make_bind_expr_blocks): Likewise. - (successor_block): If the last statement of the block is the empty - statement, use its container to get NEXT_BLOCK_LINK. - (stmt_starts_bb_p): Return false if the statement is NULL. - * tree-pretty-print.c (dump_generic_node): Handle VECTOR_CST nodes. - * tree-simple.c (is_simple_const): Accept VECTOR_CST as constants. - * objc/objc-lang.c (LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P): - Define. - -2003-04-06 Diego Novillo - - * tree-cfg.c (remove_bb): Call ssa_remove_edge. - (cleanup_cond_expr_graph): Likewise. - (cleanup_switch_expr_graph): Likewise. - (disconnect_unreachable_case_labels): Likewise. - (merge_tree_blocks): Likewise. - Update PHI nodes at BB2's successor. - (dump_tree_bb): Show PHI nodes in the block. - * tree-dfa.c (add_phi_arg): Update comment. - (remove_phi_arg_num): New function. - (remove_phi_arg): Call it. - Move from tree-ssa.c. - (remove_phi_node): Move from tree-ssa.c. - * tree-flow.h (ssa_make_edge): Declare. - (ssa_remove_edge): Declare. - * tree-pretty-print.c (dump_generic_node): Show block where PHI - arguments are coming from. - * tree-ssa-dce.c (pdom_info): New local variable. - (remove_dead_stmts): Initialize it and free it at the end. - (remove_conditional): New function. - (remove_dead_stmt): Call it. - * tree-ssa.c (eliminate_phi): If the edge index is -1, abort - compilation. - (ssa_remove_edge): New function. - (ssa_make_edge): New function. - -2003-04-06 Andrew MacLeod - - * tree-cfg.c (push_bsi): New. Push a block_stmt_iterator onto a stack. - (pop_bsi): New. Pop a block_stmt_iterator off a stack. - * tree-flow-inline.h (struct bsi_list_d): Block iterator stack struct. - (new_bsi_list): Start a new bsi stack. - (empty_bsi_stack): Is stack empty. - (FOR_EACH_BSI_IN_REVERSE): Macro for processing bsi's in reverse. - (FOR_EACH_STMT_IN_REVERSE): Macro for processing stmt's in reverse. - -2003-04-06 Andreas Jaeger - - * treelang/treetree.c (tree_code_create_function_initial): Replace - calls to non-existent function annotate_with_file_line_column with - calls to annotate_with_file_line. - (tree_code_create_variable): Likewise. - -2003-04-05 Diego Novillo - - * tree-dfa.c (get_expr_operands): Do not clobber readonly operands - in CALL_EXPRs. - (find_vars_r): Likewise. - (add_indirect_ref_var): When creating new INDIRECT_REF variables, - copy the readonly attribute from the variable's type. - -2003-04-05 Diego Novillo - - * tree.c (copy_node): Never copy tree annotations. - -2003-04-05 Diego Novillo - - * tree-ssa-ccp.c (visit_cond_stmt): Don't short circuit evaluation - of UNDEFINED conditional expressions. - -2003-04-04 Andrew MacLeod - - * Makefile.in : Add tree-ssa-live.c and tree-ssa-live.h files. - * tree-ssa.c (struct _var_map, create_var_map, delete_var_map, - var_from_partition, get_var_partition, mapped_var_from_ref, - compact_var_map, dump_tree_partition, set_partition_for_var, - set_var_mapping, create_var_partition): Remove. - (create_temp): Allow temps to be created from SSA_NAME vars as well. - (eliminate_name, eliminate_build, elim_backward, elim_create, - eliminate_phi): Use new var map interface. - (coalesce_ssa_name): New. Coalesce ssa_name ranges together. - (assign_vars): Assign real variables to ssa_name partitions. - (rewrite_out_of_ssa): Use new varmap partition and routines. - * tree-ssa-live.h: New file - (var_map): Structure for variable map. - (num_var_partitions): Number of partitions. - (partition_to_var): Return variable for partition. - (var_to_partition): Return partition variable is in. - (var_to_partition_to_var): Return variable representing partition - another variable is in. - (register_ssa_partition): Initialize a partition element as used. - * tree-ssa-live.c: New file. - (init_var_map): Initialize a var_map. - (delete_var_map): Free storage for a var_map. - (var_union): Combine 2 partitions. - (compact_var_map): Reduce the number of partitions in a var_map. - (change_partition_var): Assign a specific var to a partition. - (create_ssa_var_map): Initialize a var_map with referenced variables. - (dump_var_map): Debug output for a var_map. - -2003-04-03 Diego Novillo - - * fold-const.c (fold_relational_hi_lo): Add missing comparison when - folding comparisons to signed_max+1. - -2003-04-02 Jason Merrill - Diego Novillo - - * tree-inline.c (initialize_inlined_parameters): Cast argument - types appropriately when emitting initialization assignments. - -2003-04-01 Andrew MacLeod - - * tree-cfg.c (PENDING_STMT, SET_PENDING_STMT): New Macros. - (bsi_insert_on_edge): Rename to bsi_commit_first_edge_insert. Add an - empty annotation record to the new basic_block. - (bsi_commit_edge_inserts): New. Commit all pending edge inserts. - (bsi_insert_on_edge): New. Add stmt to edge's pending insert list. - * tree-flow-inline.h (phi_arg_from_edge): Return PHI index for an edge. - (phi_element_for_edge): Return PHI element for an edge. - * tree-flow.h (struct var_ann_d): Add auxiallary field and new - bit 'processed_out_of_ssa'. - * tree-ssa.c (_var_map): Structure for variable parition map. - (struct _elim_graph): Elimination graph for out-of-ssa pass. - (create_var_map): Create a new var_map. - (delete_var_map): Delete a var_map. - (var_from_parition): Return var for a specified partition. - (get_var_partition): Return partition a var belongs to. - (mapped_var_from_ref): Get root var for a var's partition. - (compact_var_map): Re-map the partitions to make the list dense. - (dump_var_parition): Print var_map. - (set_partition_for_var): Associate a real var with a partition. - (set_var_mapping): Associate an SSA version var with a real var. - (create_var_partition): Create a partition for processing. - (create_temp): Create a new temp variable for a partition. - (insert_copy_on_edge): Insert a copy between variables on an edge. - (new_elim_graph): Create a new elimination graph. - (clear_elim_graph): clear an elimination graph. - (delete_elim_graph): Delete an elimination graph. - (eliminate_name, eliminate_build, elim_forward, - elim_unvisited_predecessor, elim_backward, elim_create, - eliminate_phi): Routines to implement Morgans PHI elimination algorithm. - (eliminate_extraneous_phis): Eliminate PHI nodes which will never - generate code. - (rewrite_out_of_ssa): Use partitions and PHI elimination algorithm. - -2003-04-01 Jeff Law - - * tree-cfg.c (make_blocks): Make sure the BIND_EXPR's subgraph - actually ended in a statement before seeing of the statement should - end a basic block. - - * tree-cfg.c (dump_tree_cfg): Avoid crashing when cfun is NULL. - (tree_cfg2dot): Likewise. - * tree-dfa.c (dump_immediate_uses): Likewise. - * tree-pretty-print.c (dump_generic_node): Dump the EH_FILTER_FAILURE - nodes attached to an EH_FILTER_EXPR. - - * tree-dfa.c (get_stmt_operands): Add cases for TRY_FINALLY_EXPR, - TRY_CATCH_EXPR, CATCH_EXPR and EH_FILTER_EXPR. - (get_expr_operands): Add case for EXC_PTR_EXPR. - - * tree-dfa.c (compute_may_aliases): Accept FNDECL as an argument. - Use FNDECL instead of relying on CURRENT_FUNCTION_DECL. - * tree-flow.h (compute_may_aliases): Update prototype. - * tree-ssa.c (rewrite_into_ssa): Corresponding changes. - - * tree-inline.c (expand_calls_inline): Correctly handle EH_FILTER_EXPR. - -2003-03-31 Diego Novillo - - * Makefile.in (STRICT_WARN, STRICT2_WARN): Remove -Wtraditional. - * timevar.def (TV_TREE_CLEANUP_CFG): Define. - * tree-cfg.c (set_parent_stmt): Add documentation. - (replace_stmt): New function. - (merge_tree_blocks): New function. - (remap_stmts): New function. - (linearize_cond_expr): New function. - (linearize_control_structures): New function. - (cleanup_tree_cfg): Call it. - Use new timevar TV_TREE_CLEANUP_CFG. - (remove_bb): Update debugging message. - Make sure that bb->head_tree_p and bb->end_tree_p exist before - resetting their basic blocks. - (remove_stmt): When removing a control flow expression, update - basic block flags. - (cleanup_control_flow): Make sure that the block contains - statements. - (last_stmt): Reformat for readability. - (last_stmt_ptr): Return NULL if the block has no statements. - * tree-flow-inline.h (parent_block): Check that the block is not - empty. - * tree-flow.h (bb_empty_p): Remove. - * tree-inline.c (copy_tree_r): Do not copy empty_stmt_node. - * tree-ssa-dce.c (tree_ssa_dce): Call cleanup_tree_cfg. - * tree.c (body_is_empty): New function. - * tree.h (body_is_empty): Declare. - -2003-03-31 Jeff Law - - * tree-ssa-ccp.c (simulate_block): Add abnormal edges out of a - block to the edge worklist after simulating a block for the - first time. If the block has a single outgoing normal edge, - add that edge to the worklist after simulating the block for - the first time. - -2003-03-31 Frank Ch. Eigler - - * gcc.c (MFLIB_SPEC): Remove -ld. - (MFWRAP_SPEC): Remove dlopen wrapping. - -2003-03-28 Diego Novillo - - * tree-ssa.c (rewrite_block): Add new argument 'eq_expr_value'. - Update all users. - If 'eq_expr_value' is given, use it to register a new - value for the variable given on the LHS. - If the block ends in a conditional expression of the form 'X == Y', - propagate 'X = Y' into the THEN_CLAUSE. - (MAY_COPYPROP_P): Define. - (rewrite_stmt): Call it. - (register_new_def): Fix comment. - (get_eq_expr_value): New function. - -2003-03-28 Diego Novillo - - * basic-block.h (BB_COMPOUND_ENTRY): Remove. Update all users - everywhere. - * tree-cfg.c: Minor fixes to various comments. - * tree-optimize.c (optimize_function_tree): Dump optimized function - after SSA->normal conversion. - -2003-03-26 Daniel Berlin - - * tree-ssa-pre.c: Implement open64 renaming algorithm. - (subst_phis): New function. - (generate_expr_as_of_bb): Ditto. - (new_rename_1): Ditto. - (process_delayed_rename): Ditto. - (do_proper_save): Use bsi_* functions for insertion, don't remove - old code quite yet, haven't fully tested. - Also add argument that says whether to insert before use or after use. - (defs_y_dom_x): Factor through injuries properly. - (defs_match_p): Ditto. - (phi_opnd_from_res): Attempt to fix, and remove useless argument. - (reset_can_be_avail): Fix broken condition that would cause infinite - loop. - (update_old_new): #if 0 updating of bb heads. - (finalize_1): We occasionally get 5 + a rather than a + 5, so we - need to make sure 5 is a DECL before trying to get a reaching def. - (repair_use_injury): If we couldn't find a reaching def, we don't need - to repair it. - (assign_new_class): Only push to stack2 if it exists (so we can - share this function in both rename implementations). - (create_ephi_node): Add argument that says whether to add ephi - to block or not (we create them sometimes for validation only). - (tree_perform_ssapre): Skip expressions without any uses. - - * tree.h: Add EREF_DELAYED_RENAME. - (struct tree_eref_common): Add delayed_rename bit. - -2003-03-25 Diego Novillo - - * tree-simple.c: Use tree codes to document grammar for relational - operators &&, || and ^. - -2003-03-25 Diego Novillo - - * cfg.c (dump_edge_info): Add labels for EDGE_TRUE_VALUE, - EDGE_FALSE_VALUE and EDGE_EXECUTABLE. - * tree-cfg.c (dump_tree_bb): Change formatting. Show all - statements in the block. - * tree-simple.c: Update documentation for GIMPLE conditional - expressions. - -2003-03-24 Diego Novillo - - * tree-dfa.c (get_expr_operands): If there are no call clobbered - variables, don't create a VDEF for GLOBAL_VAR at clobbering - CALL_EXPRS. - * tree-flow.h (fold_stmt): Declare. - * tree-ssa-ccp.c (fold_stmt): Change to extern declaration. - * tree-ssa.c (rewrite_stmt): Call it. - -2003-03-22 Diego Novillo - - * Makefile.in (gtype-desc.o): Add dependency on $(TREE_FLOW_H). - - * tree-dfa.c (struct alias_set_d): Add field 'num_elements'. - (struct walk_state): Move declaration earlier in the file. - (create_global_var): New local function. - (num_referenced_vars, num_aliased_objects): Change type to - 'size_t'. Update all users. - (aliased_objects, aliased_objects_base, aliased_objects_aliase_set): - Mark for garbage collection. - (num_call_clobbered_vars, call_clobbered_vars): New global - variable. - (get_expr_operands): For CALL_EXPRs, add a VUSE or VDEF reference - for every pointer argument. If the call may clobber, add a VDEF, - otherwise add a VUSE. - If the call may clobber, add VDEF for GLOBAL_VAR. - (dump_variable): Show whether the variable is call clobbered. - (dump_dfa_stats): Show call clobbered variables. - (compute_may_aliases): Minor formatting changes. - (compute_alias_sets): If the function makes clobbering calls, add - GLOBAL_VAR as an alias to every call-clobbered variable. - Remove alias sets that have exactly one element. - (register_alias_set): Set 'num_elements' to zero for every newly - created alias set. - (find_alias_for): Don't make a second call to add_may_alias to make - alias tags alias themselves. It's redundant. - Increment 'num_elements' when adding a new alias to an alias set. - (may_alias_p): Don't handle GLOBAL_VAR. - Check for structure aliasing when either PTR or VAR are a - structure. Don't do it only when both are structures. - (dump_alias_info): Show all aliases of each variable. - (find_vars_r): When processing a CALL_EXPR node, set - walk_state->is_store if the function may clobber and create a - reference to GLOBAL_VAR. - (add_indirect_ref_var): Change type of second argument from 'void *' - to 'struct walk_state *'. Update all users. - (add_referenced_var): Likewise. If a potentially aliased variabe - is not declared 'const', add it to the list of call clobbered - variables. - - * tree-flow.h (struct var_ann_d): Add field 'is_call_clobbered'. - Change type of field 'uid' to size_t. Update all users. - (stmt_ann_d): Add field 'makes_clobbering_call'. - (next_tree_ref_id): Remove unused variable. - (call_clobbered_vars): Declare. - (num_call_clobbered_vars): Declare. - (call_clobbered_var): New inline function. - - * tree-ssa-ccp.c (visit_phi_node): If the LHS of a PHI node is - volatile, mark the PHI node VARYING without checking its arguments. - (visit_assignment): Likewise. - (set_value): Remove. Update all users. - (likely_value): If the statement makes aliased loads or has - volatile operands, consider it VARYING. - (get_default_value): If a variable is volatile, consider it - VARYING. - - * tree-ssa.c (init_tree_ssa): Initialize num_call_clobbered_vars - and call_clobbered_vars. - Do not create GLOBAL_VAR. Set it to NULL_TREE. - Increase initial size for various hash tables. - (delete_tree_ssa): Reset num_call_clobbered_vars and - call_clobbered_vars. - (get_reaching_def): Rename from currdef_for. Update all users. - Always create default definitions for variables that need them. - Callers that use to call currdef_for with the second argument set - to false now call get_value_for. - (htab_statistics): New function. - (dump_tree_ssa): Call it. - (avail_expr_eq): Also compare VUSE operands. - -2003-03-21 Jeff Law - - * tree-dfa.c: Revert vla changes from yesterday. - (find_vla_decls_r): Do not look inside TYPE_DECLs. - -2003-03-20 Jeff Law - - * gimplify.c (simplify_return_expr): Tighten condition for - converting the RHS of a MODIFY_EXPR in a RETURN_EXPR to a - simple_val. Allow returning a RESULT_DECL directly. - * tree-dfa.c (get_expr_operands): A RESULT_DECL can have - interesting operands. - (clobber_vars_r): Handle RESULT_DECLs. - (compute_may_aliases): Initialize and free vla_htab. - (find_vla_decls): Pass vla_htab to walk_tree. - (find_vla_decls_r): Likewise. - * tree.h (SSA_DECL_P): Accept RESULT_DECLs. - -2003-03-19 Jeff Law - - * gimplify.c (simplify_return_expr): Only allow simple values - on the RHS of a MODIFY_EXPR appearing in a RETURN_EXPR. - * tree-cfg.c (make_exit_edges): We no longer need to look for - CALL_EXPRs on the RHS of a MODIFY_EXPR inside RETURN_EXPRs. - -2003-03-18 Andrew Macleod - - * tree-cfg.c (make_blocks): Use append_stmt_to_bb. Check for NULL - tsi_stmt when deciding whether to start a new block. - (add_stmt_to_bb): Don't update the basic block end pointer. - (append_stmt_to_bb): New. Add stmt and update the BB end pointer. - (first_stmt): Use only 1 return. - (last_stmt): Modified to use bsi_last(). - (last_stmt_ptr): Modified to use bsi_last(). - (bsi_last): New. Return an iterator to the last stmt in a block. - (bsi_from_tsi): Fix bug which wouldn't set the context properly when - within a nested BIND_EXPR. - (bsi_update_from_tsi): Insert helper which is more efficient than - bsi_from_tsi(). - (bsi_link_after): link in a new stmt and update the basic block - data structures. - (bsi_insert_after): Insert a new stmt into a block. - (bsi_insert_before): Insert a new stmt into a block. - (bsi_insert_on_edge): Insert a new stmt on an edge. - * tree-flow-inline.h (is_label_stmt): Return true if stmt can be a - target of a control transfer. - * tree-flow.h (is_label_stmt, bsi_last): New prototypes. - -2003-03-12 Jeff Law - - * c-simplify.c (simplify_switch_stmt): Save the type of the original - condition in TREE_TYPE (SWITCH_EXPR (...)). Annotate the SWITCH_EXPR - with file/line information. - * expr.c (expand_expr, case SWITCH_EXPR): Use expand_end_case_type. - * tree.def (SWITCH_EXPR): Document meaning of TREE_TYPE field of - the SWITCH_EXPR. - - * c-simplify.c (simplify_block): Set the current line number to - the line associated with the end of the block. - - * c-decl.c (finish_function): No longer save/restore the - current filename or linenumber around simplification. Instead - save/restore it around inlining. - (c_expand_body_1): Save/restore current filename and linenumber - around expansion of trees into RTL. - * gimplify.c (simplify_function_tree): Make the current file/line - number match the non-gimple code at the end of a function. - - * tree-cfg.c: Include toplev.h. - (remove_bb): Warn about unreachable code. - - * cfgrtl.c (verify_flow_info): Ignore EDGE_EXECUTABLE, it's for - the CCP optimizer only. - - * ssa.c (convert_to_ssa): Use last_basic_block, not n_basic_blocks. - -2003-03-11 Jeff Law - - * builtins.c: Fix minor comment typo. - (expand_builtin_strcmp, expand_builtin_strncmp): Remove. - (expand_builtin_strcat, expand_builtin_strncat): Likewise. - (expand_builtin_strspn, expand_builtin_strcspn): Likewise. - (expand_builtin_strcopy, expand_builtin_strstr): Likewise. - (expand_builtin_strpbrk, expand_builtin_strchr): Likewise. - (expand_builtin_strrchr, expand_builtin_fputs): Likewise. - (simplify_builtin_memcmp, simplify_builtin_strcmp): New functions. - (simplify_builtin_strpbrk, simplify_builtin_strstr): Likewise - (simplify_builtin_strchr, simplify_builtin_strrchr): Likewise - (simplify_builtin_strcpy, simplify_builtin_strncpy): Likewise - (simplify_builtin_strncmp, simplify_builtin_strcat): Likewise - (simplify_builtin_strncat, simplify_builtin_strspn): Likewise - (simplify_builtin_strcspn, simplify_builtin_fputs): Likewise - (expand_builtin_memcmp): Use simplify_builtin_memcmp. - (simplify_builtin): New function - (expand_builtin): Use simpify_builtin to collapse several common - cases together. - * gimplify.c (simplify_call_expr): Accept new argument. All - callers updated. Call simplify_builtin to try and simplify builtin - function calls before we simplify their arguments. - * tree.h (simplify_builtin): Prototype. - -2003-03-11 Jeff Law - - * timevar.def (TV_TREE_SSA_TO_NORMAL): New timevar. - * tree-cfg.c (remove_stmt): Also remove special annotations - on RHS of MODIFY_EXPR statements. - * tree-dfa.c (create_stmt_ann): Update comments. Fix formatting. - (compute_may_aliases): Make sure timevar encloses entire routine. - * tree-ssa.c (rewrite_out_of_ssa): Enclose with a timevar. - (remove_annotations_r): Avoid walking into subtrees of anything - except container nodes. Remove the special annotation on the - RHS of MODIFY_EXPRs. - -2003-03-10 Frank Ch. Eigler - - * tree-mudflap.c (mx_xfn_indirect_ref): Allow unfolded "& ptr->field" - constructs to pass uninstrumented. Remove TREE_ADDRESSABLE settings. - Keep array accesses to non-ADDRESSABLE objects uninstrumented. Update - __MF_TYPE_* constants for __mf_register calls. - -2003-03-10 Jeff Law - - * c-decl.c (c_expand_body_1): Update comments relating to - re-simplification after mudflap instrumentation. Avoid - unnecessary simplification of the function tree. - * gimplify.c (keep_function_tree_in_gimple_form): New function. - * tree-inline.c: Include tree-iterator.h and tree-simple.h - (struct inline_data): Add new TSI field. - (copy_body_r): Keep tree in gimple form when transforming a - RETURN_EXPR into a MODIFY_EXPR and GOTO_EXPR. - (initialize_inlined_parameters): Use MODIFY_EXPR, not INIT_EXPR - for initialization of inlined parameters. - (expand_call_inline): Save and restore the TSI around the - call to expand_calls_inline. Keep the tree in gimple form - when replacing a CALL_EXPR with a BIND_EXPR for the inlined - body. - (expand_calls_inline): Revamp to provide the current TSI to - expand_call_inline when we're working with gimple form. - * Makefile.in (tree-inline.o): Update dependencies. - * tree.h (keep_function_tree_in_gimple_form): Prototype. - -2003-03-10 Andrew MacLeod - - * Makefile.in (tree.o): Add tree-iterator.h dependancy. - * sbitmap.c (sbitmap_realloc): Grow a sbitmap structure. - * sbitmap.h (sbitmap_realloc): New Prototype. - * tree-cfg.c (remove_bb): Use new format for bsi_remove. - (bsi_remove): Update iterator to refer to the next stmt. - (bsi_prev): Implement previous stmt routine. - (bsi_from_tsi): Create a block iterator from a tree iterator. - * tree-flow-inline.h (bsi_prev): Remove. - (tsi_from_bsi): Create a tree iterator from a block iterator. - * tree-flow.h (bsi_prev,bsi_remove): Update prototypes. - (bsi_from_tsi, tsi_from_bsi, bsi_insert_*): New prototypes. - (bsi_iterator_update): New enum type. - * tree-iterator.h (tree_stmt_anchor, tsi_iterator_update): New type. - (tsi_link_before, tsi_link_after, tsi_delink, tsi_new_stmt_list, - tsi_stmt_list_head): New prototypes. - * tree-ssa-dce.c (remove_dead_stmts): Update removal loop to allow - that remove_dead_stmt update's the iterator. - (remove_dead_stmt): Use a pointer to the iterator since bsi_remove - requires it. - * tree.c (tsi_link_before): New function to link a stmt before an - iterator. - (tsi_link_after): New function links stmt after an iterator. - (tsi_delink): Removes a stmt from a list. - (tsi_new_stmt_list): New function to begin a new stmt list. - (tsi_stmt_list_head): New function to get the first stmt in a list. - -2003-03-07 Diego Novillo - - * tree-cfg.c (remove_stmt): Don't assume that the statement is in - SSA form. - - * tree-flow.h (dump_tree_ssa_stats): Declare. - (debug_tree_ssa_stats): Declare. - (stmt_ann_d): Add new statement flags 'makes_aliased_loads', - 'makes_aliased_stores', and 'has_volatile_ops'. - * tree-dfa.c (add_stmt_operand): Set new statement flags accordingly. - - * tree-pretty-print.c (dump_generic_node): Various cosmetic changes - to the rendering of some expressions. - - * tree-ssa.c (struct var_value_d): Rename from struct currdef_d. - Rename field 'currdef' to 'value'. Update all users. - (avail_exprs): New local hash table. - (const_and_copies): New local hash table. - (struct ssa_stats_d): Declare. - (ssa_stats): New local variable. - (rewrite_into_ssa): Deallocate avail_exprs and const_and_copies - after renaming. - Call dump_tree_ssa_stats() if -fdump-tree-ssa-stats is given. - (rewrite_block): Document the renaming process. - Add new local stack block_avail_exprs to keep track of expressions - made available in this block and its children. - (rewrite_stmts): Move body inside rewrite_block. - (dump_tree_ssa_stats): New function. - (debug_tree_ssa_stats): New function. - (get_def_blocks): New function. - (insert_phi_nodes_for): Call it. - (rewrite_stmt): Add support for keeping track of copies, constants - and globally redundant expressions. - (rewrite_operand): If a pointer has been copy propagated into - another one, rewrite INDIRECT_REF nodes of the original pointer to - refer to the new one. - (register_new_def): Add new argument 'var' indicating which - variable is this new definition for. Update all users. - (update_indirect_ref_vuses): New function. - (update_pointer_vuses): New function. - (init_tree_ssa): Set variable 'ssa_stats' to zero. - Allocate memory for 'avail_exprs' and 'const_and_copies'. - (currdef_for): Don't mark inline. - Call get_value_for and set_value_for. - (set_currdef_for): Remove. Update all users. - (var_value_hash): Rename from currdef_hash. Update all users. - (var_value_eq): Rename from currdef_eq. Update all users. - (get_value_for): New function. - (set_value_for): New function. - (lookup_avail_expr): New function. - (avail_expr_hash): New function. - (avail_expr_eq): New function. - (get_def_blocks_for): New function. - (var_is_live): New function. - -2003-03-06 Diego Novillo - - * tree-ssa-ccp.c (likely_value): Don't assume CONSTANT if the - statement has virtual uses. - -2003-03-05 Diego Novillo - - * tree-dfa.c (opf_none, opf_is_def, opf_force_vop, opf_ignore_bp): - New flags to alter the behavior of add_stmt_operand. - (get_expr_operands): Change operand IS_DEF with FLAGS. Update all - users. - When adding a VUSE for pointer dereferences in function arguments, - don't add a superfluous VUSE for the base pointer. - (add_stmt_operand): Remove operands IS_DEF and FORCE_VOP. Add - operand FLAGS. Update all users. - -2003-03-05 Jason Merrill - - * c-pretty-print.c (do_niy): Only print operands of expressions. - * tree-pretty-print.c: Likewise. - - * c-simplify.c (simplify_decl_stmt): Only simplify DECL_SIZE_UNIT. - * gimplify.c (simplify_array_ref_to_plus): New fn. - (simplify_array_ref): Use it. - (build_addr_expr_with_type): Split out from build_addr_expr. - (simplify_compound_lval): Break out an ARRAY_REF with non-constant - element size. - -2003-03-05 Frank Ch. Eigler - - * gcc.c (MFWRAP_SPEC): Remove most --wrap entries. - -2003-03-03 Daniel Berlin - - * tree-ssa-pre.c (is_strred_cand): Temporarily disable strength - reduction while working on bootstrapping. - (requires_edge_placement): Reenable for now, until an insertion - infrastructure exists that can handle critical edges. - (count_stmts_in_bb): New function, used for verifying we do - insertions properly. - (update_old_new): Fix up bb heads as well. - (do_proper_save): Handle single statement bb properly. - Handle BB's contained in BIND_EXPRS. - (code_motion): Count number of statements in bb before and after - to make sure we don't screw up boundaries. - (finalize_1): Ditto. - (rename_2): Fix subtle rename bug. - (phi_opnd_from_res): Do this the right way, by cloning the - occurrence and modifying it, as every other PRE implementation - does. - (tree_perform_ssapre): Handle comparisons too (unary exprs - currently disabled till load PRE is reimplemented). - (reset_can_be_avail): Fix can_be_avail test. - -2003-03-01 Diego Novillo - - * doc/invoke.texi: Fix typo. - -2003-02-28 Aldy Hernandez - Diego Novillo - - * Makefile.in (OBJS): Add tree-ssa-copyprop.o. - (tree-ssa-copyprop.o): New rule. - (tree-ssa-ccp.o): Add dependency on $(TREE_SIMPLE_H). - - * timevar.def (TV_TREE_COPYPROP): New timevar. - * flags.h (flag_tree_copyprop): Declare. - * toplev.c (flag_tree_copyprop): Define. - (f_options): Add -ftree-copyprop. - * tree.h (tree_dump_index): Add TDI_copyprop. - * tree-dump.c (dump_files): Add entry for -fdump-tree-copyprop. - * doc/invoke.texi: Document -ftree-copyprop and -fdump-tree-copyprop. - - * tree-ssa-copyprop.c: New file. - * tree-flow.h (tree_ssa_copyprop): Declare. - * tree-optimize.c (optimize_function_tree): Call it. - * tree-dfa.c (add_vuse): Make extern. Update all users. - - * tree-ssa.c (mark_def_sites): VUSEs are stored in a varray of trees. - -2003-02-28 Frank Ch. Eigler - - * tree-mudflap.c (mudflap_enqueue_decl): Ignore extern artificial - variable declarations. - -2003-02-27 Diego Novillo - - * tree-dfa.c (get_stmt_operands): INIT_EXPR nodes cannot - appear in GIMPLE form. Don't handle them. - (get_expr_operands): Likewise. - (find_vars_r): Likewise. - * tree-ssa-ccp.c (get_rhs): Likewise. - (set_rhs): Likewise. - * tree-ssa-pre.c (tree_perform_ssapre): Likewise. - -2003-02-27 Diego Novillo - - * tree-ssa-ccp.c (ccp_fold): Fold builtins by replacing and - restoring their arguments. - -2003-02-27 Jeff Law - - * tree-dfa.c (find_vars_r): Clear *walk_subtrees appropriately - to avoid useless walking of subtrees. - - * fold-const.c (nondestructive_fold_binary_to_constant): Renamed - from nondestructive_fold_binary. Update comments slightly. - (nondestructive_fold_unary_to_constant): Similarly. - (fold_relational_hi_lo): Corresponding changes. - * tree-ssa-ccp.c (ccp_fold): Corresponding changes. - * tree.h: Corresponding changes. - -2003-02-26 Jeff Law - - * tree-ssa-ccp.c (ccp_fold): Also handle folding of calls to - builtin functions. - - * fold-const.c (nondestructive_fold_binary): Handle truth ops - when both arguments are constant (duh!). Handle CONJ_EXPR. - -2003-02-26 Daniel Berlin - - * flags.h: Remove flag_ip. - * toplev.c: Ditto. - * tree-alias-ander.c: s/flag_ip/flag_unit_at_a_time/g. - (andersen_cleanup): Set region to null when done. - (andersen_function_call): Check DECL_PTA_TYPEVAR, not - DECL_SAVED_TREE. - * tree-alias-common.c: s/SSA_DECL_P/DECL_P/g. - (get_alias_var_decl): Remove dead code, fix bug in what is a - local alias var. - (find_func_aliases): Use get_alias_var, not create_fun_alias_var. - (create_fun_alias_var): Fix to use DECL_PTA_TYPEVAR. - Use get_alias_var rather than create_alias_var. - (create_fun_alias_var_ptf): Ditto. - (create_alias_vars): Ditto. - * tree-dfa.c (compute_may_aliases): Fix check for - create_alias_vars. - Move deletion of alias vars back to here, from tree-ssa.c - * tree-ssa.c (delete_tree_ssa): Remove delete_alias_vars call. - -2003-02-25 Jeff Law - Diego Novillo - - * tree-ssa-ccp.c (likely_value): If the statement has no - use operands, then return CONSTANT. - - * fold-const.c (nondestructive_fold_binary): Handle TRUTH_AND_EXPR - and TRUTH_OR_EXPR. Placeholder for TRUTH_XOR_EXPR. - * tree-ssa-ccp.c (ccp_fold): Handle TRUTH_{AND,OR,XOR}_EXPR. - (def_to_undefined): Re-enable VARYING->UNDEFINED state transition - sanity check. - - * tree-ssa-ccp.c (likely_value): Renamed from may_fold_p. Now - returns a latticevalue indicating the likely value for the - the RHS of the statement. - (evaluate_stmt): Update to use likely_value instead of may_fold_p. - Statements with UNDEFINED operands produce an UNDEFINED result. - (set_lattice_value): Reenable VARYING->CONSTANT sanity check. - -2003-02-25 Andrew MacLeod - - * tree-cfg.c (bsi_init): Handle BIND_EXPR nodes inside a basic block. - (bsi_next_in_bb): Likewise. - -2003-02-25 Diego Novillo - - * tree-cfg.c (parent_array): Remove. Update all users. - (struct cfg_stats_d): Add field 'num_failed_bind_expr_merges'. - (NEXT_BLOCK_LINK): Define. - (build_tree_cfg): Call alloc_aux_for_blocks instead of - create_block_annotations. - (make_blocks): Rewrite to support basic blocks that can span whole - BIND_EXPR bodies and put control statements at the end of blocks. - Add arguments 'next_block_link' and 'bb'. Replace 'parent_block' - with 'parent_stmt'. Update all users. - (make_loop_expr_blocks): Replace argument 'parent_block' with 'entry'. - Add argument 'next_block_link'. Update all users. - Don't create an empty latch block. - (make_cond_expr_blocks): Add argument 'next_block_link'. Update - all users. - (make_switch_expr_blocks): Likewise. - (make_bind_expr_blocks): Replace 'parent_block' with 'parent_stmt'. - Add argument 'next_block_link' and 'entry'. - Don't create a new block for the BIND_EXPR node. Extend the - existing block. - (add_stmt_to_bb): New function. - (create_bb): Remove argument 'parent_block'. Update all users. - (create_block_annotations): Remove. Update all users. - (make_edges): Don't handle BIND_EXPR nodes. - (make_ctrl_stmt_edges): Don't create an extra edge to the body of - the switch. - (make_loop_expr_edges): Only create an edge to the body of the - loop. - (remove_unreachable_block): Add more documentation for the special - case where a control statement entry is unreachable but its body - isn't. - Remove the basic block annotation from the head and end containers - in the block. - (disconnect_unreachable_case_labels): Don't keep the edge that goes - to the BIND_EXPR at the start of the switch body. - (dump_tree_bb): Call is_latch_block_for. - (dump_cfg_stats): Show stats about basic blocks that could not span - beyond the end of a BIND_EXPR body. - (successor_block): Use NEXT_BLOCK_LINK if the block is the last - inside a control structure. - (is_ctrl_stmt): Update documentation. - (stmt_starts_bb_p): Add new argument 'prev_t'. Update all users. - Only labels may start a new basic block. - (stmt_ends_bb_p): Add LOOP_EXPR, TRY_FINALLY_EXPR and - TRY_CATCH_EXPR to the list. - (latch_block): Remove. - (is_latch_block_for): New function. - (set_bb_for_stmt): Reformat some code. - - * tree-flow-inline.h (set_parent_block): Remove. Update all users. - (parent_stmt): New function. - (parent_block): Call it. - - * tree-flow.h (struct stmt_ann_d): Add field 'parent_stmt'. - (struct bb_ann_d): Remove block parent_block. - - * tree-pretty-print.c (dump_generic_node): Don't handle empty latch - nodes. - - * tree-ssa-ccp.c (def_to_undefined): Temporarily disable check for - VARYING->UNDEFINED transitions. - (set_lattice_value): Likewise for VARYING->CONSTANT transitions. - - * tree-ssa-dce.c (mark_necessary): Use parent_stmt() to traverse - all the control statements that contain the current - statement. - (makr_control_parent_necessary): Remove. Update all users. - (stmt_useful_p): Add BIND_EXPR to the list of useful - statements. - (process_worklist): Check that the statement is - associated to a basic block. - (remove_dead_stmt): Don't assume that the block has a - postdominator. - -2002-02-20 Daniel Berlin - - * tree-alias-ander.c: Store cached ptsets in the typevar, not - a seperate hash table. - (ptset_map): Removed; - (ptset_map_eq): Ditto. - (ptset_map_hash): Ditto. - (andersen_init): Remove ptset_map. - (andersen_cleanup): Ditto. - (andersen_add_var): Ditto. - (andersen_add_var_asm): Ditto. - (andersen_may_alias): Ditto. - * tree-alias-common.c: Store typevars for DECL nodes in the tree_decl - structure. - (get_alias_var_decl): Use DECL_PTA_TYPEVAR for DECL's. - (create_alias_var): Ditto. - (find_func_aliases): CONST functions don't affect aliasing either. - (ptr_may_alias_var): Don't call get_base_symbol. - Remove decl_function_context, use DECL_CONTEXT instead. - For DECL's, use DECL_PTA_TYPEVAR. - * tree-alias-type.c (struct alias_typevar_aterm): Add ptset member. - (ALIAS_TVAR_PTSET): New macro. - * tree.h (DECL_PTA_TYPEVAR): New macro. - (struct tree_decl): Add typevar member. - -2003-02-20 Jeff Law - - * c-simplify.c (simplify_decl_stmt): Call set_vla_decl on the - temporary holding the size and unit size for a VLA. Minor - formatting fixes. - - * ssa.c: Revert caching of immediate dominators change made on - Jan 28, 2003. - - * tree-dfa.c: Fix comment. - -2003-02-20 Jeff Law - - * tree-cfg.c (remove_bb): Update PHI nodes as edges are removed. - (cleanup_cond_expr_graph): Likewise. - (cleanup_switch_expr_graph): Likewise. - (disconnect_unreachable_case_labels): Likewise. - - * tree-ssa-dce.c (mark_control_parent_necessary): Be much more - selective about what statements in the control parents are marked - as necessary. - - * tree-dfa.c (INDIRECT_REFs and ADDRESSABLE_VARs varrays): Replace - with a single ALIASED_OBJECTs set of varrays. - (dump_dfa_stats): Corresponding changes. - (compute_may_aliases, dump_alias_info): Likewise. - (compute_alias_sets): Likesise. Update comments. Register - alias sets for all potentially aliased objects which are stored. - Check each potentially aliased object with the registered alias - sets. - (register_alias_set): If DEREF aliases a single registered _DECL, - then replace the _DECL's entry with DEREF. - (find_alias_for): Update comments. Do not stop the search when - an alias is found. There may be multiple entries with conflicting - alias sets. - (struct walk_state): New structure for statement walker callbacks. - (find_vars_r): Add logic to track loads and stores of potentially - aliased objects separately. Various changes related to - using a single set of varrays for all aliased objects. - (add_referenced_var): Record in the var's annotation if the - var is read or written. Various changes related to using a - single set of varrays for all the aliased objects. - (add_stmt_operand): Only set may_point_to_global_mem for INDIRECT_REFs. - * tree-flow.h (struct var_ann_d): Add new fields indicating if - the var is loaded or stored. Explicitly note unused bitfield - entries. - -2003-02-19 Jeff Law - - * fold-const.c (fold_negate_const): New function. Broken out of - the generic fold code. - (fold_abs_const, fold_relational_const): Likewise. - (fold_relational_hi_lo): Likewise. - (nondestructive_fold_unary, nondestructive_fold_binary): Likewise. - (fold): Use fold_negate_const, fold_abs_const, fold_relational_const, - and fold_relational_hi_lo. - * tree.h (nondestructive_fold_unary): Declare. - (nondestructive_fold_binary): Declare. - * tree-ssa-ccp.c (ccp_fold): New function. - (add_control_edge): Fix trivial formatting bug. - (evaluate_stmt): Rework to use ccp_fold instead of copying - statements. - -2003-02-18 Jeff Law - - * tree-ssa-ccp.c (visit_assignment): For simple copies, copy the - lattice values. - (defs_to_undefined): Add missing abort. - (replace_uses_in): Do not do a replacement if it would create - non GIMPLE trees. - -2002-02-14 Jeff Law - - * tree-ssa-ccp.c (def_to_undefined): Improve sanity checking code - so that it can detect invalid VARYING->UNDEFINED transitions. - (set_lattice_value): Improve sanity checking code so that it - does not trip on valid VARYING->CONSTANT transitions. - - * tree-flow.h (struct stmt_ann_d): Add new field in_ccp_worklist. - * tree-ssa-ccp.c (simulate_stmt): Renamed from simulate_def_use_edges. - (add_var_to_ssa_edges_worklist): New function. Only add statements - to the ssa_edges worklist if they are not already on the worklist. - (def_to_undefined, def_to_varying, set_lattice_value) - (tree_ssa_ccp): Only reevaluate the statement if in_ccp_worklist - is set for the element popped off the ssa_edges worklist. - (simulate_statement): Simplify now that ssa_edges is a worklist - of statements to reevaluate rather than a worklist of defs - that need their immediate uses reevaluated. - (visit_stmt): Clear in_ccp_worklist. - - * tree-ssa-ccp.c (def_to_undefined): Directly store the new - lattice values rather than call set_value. - (def_to_varying): Likewise. - (set_lattice_value): Likewise. - - * tree-ssa-ccp.c (def_to_undefined): Add some state transition - sanity checking. Avoid calling set_value if nothing changed. - (def_to_varying): Avoid calling set_value if nothing changed. - (set_lattice_value): Add some state transition sanity checking - for transitions into the CONSTANT state. If the object's - "constant" value has changed to a new constant value, then the - object has a VARYING value. - - * tree-ssa-ccp.c (tree_ssa_ccp): Work through the entire - ssa_edges worklist each iteration through the main loop. - -2002-02-13 Jeff Law - - * tree-ssa-ccp.c: Fix comment formatting glitches. - - * tree-ssa-ccp.c (may_fold_p): New function. Returns nonzero if - the given statement may fold after replacement of operands with - constants. - (evaluate_stmt): Only create a copy of the statement if there is - a reasonable chance the statement will fold. - -2002-02-13 Diego Novillo - - * Makefile.in (OBJS): Add tree-ssa-pre.o. - -2003-02-13 Daniel Berlin - - * tree-dfa.c (create_stmt_ann): Do stmt part of common annotation. - * tree-flow-inline.h (tree_stmt): Return statement tree is part of. - * tree-flow.h (struct bb_ann_d): Add ephi_nodes. - * tree-optimize.c (optimize_tree): Activate SSAPRE again. - * tree-pretty-print.c (debug_generic_expr): New function. - (debug_generic_stmt): Ditto. - (dump_generic_node): Pretty print EUSE's, EREF's, and EPHI's. - - * tree-ssa-pre.c: Rewrite almost entirely. Now performs more - strength reduction, EPHI minimization, and keeps SSA up to date. - * tree.c (tree_size): Handle EUSE, EPHI, EREF nodes. - (tree_node_structure): Ditto. - (ephi_node_elt_check_failed): New function. - * tree.def: Add EUSE_NODE, ELEFT_NODE, EKILL_NODE, EPHI_NODE, - EEXIT_NODE. - * tree.h (EREF_NODE_CHECK): New. - (EPHI_NODE_ELT_CHECK): New. - (struct tree_eref_common): New. - (struct tree_euse_node): New. - (struct tree_ephi_node): New. - (union tree_node): Add euse, eref, ephi members. - (enum tree_node_structure): Add TS_EPHI_NODE, TS_EUSE_NODE, - TS_EREF_NODE. - -2003-02-13 Daniel Berlin - Andreas Jaeger - - * tree-flow.h: Add some garbage collector marks. - -2003-02-12 Jeff Law - - * Makefile.in (ssa.o): Depends on $(TREE_H) and tree-flow.h - * ssa.c: Include tree.h and tree-flow.h. - (compute_dominance_frontiers_1): Use the sparse bitmap - of dominator children from the basic block's annotation - if it's available. Otherwise build the sparse bitmap - using the result of get_dominated_by. - * tree-ssa.c (rewrite_into_ssa): Reorder things slightly so - that we can use the cached dominator children computed - by mark_def_sites in compute_dominance_frontiers. - -2003-02-12 Andreas Jaeger - - * tree-dfa.c (dump_alias_info): Cast variable of size_t properly. - -2003-02-12 Daniel Berlin - - * tree-dfa.c (find_may_aliases_for): Remove - (compute_may_aliases): Always call compute_alias_sets. - -2003-02-10 Jeff Law - - * ssa.c (compute_dominance_frontiers_1): Use a sparse bitmap - for the frontiers. - (compute_dominance_frontiers): Corresponding changes. - (convert_to_ssa): Similarly. Convert the sparse bitmap to - a simple bitmap to avoid lots of collateral damage. - * ssa.h (compute_dominance_frontiers): Update prototype. - * tree-ssa.c (added, in_work): Kill, no longer needed. - (struct def_blocks_d): Add new bitmap (livein_blocks). - (rewrite_into_ssa): Make dominance frontiers be a sparse - bitmap instead of a simple bitmap. Rename the "nonlocals" - simple bitmap to "globals". Pass it into mark_def_sites. - (compute_global_livein): New function. - (mark_def_sites): Also keep track of variables which are - used before they are set. Allow caller to allocate and - pass in a simple bitmap for global variables. Process - items defined in the statement last. - (set_def_block): Also allocate bitmap for globals. - (set_livein_block): New function. - (def_blocks_free): Free def_blocks correctly. Also free - livein_blocks. - (debug_def_blocks_r): Also dump the livein_blocks. - (insert_phi_nodes): Simplify now that we don't need the - added and in_work varrays. Accept DFS as a sparse bitmap - instead of a simple bitmap. - (insert_phi_nodes_for): Rework significantly. Pre-compute all - the insertion points for semi-pruned form. While computing those - insertion points keep track of how many phi vector entries - would be needed at those insertion points. When the number of - entries gets large (32), compute global life information and - use that to further pruned the number of PHI insertion points - necessary. - -2003-02-09 Diego Novillo - - * tree-dfa.c (find_vars_r): Assume that the RHS of an INDIRECT_REF, - that is also an SSA variable, is a VAR_DECL. - (get_virtual_var): Handle INDIRECT_REF nodes that are not valid SSA - variables. - - * tree-ssa-dce.c (stmt_useful_p): Revert kludge in previous commit. - VA_ARG_EXPR nodes are not inherently live. - - * tree-ssa.c (mark_def_sites): Don't process the LHS of assignments - twice. - The operand of a virtual definition constitutes a use of the - variable which should be considered a non-local if it had not been - killed inside the block. - - * tree.h (SSA_VAR_P): Only return true for INDIRECT_REFs if their - operand is a _DECL node. - -2003-02-09 Diego Novillo - - * config/rs6000/t-rs6000 (simplify-rtx.o): Compile with -Wno-error. - -2003-02-08 Diego Novillo - - * toplev.c (parse_options_and_default_flags): Enable SSA DCE by - default. - - * tree-dfa.c (get_expr_operands): Recurse into LHS of an ARRAY_REF - when it's not a regular variable. Always recurse into the RHS. - (add_stmt_operand): Set may_point_to_global_mem for pointers that - are assigned expressions that may reference global memory. Also - set its dereference variable to be an alias of global memory. - (dump_variable): Show may_point_to_global_mem flag. - (compute_alias_sets): Also dump all referenced variables when - dumping alias information. - (add_may_alias): Check for global memory aliasing. - (may_access_global_mem_p): Rename from may_access_global_mem. - Return true if the expression is a variable that may point to or - alias global memory. - (add_referenced_var): Pointer arguments and global pointers may - point to global memory. - (set_may_alias_global_mem): Move ... - * tree-flow-inline.h (set_may_alias_global_mem): ... here. - (set_may_point_to_global_mem): New function. - (may_point_to_global_mem_p): New function. - - * tree-ssa-dce.c (stmt_useful_p): VA_ARG_EXPRs are inherently live. - * tree-ssa.c (rewrite_into_ssa): Don't call dump_referenced_vars. - -2003-02-06 Diego Novillo - - * tree-dfa.c (struct alias_tags, alias_tags, num_alias_tags): - Remove. Update all users. - (struct alias_set_d): New. - (alias_sets): New file local variable. - (compute_alias_sets): New function. - (compute_may_aliases): Call it when not doing points-to analysis. - (register_alias_set): New function. - (find_alias_for): New function. - (may_alias_p): Declare static. - Don't assume that VAR may not be aliased if it's a non-addressable - _DECL. - If VAR and PTR are aggregate types, check if they can have a field - that points to the other one. - (find_may_aliases_for): Move handling of global memory aliasing ... - (add_may_alias): ... here. - Also accept the base symbols for the variable and its alias. - (register_new_alias): Remove. Update all users. - (find_alias_tag): Remove. Update all users. - (find_vars_r): Update VAR after re-writing *TP when sharing - INDIRECT_REF nodes. - * tree-flow.h (may_alias_p): Remove declaration. - - * tree-ssa.c (rewrite_into_ssa): Include referenced variables in - default debug dumps. - - Support for VLAs. - - * tree-dfa.c (find_vla_decls): New function. - (compute_may_aliases): Call it. - (find_vla_decls_r): New function. - (dump_variable): Show whether the variable is used in a VLA - declaration. - * tree-flow-inline.h (is_vla_decl): New function. - (set_vla_decl): New function. - * tree-flow.h (struct var_ann_d): Add bitfield 'is_vla_decl'. - * tree-ssa-dce.c (need_to_preserve_store): Return true if SYM is - used inside a VLA declaration. - -2003-02-05 Andrew MacLeod - - * Makefile.in : Include new file tree-iterator.h in tree-simple.h - * gimplify.c (simplify_cleanup_point_expr): Use tsi_ rather than gsi_. - * tree-cfg.c (make_blocks, remove_bb): Use tsi_ not gsi_ routines. - (bsi_remove): Renamed from gsi_remove, use bsi_ routines. - (successor_block, first_exec_stmt): Use tsi_ not gsi_ routines. - (first_stmt, last_stmt, last_stmt_ptr): Use bsi_ not gsi_ routines. - (bsi_init): Split out from bsi_start. - (bsi_start): Renamed from gsi_start_bb, use bsi_ routines. - (bsi_next_in_bb): Moved from tree-flow-inline.h and renamed from - gsi_step_in_bb. Also verify BB of new stmt. - * tree-dfa.c (compute_immediate_uses, dump_immediate_uses, - collect_dfa_stats, compute_may_aliases): Use block_stmt_iterator. - * tree-flow-inline.h (gsi_step_in_bb): Moved to tree-cfg.c - (bsi_end_p): Renamed from gsi_end_bb_p. - (bsi_next): renamed from gsi_step_bb - (bsi_prev): New function. - (bsi_stmt_ptr): Block version of gsi_stmt_ptr. - (bsi_stmt): Block version of gsi_stmt. - (bsi_container): Block version of gsi_container. - * tree-flow.h (block_stmt_iterator): New iterator type. - * tree-iterator.h: New include file for tree_iterator. - * tree-simple.h : Include tree-iterator.h - (gimple_stmt_iterator, gsi_start, gsi_end_p, gsi_stmt_ptr, - gsi_stmt, gsi_container): Move to tree-iterator.h and rename to tsi_. - (gsi_step): Move to tree-iterator.h and renamed to tsi_next. - * tree-ssa-ccp.c (simulate_block, substitute_and_fold): Use block - iterators instead of gimple_stmt_iterator. - * tree-ssa-dce.c (mark_control_parent_necessary, find_useful_stmts, - remove_dead_stmts, remove_dead_stmt): Use block_stmt_iterator. - * tree-ssa.c (mark_def_sites, rewrite_out_of_ssa, rewrite_stmts): Use - block_stmt_iterator. - -2003-02-04 Daniel Berlin - - * tree-alias-common.c (get_alias_var_decl): If it's a global var, - make sure it doesn't get added to local_alias_vars. - (get_name): Return the right name for FUNCTION_DECL's. - -2003-02-04 Diego Novillo - - * tree-dfa.c (add_stmt_operand): Do not add a VUSE for a pointer - when clobbering its associated INDIRECT_REF variable. - -2003-02-04 Diego Novillo - - * config/rs6000/t-rs6000 (jump.o, regmove.o, c-typeck.o, cfgrtl.o, - combine.o, fold-const.o, ifcvt.o, reload1.o, rtlanal.o, - cp/decl2.o, cp/pt.o, f/where.o, java/expr.o, objc/objc-act.o, - rs6000.o, insn-emit.o): Compile with -Wno-error. - -2003-02-03 Diego Novillo - Jeff Law - - * tree-cfg.c (make_blocks): Don't always start a new block with - COND_EXPR and SWITCH_EXPR statements. - Call stmt_ends_bb_p to determine if the current statement should be - the last in the block. - (make_cond_expr_blocks): Second argument is now the entry block - to the conditional. - (make_switch_expr_blocks): Second argument is now the entry block - to the switch. - (make_edges, make_ctrl_stmt_edges, make_loop_expr_edges, - cleanup_control_flow, cleanup_cond_expr_graph, - cleanup_switch_expr_graph, disconnect_unreachable_case_labels, - find_taken_edge, successor_block, latch_block, is_latch_block, - switch_parent): Work with the last statement of the block, not the - first. - (is_ctrl_altering_stmt): Pre-compute the code of the statement. - (stmt_starts_bb_p): Declare file local. - Don't call is_ctrl_stmt. Check if T is a LOOP_EXPR instead. - (stmt_ends_bb_p): New function. - - * tree-flow.h (stmt_starts_bb_p): Remove declaration. - -2003-02-03 Diego Novillo - - * tree-dfa.c (find_vars_r): Share INDIRECT_REF nodes whose operand - is a VAR_DECL. - (add_referenced_var): Add additional argument 'sym'. Update all users. - Don't call get_base_symbol. - (add_indirect_ref_var): Rename argument 'var' to 'ptr'. - (htab_hash_var): Remove. Update all users to use htab_hash_pointer. - (htab_var_eq): Remove. Update all users to use htab_eq_pointer. - - * tree-flow-inline.h (var_ann): Don't retrieve the annotation of - the base pointer for INDIRECT_REF variables. - (is_aliased): Remove. Update all users. - (is_dereferenced): Remove. Update all users. - (same_var_p): Remove. Update all users to use pointer equality. - - * tree-simple.c (get_base_symbol): Convert tail recursion into - iteration. - - * tree-ssa.c (rewrite_out_of_ssa): Add FIXME note about overlapping - live ranges for different versions of the same variable. - -2003-02-03 Jeff Law - - * tree-dfa.c (add_referenced_var): Annotate each item in the - REFERENCED_VARS varray with a unique id. - * tree-flow.h (struct var_ann_d): Add new uid field. - * tree-ssa.c (mark_def_sites): Compute the set of variables - live across basic blocks and return them in an sbitmap. - (insert_phi_nodes): Use the set of nonlocal variables computed - by mark_def_sites to reduce the number of PHI nodes inserted. - (rewrite_into_ssa): Updated to deal with changes in - insert_phi_nodes and mark_def_sites. Free the sbitmap returned - by mark_def_sites. - -2003-02-03 Diego Novillo - - * c-common.h (GOTO_DESTINATION): Remove. Fix botched - merge. - -2003-02-03 Diego Novillo - - Fix warnings to allow bootstrapping with -Werror. - - * Makefile.in (c-semantics.o-warn): Add -Wno-error. - (emit-rtl.o-warn): Likewise. - (profile.o-warn): Likewise. - (tree.o-warn): Likewise. - (OBJS): Remove simple-break-elim.o and simple-goto-elim.o. - * c-pretty-print.c (print_function_decl): Remove unused function. - * bitmap.c (bitmap_last_set_bit): Initialize variable 'word'. - * c-typeck.c (build_binary_op): Initialize variable 'type'. - * combine.c (combine_simplify_rtx): Initialize variable 'reversed'. - (make_compound_operation): Initialize variable 'i'. - * dwarf2out.c (dwarf2out_finish): Initialize variable 'context'. - * expr.c (store_constructor): Initialize variables 'lo', 'hi', - 'startb' and 'endb'. - (expand_expr): Initialize variable 'op0'. - * fold-const.c (fold): Initialize variable 'tem'. - * profile.c (branch_prob): Initialize variable 'prev_file_name'. - * reload.c (find_equiv_reg): Initialize variables 'valtry and - 'valueno'. - * rtlanal.c (get_jump_table_offset): Initialize variable 'set'. - * ssa-ccp.c (ssa_const_prop): Fix sign mismatch warning. - * varasm.c (output_constant_def): Initialize variable 'defstr'. - * gimplify.c (simplify_expr): Initialize variables - 'saved_input_filename' and 'saved_lineno'. - (simplify_compound_lval): Initialize variable 'code'. - * tree-alias-ander.c (pta_bottom): De-ansify. - (andersen_cleanup): Remove unused variables. - (andersen_heap_assign): Mark argument lhs ATTRIBUTE_UNUSED. - (pta_bottom): Remove unused function. - (pta_get_ptsize): Remove unused function. - -2003-02-02 Diego Novillo - - * tree-dfa.c (get_expr_operands): Add a VUSE for the dereference of - every pointer passed in a function call. - Move code to add an operand for the base pointer of an - INDIRECT_REF ... - (add_stmt_operand): ... here. - Add a VUSE for the base pointer of every INDIRECT_REF variable. - (find_may_aliases_for): Fix starting index for the loop that scans - INDIRECT_REFs for aliasing. - Factor code that marks two variables aliased into - register_new_alias. - (register_new_alias): New function. - (may_alias_p): Handle aliasing of structure fields. - (add_may_alias): Fix documentation. - (find_vars_r): Factor code that adds a new referenced variable into - add_referenced_var. - (add_referenced_var): New function. - (add_indirect_ref_var): New function. - (get_virtual_var): Handle variables wrapped in SSA_NAMEs. - (set_may_alias_global_mem): Move from ... - * tree-flow-inline.h: ... here. - - * tree-ssa-dce.c (need_to_preserve_store): CALL_EXPRs are - implicitly live. VA_ARG_EXPRs are not. - (stmt_useful_p): - - * tree.h (SSA_NAME_VAR): Rename from SSA_NAME_DECL. Update all - users. - (struct tree_ssa_name): Rename field 'decl' to 'var'. Update all - users. - (SSA_DECL_P): Accept only VAR_DECLs and PARM_DECLs possibly wrapped - inside an SSA_NAME node. - (SSA_VAR_P): Also accept SSA_NAME nodes. - -2003-02-01 Daniel Berlin - - * Makefile.in (tree-ssa-pre2.o): Remove accidental addition. - -2003-01-31 Diego Novillo - - * tree-cfg.c (find_taken_edge_cond_expr): New function. - (find_taken_edge_switch_expr): New function. - (value_matches_some_label): New function. - (find_taken_edge): Re-structure to use the three new functions. - -2003-01-30 Jason Merrill - - * gimplify.c (simplify_function_tree): Set TREE_SIDE_EFFECTS on - the BIND_EXPR wrapper. - -2003-01-30 Diego Novillo - - * tree-dfa.c (call_may_clobber): New function. - (get_expr_operands): Call it. - (find_vars_r): Call it. - -2003-01-30 Jeff Law - - * tree-dfa.c (struct alias_tags): New. Collector for key information - regarding alias tags. - (indirect_refs_base, indirect_refs_alias_set): New varrays. - (addressable_vars_base, addressable_vars_alias_set): Likewise. - (compute_may_aliases): Initialize and finalize the new varrays. - Update allocation of alias tags information. - (find_may_aliases_for): Extract base symbols and alias set - information for V1 and V2 from the virtual arrays and store - them into local variables. Pass them as necessary to - may_alias_p, may_access_global_mem, find_alias_tag. Add base - symbol and alias set when creating a new alias tag. - (find_vars_r): Fill in new varrays as needed. - (may_alias_p): Add new arguments for base and alias set of the - two origianl incoming arguments. No longer call get_base_symbol - or get_alias_set. - (find_alias_tag, may_access_global_mem): Similarly. - (add_stmt_operand): Update to pass additional argument to - may_access_global_mem. - (dump_alias_info): Update to deal with new alias tag structure. - * tree-flow.h (may_alias_p): Update prototype with new arguments. - * tree-ssa-pre.c (process_left_occs_and_kills): Update to pass - new arguments to may_alias_p. - -2003-01-30 Daniel Berlin - - Remove all traces of steensgaard's algorithm. - * tree-alias-steen.c: Removed. - * tree-alias-steen.h: Ditto. - * tree-alias-ecr.c: Ditto. - * tree-alias-ecr.h: Ditto. - * disjoint-set.c: Ditto. - * disjoint-set.h: Ditto. - * Makefile.in: Remove removed files. - * c-config-lang.in: Ditto. - * gengtype.c: Ditto. - * tree-alias-common.c: Don't use steen_alias_ops anymore. - * toplev.c: Remove help text and steen option. - * tree-alias-common.h: Remove PTA_STEEN. - * tree-alias-type.c: Remove all steensgaard related types and - functions. - * tree-alias-type.h: Ditto. - -2003-01-30 Diego Novillo - - * tree-cfg.c (struct cfg_stats_d): New. - (cfg_stats): New file local. - (build_tree_cfg): Start TV_TREE_CFG timer before allocating memory. - Initialize cfg_stats. - (make_blocks): Count coalesced label blocks. - (dump_tree_cfg): Call dump_cfg_stats if TDF_STATS is enabled. - (dump_cfg_stats): New. - (debug_cfg_stats): New. - - * tree-dfa.c (SCALE, LABEL, PERCENT): Move ... - * tree-flow.h: ... here - -2003-01-29 Diego Novillo - - * tree-cfg.c (make_blocks): Do not start a new block if the - previous statement and the current statement are labels of the same - kind. - -2003-01-29 Diego Novillo - - * tree-cfg.c (parent_array): Make file local. - (label_to_block_map): New file local variable. - (build_tree_cfg): Initialize label_to_block_map. - (make_edges): Don't pre-scan all the blocks looking for blocks with - labels. - (make_exit_edges): Remove argument label_to_block_map. Update all - callers. - (make_goto_expr_edges): Likewise. - (dump_tree_bb): Check that the block has a valid annotation. - (set_bb_for_stmt): If the statement is a label, add the label to - the label_to_block_map. - - * tree-pretty-print.c (dump_vops): Check that the block has a valid - annotation. - -2003-01-29 Jeff Law - - * tree-dfa.c (find_may_aliases_for): Just accept the index of - the current indirect_ref. Caller updated. - (num_indirect_refs, num_addressable_vars): New variables. - (indirect_refs, addressable_vars): New varrays. - (dump_dfa_status): Dump info on the indirect refs and - addressable vars. - (dump_alias_info): Similarly. - (compute_may_aliases): Initialize and finalize the new virtual - arrays and hash tables for indirect refs and addressable vars. - Include setup/teardown in the cost for alias analysis. - (find_may_aliases_for): Split main loop into two. The first - walks over the indirect refs and takes advantage of the - symmetric properties of the aliasing relationship to avoid - useless work. The second loop iterates over the addressable - variables. - (find_vars_r): Rework to build all three arrays we need. - -2003-01-29 Andreas Jaeger - - * tree-alias-common.c (find_func_aliases): Remove unused variable. - (display_points_to_set_helper): #if 0 function to avoid warning - about unused function. - - * tree-alias-ecr.c (ECR_new): Remove ISO C style function - definition. - * disjoint-set.c (disjoint_set_new): Likewise. - -2003-01-29 Frank Ch. Eigler - - * tree-mudflap.c (mx_xfn_indirect_ref): Use a stack of flags for - tracking pointer dereference reads vs writes. - (mf_build_check_statement_for): Pass access-type value to __mf_check. - * c-mudflap.c (mflang_register_call): Adapt to mf-runtime.h API change. - -2003-01-29 Diego Novillo - - * Makefile.in (ssa.o): Add dependency on $(TIMEVAR_H). - * timevar.def (TV_DOM_FRONTIERS): Define. - * ssa.c (compute_dominance_frontiers): Use. - -2003-01-29 Diego Novillo - - * tree-ssa-dce.c (remove_dead_stmt): Fix uninitialized use - warning. - -2003-01-28 Diego Novillo - - * timevar.def (TV_TREE_SSA_REWRITE_BLOCKS): Adjust legend. - * tree-ssa.c (rewrite_into_ssa): Use TV_TREE_SSA_REWRITE_BLOCKS. - (mark_def_sites): Add comment. - -2003-01-28 Jeff Law - - * ssa.c (compute_dominance_frontiers_1): Use get_dominated_by - to avoid useless walks over all the basic blocks. Use cache - of immediate dominators to avoid silly calls to get_immediate_dominator. - Do not clear elements of the frontiers bitmap. - (compute_dominance_frontiers): Compute cache of immediate - dominators and pass it to compute_dominance_frontiers_1. Clear - the entire vector of frontiers bitmaps. - - * timevar.def (TV_TREE_SSA_REWRITE_BLOCKS): Renamed from - TV_TREE_BUILD_SSA. - (TV_TREE_SSA_OTHER): New timevar. - * tree-ssa.c (rewrite_into_ssa): Updated. Use new TV_TREE_SSA_OTHER - timevar. - - * tree.h (LABEL_DECL_INDEX): Define for use by CFG builder. - * tree-cfg.c (make_exit_edges): Accept and pass though label to - block mapping array. - (make_goto_expr_edges): For simple gotos, lookup the destination - in the label to block mapping array. Zap old slow code to - handle simple gotos. - (make_edges): Build the label to block mapping array. - - * tree.h (PHI_NODE_ELT_CHECK): Provide version when ENABLE_CHECKING - is not defined. - -2003-01-28 Diego Novillo - - * tree-flow-inline.h (parent_block, set_parent_block, phi_nodes): - Assume that blocks always have valid annotations. - (add_dom_child): New function. - (dominator_children): New function. - - * tree-flow.h (struct bb_ann_d): Add field 'dom_children'. - - * tree-ssa.c (mark_def_sites): Add parameter 'idom'. - Add each block BB to the set of dominator children of BB's - immediate dominator. - (rewrite_block): Remove 'idom' parameter. - Recurse into blocks set in the dominator children bitmap. - -2003-01-28 Diego Novillo - - * flags.h (flag_disable_tree_ssa): New flag. - * c-decl.c (c_expand_body): Use it. - * toplev.c: Declare it. - (f_options): Add help text for -fdisable-tree-ssa. - * doc/invoke.texi: Add documentation for -fdisable-tree-ssa. - -2003-01-28 Diego Novillo - - * Makefile.in (TREE_FLOW_H): Add dependency on $(HASHTAB_H) - (OBJS): Temporarily remove tree-ssa-pre.o. - (tree-ssa.o, c-decl.o): Add dependency on $(TREE_DUMP_H). - - * c-decl.c: Include tree-dump.h - - * c-pretty-print.c (dump_c_node): Fix rendering of GOTO_STMTs to - computed locations. - (op_prio): Don't abort on unknown operators. - - * c-simplify.c (mostly_copy_tree_r): Don't copy statement - annotations. - - * gimplify.c (simplify_addr_expr): Mark the RHS of the simplified - ADDR_EXPR addressable. - (mostly_copy_tree_r): Don't copy statement annotations. - - * old-tree-inline.c (walk_tree): Handle SSA_NAME nodes. - - * timevar.def (TV_TREE_RDEFS): Remove. - (TV_TREE_BUILD_SSA): Define. - (TV_TREE_DFA): Define. - - * tree-cfg.c: Update copyright notices. - Remove doxygen markers everywhere. - (remove_unreachable_block): New local function - (remove_unreachable_blocks): Call it. - (remove_bb): Rename from remove_tree_bb. Update all callers. - (validate_loops): Remove unused function. - (block_invalidates_loop): Remove unused function. - (remove_stmt): Invalidate the defining statement of all the - definitions made by the statement. - Remove the annotation before replacing the statement with - empty_stmt_node. - - * tree-dfa.c: Update copyright notices. - Remove doxygen markers everywhere. - (struct clobber_data_d): Remove existing fields. Add fields 'stmt' - and 'prev_vops'. Update all users. - (alias_tags): Rename from alias_leaders. - (num_alias_tags): Rename from num_alias_leaders. - (struct dfa_stats_d): Declare. - (struct dfa_counts_d): Remove. Update all users. - (TRM_*): Remove. Update all users. - (find_tree_refs): Remove. Update all users. - (get_stmt_operands): Rename from find_refs_in_stmt. Update all users. - (get_expr_operands): Rename from find_refs_in_expr. Update all users. - (add_stmt_operand): New function. - (set_def): New function. - (add_use): New function. - (add_vdef): New function. - (add_vuse): New function. - (create_phi_node): New function. - (copy_stmt): New function. - (compute_immediate_uses): New function. - (compute_immediate_uses_for): New function. - (compute_reached_uses): New function. - (compute_reaching_defs): New function. - (add_immediate_use): New function. - (create_var_ann): New function. - (create_stmt_ann): New function. - (dump_immediate_uses): New function. - (debug_immediate_uses): New function. - (dump_immediate_uses_for): New function. - (debug_immediate_uses_for): New function. - (create_ref_list, empty_ref_list, add_ref_to_list_begin, - add_ref_to_list_end, add_list_to_list_begin, add_list_to_list_end, - find_list_node, rli_start, rli_start_last, rli_start_at, - rli_delete, add_ref_to_list_after, tree_ref_size, create_ref, - add_ephi_arg, add_referenced_var, replace_ref_with, - try_replace_ref_with, replace_ref_r, replace_ref_stmt_with, - remove_ref, remove_def, reset_def_def_links, replace_phi_arg_with, - create_tree_ann, function_may_recurse_p, dump_ref, debug_ref, - dump_ref_list, dump_ref_array, debug_ref_list, debug_ref_array, - dump_phi_args, dump_if_different, count_tree_refs, ref_type_name, - ref_defines, is_killing_def, tree_ref_structure, output_ref): - Remove. Update all users. - (dump_referenced_vars): Remove parameter 'details'. Update all - users. - (dump_variable): Don't abort if the variable is nil. Display all - the aliases for the variable. - (dump_dfa_stats): Handle new counters. - (collect_dfa_stats): Likewise. - (collect_dfa_stats_r): Likewise. - (find_vars_r): New function. - (compute_may_aliases): Call it via walk_tree before computing aliases. - Only use alias tags if -ftree-points-to is not given. - Call add_may_alias. - (find_may_aliases_for): Only use alias tags if -ftree-points-to is - not given. - (add_may_alias): New function. - (find_alias_tag): Rename from find_alias_leader. - (dump_alias_info): New function. - (debug_alias_info): New function. - (htab_hash_var): New function. - (htab_var_eq): New function. - (get_virtual_var): New function. - - * tree-dump.c (struct dump_option_value_info): Rename -block to - -blocks. Add new option -vops. - (dump_function): Don't display which pass enabled the dump. - - * tree-flow-inline.h: Update copyright notices. - (var_ann): New function. - (stmt_ann): New function. - (ann_type): New function. - (bb_ann): Rename from bb_annotation. - (may_aliases): New function. - (set_may_alias_global_mem): New function. - (may_alias_global_mem_p): New function. - (set_indirect_ref): New function. - (indirect_ref): New function. - (is_dereferenced): New function. - (modify_stmt): New function. - (unmodify_stmt): New function. - (stmt_modified_p): New function. - (def_op): New function. - (use_ops): New function. - (vdef_ops): New function. - (vuse_ops): New function. - (immediate_uses): New function. - (reaching_defs): New function. - (phi_nodes): New function. - (same_var_p): New function. - (gsi_step_in_bb): Re-implement. Check if the iterator stepped out - of the block by calling bb_for_stmt. - (gsi_end_bb_p): Rename from gsi_end_bb. Update all users. - Call gsi_stmt to determine if the iterator has reached the end of - the block. - (ref_id, ref_type, ref_bb, ref_stmt, ref_var, imm_uses, - reached_uses, imm_reaching_def, set_imm_reaching_def, - set_phi_arg_def, phi_arg_def, set_phi_arg_edge, phi_arg_edge, - reaching_defs, phi_args, num_phi_args, phi_arg, set_phi_arg, - tree_annotation, tree_refs, add_tree_ref, remove_tree_ref, - alias_leader, set_alias_leader, set_tree_flag, clear_tree_flag, - reset_tree_flags, tree_flags, indirect_var, set_indirect_var, - bb_refs, remove_bb_ref, set_exprref_class, exprref_class, - set_exprref_inserted, exprref_inserted, set_exprref_save, - exprref_save, set_exprref_reload, exprref_reload, - set_exprref_processed, set_exprref_processed2, exprref_processed2i, - exprref_uses, set_exprref_uses, set_expruse_def, expruse_def, - set_expruse_phiop, expruse_phiop, set_expruse_phi, expruse_phi, - set_expruse_has_real_use, expruse_has_real_use, - set_exprphi_phi_args, exprphi_phi_args, num_ephi_args, ephi_arg, - set_ephi_arg, set_exprphi_downsafe, exprphi_downsafe, - set_exprphi_canbeavail, exprphi_canbeavail, set_exprphi_later, - exprphi_later, set_exprphi_extraneous, exprphi_extraneous, - exprphi_willbeavail, is_assignment_stmt, is_may_ref, is_may_def, - is_may_use, is_partial_ref, is_partial_use, is_volatile_ref, - is_volatile_def, is_volatile_use, is_clobbering_def, - is_relocating_def, is_addressof_use, is_pure_use, is_pure_def, - rli_after_end, rli_step, rli_step_rev, rli_ref, get_last_ref, - get_first_ref, ref_list_is_empty): Remove. Update all users. - - * tree-flow.h: Update copyright notices. - Remove doxygen markers. - Include hashtab.h. - (enum tree_ann_type): New. - (struct tree_ann_common_d): New. - (struct var_ann_d): New. - (struct operands_d): New. - (struct voperands_d): New. - (operands_t): New type. - (voperands_t): New type. - (struct dataflow_d): New. - (dataflow_t): New type. - (struct stmt_ann_d): New. - (tree_ann): New type. - (var_ann_t): New type. - (stmt_ann_t): New type. - (bb_ann_t): Rename from bb_ann. - (enum tree_ref_type, TRM_*, struct ref_list_node, struct - ref_list_priv, ref_list, struct tree_ref_common, struct var_ref_d, - struct var_def_d, struct var_phi_d, struct var_use_d, struct - phi_node_arg_d, phi_node_arg, struct expr_ref_common, struct - expr_phi_d, struct expr_use_d, enum tree_ref_structure_enum, union - tree_ref_d, tree_ref, struct tree_ann_d, tree_ann, enum tree_flags, - struct dfa_counts_d, ref_list_iterator): Remove. Update all users. - (TDFA_USE_OPS): Define. - (TDFA_USE_VOPS): Define. - - * tree-inline.c (walk_tree): Handle SSA_NAME nodes. - - * tree-optimize.c: Update copyright notices. - Remove doxygen markers. - (optimize_function_tree): Temporarily disable call to - tree_perform_ssapre. - Remove #if0 code. - - * tree-pretty-print.c (MASK_POINTER): Define. - (dump_vops): New function. - (dump_generic_node): Shorten made-up names for unnamed objects. - Hanlde PHI_NODE, VDEF_EXPR and SSA_NAME nodes. - Keep track of basic block transitions. - Call dump_vops if -vops dump option is given. - (op_prio): Don't abort if the operand is nil. - (dump_block_info): Don't keep track of basic block transitions. - - * tree-simple.c: Update copyright notices. - (get_base_symbol): Call STRIP_NOPS. - Handle SSA_NAME nodes. - - * tree-simple.h: Update copyright notices. - (gsi_end_p): Rename from gsi_end. Update all callers. - - * tree-ssa-ccp.c: Update copyright notices. - Update code to use the new SSA infrastructure. - (const_values): New hash table to keep track of constants. - (struct value_map_d): New. - (cfg_edges): Rename from edges. Update all users. - (set_value): New function. - (get_value): New function. - (get_default_value): New function. - (value_map_hash): New function. - (value_map_eq): New function. - - * tree-ssa-dce.c: Update copyright notice. - Update code to use new SSA infrastructure. Factor some code into - new functions. - (dom_info): Declare with file scope. - (struct stmt_stats): Add fields 'total_phis' and 'removed_phis'. - (needed_stmts): New hash table to keep track of needed statements. - (stmt_useful_p): New function. - (find_useful_stmts): Call it. - (remove_dead_stmt, remove_dead_phis): New functions. - (remove_dead_stmts): Call them. - (need_to_preserve_store): Preserve stores to volatile variables. - (tree_ssa_dce): Rename from tree_ssa_eliminate_dead_code. Update - all users. - - * tree-ssa.c: Update copyright notice. - Change basic algorithm to rewrite the function into SSA form - instead of building factored use-def chains. - Include hashtab.h and tree-dump.h - (next_ssa_version): New global variable. - (def_blocks): New file local variable. - (struct def_blocks_d): New. - (currdefs): New file local variable. - (struct currdef_d): New. - (rewrite_into_ssa): Rename from build_tree_ssa. Update all users. - Call compute_may_aliases, mark_def_sites and rewrite_block. - (rewrite_block): Rename from search_fud_chains. Call - rewrite_stmts. - (mark_def_sites): New function. - (set_def_block): New function. - (rewrite_stmts): New function. - (rewrite_stmt): New function. - (rewrite_operand): New function. - (rewrite_out_of_ssa): New function. - (remove_phi_node): New function. - (register_new_def): New function. - (def_blocks_free): New function. - (def_blocks_hash): New function. - (def_blocks_eq): New function. - (currdef_hash): New function. - (currdef_eq): New function. - (debug_def_blocks): New function. - (debug_def_blocks_r): New function. - (build_fud_chains, compute_reaching_defs, follow_chain, - dump_reaching_defs, debug_reaching_defs, set_ssa_links): Remove. - (remove_phi_arg): Rename from tree_ssa_remove_phi_alternative. - Update all users. - (init_tree_ssa): Set next_ssa_version to 1. - Create hash tables def_blocks and currdefs. - (delete_tree_ssa): Accept a FUNCTION_DECL tree as argument. Update - all users. - (currdef_for): Add new parameter 'create_default'. If nonzero, - create a new SSA name if none is found for the variable. - (set_currdef_for): Search in the currdefs hash table. - - * tree.c (tree_node_kind): Add new values phi_kind and - ssa_name_kind. - (tree_node_kind_names): Likewise. - (tree_size): Handle PHI_NODE and SSA_NAME nodes. - (make_node): Likewise. - (tree_node_structure): Likewise. - (phi_node_elt_check_failed): New function. - (make_phi_node): New function. - (make_ssa_name): New function. - (build_vdef_expr): New function. - - * tree.def (SSA_NAME): New code. - (VDEF_EXPR): New code. - (PHI_NODE): New code. - - * tree.h (union tree_ann_d): Forward declare. - (struct tree_common): Change type of field 'ann'. - (PHI_NODE_ELT_CHECK): Define. - (phi_node_elt_check_failed): Declare. - (VDEF_RESULT): Define. - (VDEF_OP): Define. - (SSA_NAME_DECL): Define. - (SSA_NAME_DEF_STMT): Define. - (SSA_NAME_VERSION): Define. - (struct tree_ssa_name): New. - (PHI_RESULT): Define. - (PHI_NUM_ARGS): Define. - (PHI_ARG_CAPACITY): Define. - (PHI_ARG_ELT): Define. - (PHI_ARG_EDGE): Define. - (PHI_ARG_DEF): Define. - (struct phi_arg_d): New. - (struct tree_phi_node): New. - (SSA_DECL_P): Define. - (SSA_VAR_P): Define. - (enum tree_node_structure_enum): Add values TS_SSA_NAME and - TS_PHI_NODE. - (union tree_node): Add fields 'ssa_name' and 'phi'. - (make_phi_node): Declare. - (make_ssa_name): Declare. - (build_vdef_expr): Declare. - (TDF_BLOCKS): Rename from TDF_BLOCK. - (TDF_VOPS): Define. - - * doc/invoke.texi: Document new tree dump option -vops. Update - documentation for switch -blocks. - -2003-01-27 Jeff Law - - * gimplify.c (simplify_return_expr): Correctly handle return - expressions with side effects in functions returning void. - - * tree-ssa-ccp.c (widen_bitfield): Do not try to widen anything - except constant integers. - -2003-01-26 Jeff Law - - * c-simplify.c (simplify_decl_stmt): Fix comment typo. - Use correct predicate when "simplifying" a static initializer. - -2003-01-26 Andreas Jaeger - - * Makefile.in (gt-dependence.h): New rule. - -2003-01-23 Jeff Law - - * c-simplify.c (simplify_decl_stmt): Arrange to examine initializers - for static variables. - * gimplify.c (simplify_constructor): Kill initial is_simple_constructor - check. - (simplify_modify_expr): Get the type from the destination rather than - the toplevel expression. Handle case where type is ARRAY_TYPE. Ignore - TREE_STATIC for the RHS. - -2003-01-24 Frank Ch. Eigler - - * tree-mudflap.c (mf_varname_tree): Check for non-NULL DECL_NAME - before trying to cplus_demangle it. - -2003-01-23 Jeff Law - - * tree-cfg.c (make_exit_edges): Fix thinkos. - -2003-01-22 Jeff Law - - * tree-cfg.c (make_goto_expr_edges): Check the underlying - LABEL_DECL, not the LABEL_EXPR for FORCED_LABEL and NONLOCAL_LABEL. - - * gimplify.c (simplify_expr, case GOTO_EXPR): Identify and mark - labels which are targets of nonlocal gotos and mark functions which - have labels which are targets of nonlocal gotos. - (simplify_expr, case LABEL_DECL): New case. Mark labels which - have their address taken. - * tree-cfg.c (is_nonlocal_label_block): Remove. All callers - updated. - (make_exit_edges, case GOTO_EXPR): Handle computed gotos sanely. - (make_exit_edges, case CALL_EXPR): Handle abnormal edges from - nonlocal gotos at call sites. - (make_exit_edges, case RETURN_EXPR): Likewise. - (make_exit_edges, case MODIFY_EXPR): New case to handle abnormal - edges from nonlocal gotos as call sites. - (make_goto_expr_edges): Handle computed gotos and nonlocal gotos. - (is_ctrl_altering_stmt): Handle abnormal edges in CALL_EXPRs - functions which receive nonlocal gotos. Similarly for CALL_EXPRs - which occur on the RHS of a MODIFY_EXPR. - * tree.h (FORCED_LABEL, NONLOCAL_LABEL): New defines. - (FUNCTION_RECEIVES_NONLOCAL_GOTO): Likewise. - -2003-01-22 Frank Ch. Eigler - - * doc/invoke.texi: Provide some information about -fmudflap. - - * tree-mudflap.c (mf_varname_tree): Conditionally invoke the C++ - demangler in libiberty. Reduce function printing verbosity. - (mf_file_function_line_tree): Reduce function printing verbosity. - (mudflap_enqueue_decl): Use COMPLETE_TYPE_P to avoid trying to - register (get size of) void-typed objects. - -2003-01-21 Jose Renau - - * tree-flow-inline.h (get_lineno): Return -1 for nodes without - locus information. - (get_filename): Return "???" for nodes without locus information. - -2003-01-21 Jeff Law - - * tree-cfg.c (cleanup_switch_expr_graph): Wrap declaration of - switch_expr with ENABLE_CHECKING block. - - * c-simplify.c (is_last_stmt_of_scope): Wrap definition and - declaration inside and ENABLE_CHECKING block. - -2003-01-20 Frank Ch. Eigler - - * tree-mudflap.c (mx_xfn_indirect_ref): Use new TREE_LOCUS field - as a predicate for finding TREE_FILENAME etc. - -2003-01-16 Daniel Berlin - - * Remove dead PRE code. - * tree-ssa-pre.c (tree_perform_ssapre): Collect left occurrences and - kills *after* finishing collecting all expressions. - -2003-01-15 Jeff Law - - * Death to WFL nodes. - * c-aux-info.c: Replace DECL_SOURCE_FILE and DECL_SOURCE_LINE with - TREE_FILENAME and TREE_LINENO respectively when retrieving file - and line information. Use TREE_LOCUS to copy existing information - from one node to another. Use annotate_with_file_line to add or - replace location information on a node. Remove support for - EXPR_WITH_FILE_LOCATION nodes. Remove STRIP_WFL statements. - * c-common.c, c-parse.in, c-pretty-print.c, dbxout.c: Likewise. - * diagnostic.c, dwarf2out.c, dwarfout.c: Likewise. - * except.c, integrate.c, stmt.c, tree-alias-common.c: Likewise. - * tree-cfg.c, tree-dfa.c, tree-dump.c, tree-flow-inline.h: Likewise. - * tree-mudflap.c, tree-pretty-print.c, tree-simple.c: Likewise. - * tree-ssa-ccp.c, tree-ssa-dce.c, tree-ssa-pre.c: Likewise. - * varasm.c, xcoffout.c: Likewise. - * config/alpha/alpha.c: Likewise. - * config/mips/mips.c: Likewise. - * c-decl.c: Likewise. - (duplicate_decls): Also copy TREE_LOCUS from olddecl to newdecl. - (finish_function): Save and restore the current filename and - linenumber around genericizing of the function tree. - * c-simplify.c (c_simplify_stmt): Use annotate_all_with_file_line - instead of wrap_all_with_wfl. Remove STRIP_WFL statements. - * expr.c (expand_expr): Emit line number notes for expressions - with attached file/line information. Remove EXPR_WITH_FILE_LOCATION - support. - * gimplify.c: Kill STRIP_WFL statements. Remove EXPR_WITH_FILE_LOCATION - support. - (simplify_expr_wfl): Kill. - (annotate_stmt_with_file_line): Renamed from wrap_with_wfl. - (annotate_all_with_file_line): Renamed from wrap_all_with_wfl. - (simplify_expr): Save and restore the current file/line around - simplification of the given expression. Add annotation to more - nodes created during simplification. - (simplify_self_mod_expr): Add file/line location to nodes we create. - (get_initialized_tmp_var): Similarly. - * old-tree-inline.c (expand_call_inline): Use annotate_with_file_line - to add file/line information to nodes instead of wrapping them - with EXPR_WITH_FILE_LOCATION nodes. - * 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): Dump any file/line information that is attached to - the given node. - * tree-inline.c (walk_tree): Set lineno appropriately. - * tree-simple.h (annotate_all_with_file_line): Renamed from - wrap_all_with_wfl. Remove STRIP_WFL statements. - * tree.c (build_expr_wfl): Kill. - (make_node): Use annotate_with_file_line. - (annotate_with_file_line): New function. - * tree.def: Remove EXPR_WITH_FILE_LOCATION. - * tree.h (tree_common): Add locus field. Remove references to - EXPR_WITH_FILE_LOCATION. - (tree_decl): Remove locus field. - (STRIP_WFL, EXPR_WFL_*): Kill. - (DECL_SOURCE_LOCATION, DECL_SOURCE_FILE, DECL_SOURCE_LINE): Kill. - (TREE_LOCUS, TREE_FILENAME, TREE_LINENO): new. - (annotate_with_file_line): Renamed from build_expr_wfl. - - * objc/objc-act.c: Use TREE_FILENAME and TREE_LINENO to - extract file/line information from tree nodes. - -2003-01-14 Frank Ch. Eigler - - * tree-mudflap.c (mx_xfn_indirect_ref): Handle ARRAY_REF of - a COMPONENT_REF specially to avoid unnecessary checks. - -2003-01-13 Frank Ch. Eigler - - Front-end generalization. - * Makefile.in (C_AND_OBJC_OBJS): Add c-mudflap.o and dependencies. - * tree-mudflap.c: Don't include "c-tree.h" any more. - (mf_init_extern_trees): Divert to mflang_lookup_decl(). - (mf_enqueue_register_call, mf_flush_enqueued_calls): Move and rename - these functions. - * tree-mudflap.h: Declare new mflang_* routines. - * c-mudflap.c: New file with C front-end mflang_* routines. - * tree-nomudflap.c (*): Call internal_error instead of abort. - -2003-01-07 Steven Bosscher - - * Makefile.in (check-g95): New test target. - (check-f95): Alias for check-g95. - -2003-01-07 Diego Novillo - - * tree-dump.c (dump_function_to_file): New function. - (dump_function): Call it. - Convert argument declaration to K&R format. - * tree-dump.h: Include splay-tree.h. - (dump_function_to_file): Declare. - - * tree-optimize.c (optimize_function_tree): Remove unused variables - dump_file and dump_flags. - (dump_current_function): Remove. Update all users by calling - dump_function instead. - * tree.h (dump_current_function): Remove declaration. - - * Makefile.in (TREE_DUMP_H): Define. - Update targets depending on tree-dump.h to depend on $(TREE_DUMP_H). - (tree-ssa-cp.o): Remove unused target. - (tree-cfg.o): Add dependency on $(TREE_DUMP_H). - (tree-optimize.o): Likewise. - (tree-ssa-dce.o): Likewise. - (tree-ssa-ccp.o): Likewise. - (tree-ssa-pre.o): Likewise. - -2003-01-02 Daniel Berlin - - * tree-ssa-pre.c (rename_2): Fix a false matching condition. - This is actually fallout from is_default_def change. - -2003-01-02 Jason Merrill - - * c-simplify.c (c_genericize): Dump more info about the function. - Use dump_function. - * tree-dump.c (dump_function): Move from cp/optimize.c. - * tree-dump.h: Declare it. - - * gimplify.c (mostly_copy_tree_r): Remove unnecessary cases. - (unshare_expr): New fn. - * tree-inline.c (mark_local_for_remap_r, unsave_r): New fns, adapted - from C++ versions. - (lhd_unsave_expr_now): Likewise. - * tree.c (unsave_expr_now): Remove. - (unsafe_for_reeval): Labels and BIND_EXPRs are only somewhat unsafe. - - * gimplify.c (simplify_function_tree): Add an outer BIND_EXPR if - needed. - (voidify_wrapper_expr): Not static. Abort if we try to voidify an - expression with TREE_ADDRESSABLE type. Be clever with INDIRECT_REFs. - (foreach_stmt): Avoid redundant work. - (create_tmp_var): Abort if we try to create a temp of ADDRESSABLE type. - (simplify_expr): Simplify VTABLE_REF. - * c-simplify.c (simplify_decl_stmt): Ignore DECL_EXTERNAL decls. - (simplify_stmt_expr): Fix thinko. - (simplify_block): Don't ignore partial scopes. - (simplify_condition): New fn. - (simplify_c_loop, simplify_if_stmt, simplify_switch_stmt): Call it. - * expr.c (expand_expr) [BIND_EXPR]: Handle statics better. - * tree-inline.c (remap_decl): Remap all decls. - (declare_return_variable): Be clever with INDIRECT_REFs. - (expand_call_inline): If we have an explicit return slot, the inlined - body is void. - (walk_tree): Fix type handling. - (copy_tree_r): Don't walk into decls. - * tree-simple.c (is_simple_unary_expr): Handle VTABLE_REF. - (is_simple_id): Allow RESULT_DECL. - * tree-simple.h (gsi_stmt): Strip WFLs and NOPs. - - * gimplify.c (simplify_cond_expr): Handle void arms. Add target parm. - (simplify_modify_expr): Pass it. Add special handling for COND_EXPR - and CONSTRUCTOR (from Daniel Berlin). Add want_value parm. - (simplify_expr): Pass new args. Loop sooner if language-specific - simplification happened. - (simplify_return_expr): Pass the whole MODIFY_EXPR to simplify_expr. - (simplify_target_expr): Simplify. - - * tree.def (CATCH_EXPR, EH_FILTER_EXPR): New tree codes. - * except.c (expand_eh_handler): New fn. - (expand_eh_region_end_allowed): If no types are allowed, hand off to - expand_eh_region_end_must_not_throw. - * except.h: Declare expand_eh_handler. - * expr.c (expand_expr) [TRY_CATCH_EXPR]: Use it. - [CATCH_EXPR, EH_FILTER_EXPR]: New cases. - * gimplify.c (simplify_expr) [EXC_PTR_EXPR, CATCH_EXPR, - EH_FILTER_EXPR]: New cases. - (gimple_build_eh_filter): New fn. - (maybe_protect_cleanup): New fn. - (gimple_push_cleanup): Call it. - (simplify_cleanup_point_expr): Fix thinko. - * c-simplify.c (simplify_cleanup): Call it. - * tree-simple.h: Declare it. - * Makefile.in (gimplify.o): Depend on except.h. - * tree.h (CATCH_TYPES, CATCH_BODY): New macros. - (EH_FILTER_TYPES, EH_FILTER_FAILURE): New macros. - * tree-simple.c (is_simple_id): Allow EXC_PTR_EXPR. - * c-pretty-print.c (dump_c_node) [CLEANUP_POINT_EXPR]: Support. - * tree-pretty-print.c (dump_generic_node): Likewise. - [CATCH_EXPR, EH_FILTER_EXPR, EXC_PTR_EXPR]: Support. - - * c-pretty-print.c (NIY): Print operands. - (dump_c_tree): Don't look at TREE_CHAIN if it doesn't matter. - (dump_c_node) [ARRAY_TYPE]: Handle non-constant array bounds. - [CALL_EXPR]: Pass spc down. - [VTABLE_REF]: Support. - (op_prio) [TARGET_EXPR]: Support. - (print_call_name): Handle function pointers. - * tree-pretty-print.c: Likewise. - -2002-12-31 Steven Bosscher - - * gimplify.c (create_tmp_var_noc): Remove unused function. - * tree-simple.h: Kill prototype. - -2002-12-30 Diego Novillo - - * tree-flow.h (tree_find_loops): Remove unused declaration. - -2002-12-29 Daniel Berlin - - * toplev.c: Add flag_ip, enable by default at -O4+ (This is not - set in stone, and thus, not documented). - (decode_f_option): Add warning if andersen's PTA is selected but - not compiled in. - - * flags.h: Add flag_ip. - - * tree-alias-ander.c: Fix todo. - (andersen_function_call): Return 1 if we don't need to process - the function. - (ptset_map): New map, cache points-to sets. - (andersen_op): We can do IP on all statics without help. - (andersen_init): Only init once if we are doing ip analysis. - (andersen_cleanup): Don't cleanup if we need the info for ip. - (andersen_add_var): Clear points-to set if it exists already. - (andersen_add_var_same): Ditto. - (andersen_function_call): We can do interprocedural analysis on - statics. - (andersen_may_alias): Cache points-to sets. - - * c-decl.c (c_expand_body): Don't throw away tree if flag_ip is - on, even if they are uninlinable, they may be wanted for ip - optimizations. - - * tree-alias-common.c (get_values_from_constructor): New - function to collect alias_typevars from constructors. - (alias_annot): Fix where the GTY is so gengtype picks it up. - (intra_function_call): Ignore non-pointers for global var - assignment. What arguments point to can now point to a global var - as well. - (find_func_aliases): We need to handle decl's with initials as - well. - Only call intra_function_call if we have to. - Handle constructors. - (create_fun_alias_var): Incoming pointer arguments could be - pointing to a global var, unless this is a static function and we - are doing interprocedural analysis. - (create_alias_vars): Take an fndecl argument, and use it. - (init_alias_vars): Handle ip_partial as well. - (ptr_may_alias_var): Simplify, fix. - - * tree-alias-common.h (tree_alias_ops): function_call now returns - an int, and we have an extra member named ip_partial. - - * tree-alias-steen.c (steen_ops): We can't do ip_partial. - (steen_function_call): Update definition and return 1. - - * tree-dfa.c (compute_may_aliases): Call create_alias_vars with - current_function_decl. - - * tree-flow.h (create_alias_vars): Remove proto from here, it's - in tree-alias-common.h. - (tree_perform_ssapre): Take a tree, like the other optimizers. - - * tree-optimize.c (optimize_function_tree): Call - tree_perform_ssapre with a tree. - - * tree-ssa-pre.c: Remove dead, #if 0'd code. - (tree_perform_ssapre): Use passed in tree. - -2002-12-23 Frank Ch. Eigler - - * tree-mudflap.c (mf_decl_cache_locals, mf_decl_clear_locals): New - functions. - (mudflap_c_function): Call them before/after basic transforms. - (mf_cache_shift_decl_l, ..._mask_l): New variables to track local - VAR_DECL shadows of cache parameters. - (mf_build_check_statement_for): Use and update them. - -2002-12-23 Frank Ch. Eigler - - * tree-mudflap.c (mx_register_decls): Trust incoming TREE_ADDRESSABLE - instead of own timetaking analysis. - (mf_find_addrof, mx_xfn_find_addrof): Removed functions. - -2002-12-23 Steven Bosscher - - * tree-dfa.c: Add doxygen markers in comments. - -2002-12-22 Diego Novillo - - * gimplify.c: Undo the following change: - 2002-12-11 Diego Novillo - * gimplify.c (simplify_return_expr): return statements should - only have a GIMPLE value as argument. - - * tree-simple.c: Fix grammar for return statements. - -2002-12-20 Frank Ch. Eigler - - * tree-mudflap.c (mf_init_extern_trees): Rewrite last change - without using statement-expressions. - -2002-12-19 Diego Novillo - - * tree-cfg.c (build_tree_cfg): Make sure that TV_TREE_CFG - is popped properly. - -2002-12-19 Frank Ch. Eigler - - * tree-mudflap.c (mf_init_extern_trees): Abort gracefully if - was not included. - (*): Correct some minor compiler warnings elsewhere. - -2002-12-18 Diego Novillo - - * configure: Regenerate with autoconf 2.13. - -2002-12-17 Ben Elliston - - * tree-optimize.c (optimize_function_tree): Temporarily - disable SSA optimizations if -fmudflap is present. - -2002-12-16 Ben Elliston - - * tree-mudflap.c (mx_flag): Assert that the tree node is valid. - -2002-12-14 Jason Merrill - - * tree-dump.c (dump_files): Add .generic. Move .inlined after it. - * tree.h (tree_dump_index): Likewise. - * c-simplify.c (c_genericize): Emit original and generic dumps here. - * c-decl.c (c_expand_body): Not here. - -2002-12-13 Ben Elliston - - * tree-dfa.c (find_refs_in_expr): Terminate comment. - -2002-12-12 Steven Bosscher - - * tree-cfg.c: Update doxygen documentation. - * tree-dfa.c: Add doxygen documentation. - -2002-12-11 Steven Bosscher - - * tree-cfg.c: Add doxygen markers in comments. - * tree-optimize.c: Likewise. - * tree-ssa.c: Likewise. - -2002-12-11 Diego Novillo - - * gimplify.c (simplify_return_expr): return statements should only - have a GIMPLE value as argument. - * tree-cfg.c (call_expr_flags): New function. - (is_ctrl_altering_stmt): Call it. - * tree-flow.h (extern): Declare it. - -2002-12-06 Diego Novillo - - * tree-cfg.c (make_goto_expr_edges): Temporary hack to prevent - removing blocks with nonlocal labels. - (is_nonlocal_label_block): Return true if DECL_NONLOCAL is set for - the label. - - * tree-dfa.c (alias_leaders): New local array. - (num_alias_leaders): New local variable. - (find_alias_leader): New local function. - (may_access_global_mem): New local function. - (find_may_aliases_for): Call them. - (compute_may_aliases): Allocate and deallocate alias_leaders. - Show alias information if -fdump-tree-...-alias flag is given. - (may_alias_p): Return true if both variables are the same. - (find_refs_in_expr): Strip WFL and NOPs from the parent statement. - If a pointer relocation is due to a function call, assignment from - a global or a function argument, mark the pointer as a may-alias - for global storage. - (dump_referenced_vars): Reformat output. - (dump_variable): Likewise. - - * tree-dump.c (dump_option_value_info): Add entry for TDF_ALIAS. - * tree.h (TDF_ALIAS): Define. - * doc/invoke.texi: Document new flag. - - * tree-flow-inline.h (may_alias_global_mem_p): New function. - * tree-flow.h (enum tree_flags): Add value TF_MAY_ALIAS_GLOBAL_MEM. - (may_alias_global_mem_p): Declare. - - * tree-simple.c (get_base_symbol): Return NULL_TREE, not NULL. - * tree-ssa-ccp.c (tree_ssa_ccp): Remove unused variable. - * tree-ssa-dce.c (need_to_preserve_store): Call - decl_function_context instead of DECL_CONTEXT. - If the symbol may alias global memory, return nonzero. - - * tree-ssa.c (dump_reaching_defs): Reformat output. - (set_currdef_for): Walk the alias leader chain, setting CURRDEF for - all the alias sets that may be affected by the definition. - -2002-12-06 Daniel Berlin - - * tree-dfa.c (may_alias_p): Fix global variables and points-to. - -2002-12-03 Daniel Berlin - - * tree-ssa.c (delete_tree_ssa): Move call to delete_alias_vars - above resetting num_referenced_vars. - -2002-12-03 Diego Novillo - - * Makefile.in: Add dependencies on $(TM_H) and coretypes.h for the - files mentioned below. - * old-tree-inline.c: Include tm.h and coretypes.h. - * c-pretty-print.c: Likewise. - * disjoint-set.c: Likewise. - * tree-alias-ecr.c: Likewise. - * tree-alias-type.c: Likewise. - * tree-alias-ander.c: Likewise. - * tree-alias-steen.c: Likewise. - * tree-alias-common.c: Likewise. - * tree-ssa.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-cfg.c: Likewise. - * tree-dfa.c: Likewise. - * tree-optimize.c: Likewise. - * c-simplify.c: Likewise. - * gimplify.c: Likewise. - * tree-browser.c: Likewise. - * simple-break-elim.c: Likewise. - * simple-goto-elim.c: Likewise. - * tree-dchain.c: Likewise. - * c-call-graph.c: Likewise. - * tree-simple.c: Likewise. - * tree-nomudflap.c: Likewise. - * tree-pretty-print.c: Likewise. - * tree-ssa-dce.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * dependence.c: Likewise. - * tree-mudflap.c: Likewise - (mx_xfn_indirect_ref): Use size_type_node instead of c_size_type_node. - -2002-12-03 Diego Novillo - - * tree-dfa.c: Undo this change that causes bootstrap - failures: - - 2002-12-02 Diego Novillo - - * tree-dfa.c (may_alias_p): Artificial variables - can also be aliased. - -2002-12-03 Andreas Jaeger - - * tree-simple.c (right_assocify_expr): Remove unused variable. - -2002-12-02 Andrew MacLeod - - * gimplify.c (simplify_cleanup_point_expr): gsi_stmt can return NULL, - use gsi_end. - * tree-cfg.c (make_blocks): Use gsi_end, gsi_stmt can return NULL. Set - basic_block for empty_stmt_node containers. - (make_edges): Stmt's can be NULL. - (make_ctrl_stmt_edges, make_exit_edges, make_loop_expr_edges, - make_cond_expr_edges, make_goto_expr_edges, is_nonlocal_label_block, - block_invalidates_loop, cleanup_control_flow, cleanup_cond_expr_graph, - cleanup_switch_expr_graph, disconnect_unreachable_case_labels, - find_taken_edge, tree_cfg2dot, successor_block, is_latch_block, - switch_parent, first_stmt, last_stmt): Check for first_stmt() or - last_stmt() returning NULL. - (remove_tree_bb, first_exec_stmt): Use gsi_end. - (last_stmt_ptr): Iterate to find last execuatbel stmt_ptr in a block. - (gsi_start_bb): Return first non-empty stmt, if there is one. - (set_bb_for_stmt): Don't decend into an empty_stmt_node. - * tree-dfa.c (find_tree_refs): Use gsi_end. - (collect_dfa_stats): Use gsi_end_bb. - * tree-flow-inline.h (gsi_step_bb): split. - (gsi_step_in_bb): gsi_step with explicit bb specified. Never return - empty_stmt_node. - (gsi_start_bb): Move to tree-cfg.c. - (gsi_end_bb): New. Have we reached the end of a basic block. - * tree-flow.h (gsi_start_bb): Make external. - (gsi_end_bb, gsi_step_in_bb): New prototypes. - * tree-simple.h (gsi_end): renamed from gsi_after_end. - (gsi_stmt): Return NULL if stmt is an empty_stmt_node or error mark. - * tree-ssa-ccp.c (simulate_block, substitute_and_fold): Use gsi_end. - * tree-ssa-dce.c (mark_control_parent_necessary, find_useful_stmts, - remove_dead_stmts): Use gsi_end_bb. - (process_worklist): Check for NULL last_stmt. - * tree-ssa-pre.c (finalize_1): Use gsi_end_bb, gsi_stmt can be NULL. - -2002-12-02 Diego Novillo - - * tree-dfa.c (dump_ref): Display '' for NULL references. - (dump_phi_args): Handle NULL arguments. - (may_alias_p): Artificial variables can also be aliased. - -2002-12-02 Daniel Berlin - - * tree-ssa-pre.c (okay_injuring_def): inj could be null. - (get_operand): Use instead of special casing INDIRECT_REF and - COMPONENT_REF everywhere. - (names_match_p): Fix. - (defs_match_p): Ignore partial uses. - (rename_2): Fix non-matching condition. - (update_old_new): Update the kills and lefts arrays. - (finalize_1): Set the bb for the new statement. - (update_ssa_for_new_use): Ditto. - (code_motion): Ditto. - (call_modifies_slot): Handle function pointers (where we end up - with a _DECL as our argument). - (pre_part_1_trav): Update the kills and lefts arrays. - Just use TREE_TYPE (ei->expr) for type of expression. - (add_left_occ): New helper function. - (process_left_occs_and_kills): Add other cases we need to handle. - (tree_perform_ssapre): Add new processed array, since for left - occurrences and kills, we need to process *all* statements, not - just ones we might consider candiates for PRE. - -2002-12-02 Diego Novillo - - * tree-dfa.c (find_refs_in_expr): Look for references in - VA_ARG_EXPR nodes. - -2002-12-01 Diego Novillo - - * tree-optimize.c (optimize_function_tree): Undo - inadvertent change in previous commit. - -2002-12-01 Diego Novillo - - * fold-const.c (operand_equal_p): Check for NULL TREE_TYPEs. - - * tree-cfg.c (remove_stmt): Call remove_ref. - (disconnect_unreachable_case_labels): Do not disconnect the edge - going to the block holding the BIND_EXPR node for the switch() - body. - (dump_tree_cfg): Call dump_current_function. - - * Makefile.in (tree-dfa.o): Depend on convert.h. - * tree-dfa.c: Include convert.h. - (remove_def): New local function. - (reset_def_def_links): New local function. - (replace_phi_arg_with): New local function. - (replace_ref_with): New function. - (try_replace_ref_with): Rename from replace_ref_in. - Also look for V_USE references on the LHS of assignments. - When replacing the callee of a CALL_EXPR, make sure that the type - of the new callee is compatible with the old one. - (replace_ref_r): Call operand_equal_p. - (remove_ref): New function. - (same_var_p): New function. - (dump_referenced_vars): Add new flag DETAILS. Update all users. - (debug_referenced_vars): Likewise. - - * tree-ssa.c (dump_reaching_defs): Change output format. - (set_ssa_links): Don't set def-def links for PHI nodes. - - * tree-ssa-ccp.c (replace_uses_in): Add new argument COMMIT. - Update all users. - - * tree-optimize.c (dump_current_function): New function. - (optimize_function_tree): Call it. - * tree.h (dump_current_function): Declare. - * c-decl.c (c_expand_body): Call dump_current_function. - * tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Likewise. - * tree-ssa-pre.c (tree_perform_ssapre): Likewise. - * tree-ssa.c (build_tree_ssa): Likewise. - * tree-ssa-ccp.c (tree_ssa_ccp): Likewise. - Dump variables and reaching definitions if TDF_DETAILS is set. - - * tree-pretty-print.c (print_call_name): Call dump_generic_node for - NOP_EXPR operands. - - * tree-ssa-pre.c: Don't include c-common.h nor c-tree.h - Replace calls to build_modify_expr with build everywhere. - Replace calls to deep_copy_node with copy_node_r everywhere. - -2002-11-29 Andreas Jaeger - - * c-call-graph.c (construct_call_graph): Fix format. - - * tree-alias-ander.c: Declare print_out_result. - - * tree-ssa-pre.c: Declare is_on_lhs and call_modifies_slot. - - * tree.h: Declare expand_asm_expr and add_var_to_bind_expr. - - * tree-inline.c: Declare remap_decls. - -2002-11-28 Daniel Berlin - - * tree-alias-common.h: Start adding doxygen docs. - - * tree-alias-common.c: Ditto - -2002-11-28 Daniel Berlin - - * tree-alias-ander.c: Convert debug defines and ifdefs into - dump_file use. - - * tree.h: Add TDI_pta. - - * tree-dump.c: Add dump-tree-pta and TDI_pta. - -2002-11-28 Diego Novillo - - * Makefile.in (tree-ssa-pre.o, tree-cfg.o, gimplify.o, tree-ssa-dce.o, - tree-ssa-ccp.o): Add dependency on $(TIMEVAR_H). - * timevar.def (TV_TREE_GIMPLIFY, TV_TREE_MAY_ALIAS, - TV_TREE_INSERT_PHI_NODES, TV_TREE_BUILD_FUD_CHAINS, TV_TREE_RDEFS): - New timers. - (TV_TREE_SSA): Remove. - (TV_INTEGRATION, TV_EXPAND): Switch order. - * c-decl.c (c_expand_body): Pop TV_EXPAND before running the tree - optimizers. - * gimplify.c (simplify_function_tree): Push/pop TV_TREE_GIMPLIFY. - * tree-cfg.c (build_tree_cfg): Push/pop TV_TREE_CFG. - * tree-dfa.c (compute_may_aliases): Push/pop TV_TREE_MAY_ALIAS. - * tree-ssa-ccp.c (tree_ssa_ccp): Push/pop TV_TREE_CCP. - * tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Push/pop - TV_TREE_DCE. - Call compute_reaching_defs. - Remove debugging dumps before DCE. - * tree-ssa-pre.c (tree_perform_ssapre): Push/pop TV_TREE_PRE. - * tree-ssa.c (build_tree_ssa): Don't call compute_reaching_defs. - Don't call dump_reaching_defs. - (insert_phi_nodes): Push/pop TV_TREE_INSERT_PHI_NODES. - (build_fud_chains): Push/pop TV_TREE_BUILD_FUD_CHAINS. - (compute_reaching_defs): Push/pop TV_TREE_RDEFS. - Call dump_reaching_defs. - * tree-optimize.c (optimize_function_tree): Remove calls to - timevar_push and timevar_pop. - -2002-11-28 Diego Novillo - - * Makefile.in (tree-ssa.o): Add dependency on $(TIMEVAR_H) and - tree-alias-common.h. - (tree-dfa.o): Likewise. - (tree-optimize.o): Add dependency on $(TIMEVAR_H). - * tree-dfa.c (compute_may_aliases): Move call to delete_alias_vars - * tree-ssa.c (delete_tree_ssa): ... here. - -2002-11-27 Diego Novillo - - * tree-dfa.c (add_may_alias): Remove. Update all users. - (get_alias_index): Remove. Update all users. - (dfa_stats_d): Remove fields num_may_alias, max_num_may_alias, - num_alias_imm_rdefs and max_num_alias_imm_rdefs. Update all users. - (may_alias_p): Make extern. Move declaration to tree-flow.h. - (TRM_DEFAULT): Remove. Update all users. Update values of the - other TRM_* constants. - (create_ref): Don't initialize the PHI argument array with the - number of incoming edges. - (collect_dfa_stats): Do not traverse the function body with - walk_tree. - Free temporary hash table before returning. - (compute_may_aliases): Update comment. - (may_alias_p): Switch arguments if the first argument is not an - INDIRECT_PTR or the artificial global_var. - (find_may_aliases_for): If a pointer aliases a variable, set the - pointer to be the alias leader for the variable. - (ref_defines): Call may_alias_p. - (is_killing_def): Return false if the reaching definition is NULL. - Don't check for volatile definitions. - Change second argument to be a tree. Update all users. - - * tree-flow-inline.h (alias_imm_reaching_def): Remove. Update all - users. - (may_alias): Remove. Update all users. - (set_imm_reaching_def): Check for circularity. - (alias_leader): New function. - (set_alias_leader): New function. - (is_aliased): New function. - (is_default_def): Remove. Update all users. - - * tree-flow.h (struct var_ref_d): Remove field alias_imm_rdefs. - Update all users. - (struct var_def_d): Remove field m_default. Update all users. - (struct tree_ann_d): Remove field may_aliases. Update all users. - Add field alias_leader. - (struct dfa_counts_d): Remove fields num_may_alias and - num_may_alias_imm_rdefs. Update all users. - - * tree-ssa.c: Update documentation on may-alias processing. - (set_ssa_links): Remove third argument. Update all users. - (set_alias_imm_reaching_def): Remove. Update all users. - (create_default_def): Likewise. - (analyze_rdefs): Likewise. - (currdef_for): Move from tree-flow-inline.h - (set_currdef_for): Likewise. - (compute_reaching_defs): Rename from compute_tree_rdefs. Update - all users. - (follow_chain): Call is_killing_def instead of is_partial_def. - (tree_ssa_remove_phi_alternative): Remove unused variable ref. - (set_ssa_links): When processing V_USE references, make sure that - CURRDEF is a definition for the variable or one of its aliases. - -2002-11-26 Sebastian Pop - - * Makefile.in (OBJS): Add tree-browser.o. - (tree-browser.o): New dependency. - * tree-browser.c: New file. - * tree-browser.def: New file. - -2002-11-26 Jason Merrill - - Gimplify C++ cleanups. - * gimplify.c (voidify_wrapper_expr): Split out from... - (simplify_bind_expr): ...here. - (simplify_cleanup_point_expr): New fn. - (simplify_target_expr): New fn. - (gimple_conditional_context): New fn. - (gimple_push_condition, gimple_pop_condition): New fns. - (simplify_expr) [TRY_CATCH_EXPR]: Handle like TRY_FINALLY_EXPR. - * c-simplify.c (simplify_cleanup): New fn. - (c_simplify_stmt): Call it and lang_simplify_stmt. - (simplify_expr_stmt): Wrap the expr in a CLEANUP_POINT_EXPR. - (simplify_return_stmt, simplify_decl_stmt): Likewise. - (simplify_stmt_expr): Handle the STMT_EXPR_NO_SCOPE case. - (is_last_stmt_of_scope): Likewise. - * c-common.h: Declare c_genericize, c_simplify_stmt and - lang_simplify_stmt. - * c-common.c (lang_simplify_stmt): Define. - - Gimplify EXIT_EXPRs. - * gimplify.c (gimplify_loop_expr, gimplify_exit_expr): New fns. - (simplify_expr): Call them. - * expr.c (expand_expr) [LOOP_EXPR]: Pass 1 again for exit_flag. - - * tree-simple.c (right_assocify_expr): Also set TREE_SIDE_EFFECTS. - - * gimplify.c (simplify_expr): Call STRIP_TYPE_NOPS. - [REALPART_EXPR]: Don't just return. - - * tree-pretty-print.c (dump_c_node): Handle REFERENCE_TYPE. - * c-pretty-print.c (dump_c_node): Likewise. Handle null FOR_INIT_STMT. - -2002-11-25 Daniel Berlin - - * config.gcc: Try committing the correct version. - * tree-alias-ander.c (andersen_may_alias): Add "!= NULL" to make - return a bool. - -2002-11-24 Daniel Berlin - - * configure.in: Add --with-libbanshee, passed to us by toplevel if - libbanshee was configured. Substitute appropriate definitions for - Makefile (IE disabling tree-alias-ander building) if it wasn't. - * config.in: Regenerated. - * config.gcc: Rebuild libbanshee with stage1 on darwin to work - around system compiler problem. - * configure: Regenerated. - * Makefile.in: Add banshee stuff. - * tree-alias-ander.c: New file. - * tree-alias-ander.h: New file. - * tree-alias-common.c (get_alias_var): Fix field based stuff. - (find_func_aliases): Don't walk subtrees if we processed the tree. - (ptr_may_alias_var): Fix both field-based and non-field-based lookup. - -2002-11-22 Andrew MacLeod - - * tree-ssa-dce.c (mark_necessary): Split out mark_tree_necessary. Don't - mark if tree is already marked. - (mark_tree_necessary): New. Mark tree without processing control parent. - (mark_control_parent_necessary): Remove recursion, mark trees directly. - (need_to_preserve_store): Can expression/symbol affect external values. - (tree_ssa_eliminate_dead_code): Split. - (find_useful_stmts): Find initial set of needed statements. - (process_worklist): Find statements which calculate needed statements. - (remove_dead_stmts): Delete statements which are dead. - -2002-11-16 Jason Merrill - - Improve tree dumps. - * c-pretty-print.c, tree-pretty-print.c (dump_c_node): Handle - integers larger than a host word. - (op_prio): Handle INIT_EXPR. - * gimplify.c (simplify_bind_expr): Set TREE_SIDE_EFFECTS and type - of void_type_node on the COMPOUND_EXPRs as we walk. - * tree-simple.c (right_assocify_expr): Propagate the type from cur - rather than rhs. - - * c-decl.c (finish_function): Call c_genericize instead of - simplify_function_tree. - * c-simplify.c (c_genericize): New function. - (simplify_stmt_expr): Just genericize. - (simplify_compound_literal_expr): Likewise. - (c_build_bind_expr): Don't build a block for an artificial decl. - (simplify_decl_stmt): Add the variable to the temps list iff it's - artificial. - (c_simplify_expr): Don't call push/pop_context. - * c-decl.c (build_compound_literal): Set DECL_ARTIFICIAL. - * c-tree.h: Declare c_genericize. - - * c-simplify.c (tree_build_scope): Remove. - - Remove INIT_EXPR from GIMPLE. - * c-simplify.c (simplify_decl_stmt): Use MODIFY_EXPR. - * gimplify.c (simplify_bind_expr): Likewise. - (simplify_modify_expr): Convert INIT_EXPR to MODIFY_EXPR. - - * c-simplify.c (create_tmp_var_1): Drop; change all users to call - create_tmp_var. - (gimple_add_tmp_var): Now adds to the external temps list if - available, or directly to the function otherwise. - - Avoid gratuitous unused warnings. - * c-simplify.c (simplify_expr_stmt): Check TREE_SIDE_EFFECTS - directly. Also check for explicit conversions to void. - (expr_has_effect): Remove. - - * Makefile.in (OBJS): Remove tree-dchain.o. - - * stor-layout.c (variable_size): We don't care about - global_bindings_p if the frontend doesn't want a list of the - expressions. - -2002-11-13 Diego Novillo - - * toplev.c (parse_options_and_default_flags): Enable SSA-CCP by - default with optimization >= 1. - * tree-dfa.c (find_refs_in_expr): Clobber '*.GLOBAL_VAR', not - 'GLOBAL_VAR'. - (collect_dfa_stats): Collect statistics on '*.GLOBAL_VAR'. - (compute_may_aliases): Make sure that variable is an INDIRECT_REF. - (may_alias_p): GLOBAL_VAR should alias INDIRECT_REFs. - Only check addressability on VAR_DECLs. - (find_may_aliases_for): Make sure argument is an INDIRECT_REF. - * tree-flow-inline.h (indirect_var): Call DECL_P. - (set_indirect_var): Call DECL_P. - Create annotation if it doesn't exist. - (create_indirect_ref): Move from tree-dfa.c. - * tree-flow.h (create_indirect_ref): Declare. - * tree-ssa-ccp.c (visit_phi_node): Avoid debugging dump from - accessing uninitialized data. - * tree-ssa.c (init_tree_ssa): Create an INDIRECT_REF node for - .GLOBAL_VAR. - -2002-11-12 Diego Novillo - - * tree-cfg.c (delete_tree_cfg): Call free_aux_for_blocks. - Call free_basic_block_vars. - - * gimplify.c (simplify_expr): VA_ARG_EXPR nodes are in GIMPLE form - already. - Gimplify BIT_FIELD_REF nodes. - (simplify_call_expr): Update comment. - * tree-dfa.c (find_refs_in_expr): VA_ARG_EXPR nodes make no - data references. - Handle BIT_FIELD_REF nodes. - * tree-pretty-print.c (op_prio): Don't write an error message if - the operand is not recognized. - * tree-simple.c (is_simple_unary_expr): Handle BIT_FIELD_REFs. - (is_simplifiable_builtin): Only return false for MD builtins. - -2002-11-08 Diego Novillo - - * tree-cfg.c (cleanup_switch_expr_graph): Handle edges going to - EXIT_BLOCK_PTR. - (first_stmt): Return NULL for ENTRY_BLOCK_PTR, EXIT_BLOCK_PTR and - INVALID_BLOCK. - * tree-dfa.c (find_refs_in_expr): Call mark_not_simple. - -2002-11-07 Diego Novillo - - * Makefile.in (tree-ssa.o, tree-cfg.o, tree-dfa.o): Add dependency - on function.h - * tree-cfg.c: Include function.h. - (build_tree_cfg): Set dump_file to NULL after closing the file. - (remove_tree_bb): Don't dump warnings about statements being - removed. - (dump_tree_cfg): Use current_function_name. - Check that the flowgraph is not empty before dumping the function - body. - (tree_cfg2dot): Use current_function_name. - * tree-dfa.c: Include function.h - (dump_dfa_stats): Use current_function_name. - * tree-optimize.c (optimize_function_tree): Set dump_file to NULL - after closing the file. - * tree-pretty-print.c (dump_generic_node): Make sure that the - flowgraph exists before displaying block boundaries. - * tree-ssa-ccp.c (tree_ssa_ccp): Set dump_file to NULL after - closing the file. - * tree-ssa.c: Include function.h. - (build_tree_ssa): Set tree_ssa_dump_file to NULL after closing the - file. - (dump_reaching_defs): Use current_function_name. - (dump_tree_ssa): Likewise. - -2002-11-07 Diego Novillo - - * tree-cfg.c (successor_block): Return EXIT_BLOCK_PTR if no - successor can be found while walking the nesting chain. - -2002-11-07 Diego Novillo - - * tree-cfg.c: Fix some formatting in code and comments. - (set_bb_for_stmt): Move from tree-flow-inline.h - * tree-dfa.c: Fix some formatting in code and comments. - * tree-flow-inline.h: Likewise. - * tree-flow.h: Likewise. - * tree-ssa.c: Likewise. - -2002-11-06 Diego Novillo - - * Makefile.in (tree-ssa-ccp.o): Add dependency on tree-inline.h - * tree-cfg.c (find_taken_edge): New function. - (cleanup_cond_expr_graph): Call it. - (disconnect_unreachable_case_labels): Call it. - - * tree-dfa.c (struct clobber_data_d): Remove field - parent_expr_p. Update all users. - (find_refs_in_expr): Remove argument parent_expr_p. Update all users. - (create_ref): Remove arguments parent_expr_p and operand_p. Update - all users. - (replace_ref_in): Rename from replace_ref_operand_with. Update all - users. Find the operand in the statement and replace it with a new - operand. - (replace_ref_r): New local function. - (is_killing_def): Also handle V_PHI references. - (output_ref): Move from tree-flow-inline.h - - * tree-flow-inline.h (ref_expr): Remove. Update all users. - (restore_ref_operand): Remove. Update all users. - (set_output_ref): Remove. Update all users. - (is_assignment_stmt): New function. - (is_may_def, is_may_use, is_partial_def, is_partial_use, - is_volatile_def, is_volatile_use, is_default_def, - is_clobbering_def, is_initializing_def, is_relocating_def, - is_addressof_use, is_pure_use): Check reference type first. - (is_pure_def): New function. - - * tree-flow.h (struct tree_ref_common): Remove fields expr_p, - operand_p and orig_operand. Update all users. - (struct tree_ann_d): Remove field output_ref. Update all users. - - * tree-ssa-ccp.c: Include tree-inline.h. - (simulate_block): Simulate every statement in the block, not its - references - (simulate_def_use_chains): Simulate statements containing uses - reached by the definition. - (substitute_and_fold): Traverse statements, not references. - Call fold_stmt. - (visit_phi_node): If PHI node is marked volatile, assume varying. - (visit_stmt): Rename from visit_expression_for. Work on a - statement, not a reference. - (visit_assignment): Rename from visit_assignment_for. Work on a - statement, not a reference. - (visit_cond_stmt): Rename from visit_condexpr_for. Work on a - statement, not a reference. - (evaluate_stmt): Rename from evaluate_expr. Work on a statement, - not a reference. - (initialize): Initialize special definitions to varying. - (replace_uses_in): Work on a statement, not an expression. - (fold_stmt): Rename from ccp_fold. Work on a statement, not an - expression. - (get_rhs): New local function. - (set_rhs): New local function. - -2002-11-06 Daniel Berlin - - * tree-flow.h: Prototype set_bb_for_stmt, last_stmt_ptr, - add_ephi_arg, num_ephi_args, set_ephi_arg, ephi_arg. - (enum tree_ref_type): Add E_LEFT, E_KILL, E_EXIT. - - * tree-cfg.c (set_bb_for_stmt): Move to tree-flow-inline.h. - (last_stmt_ptr): New function, gives pointer to last statement in - bb. - - * tree-flow-inline.h: Add exprref_processed, exprref_processed2, - expruse_phi, num_ephi_args, set_ephi_arg, ephi_arg, add_ephi_arg. - - * tree-dfa.c (tree_ref_structure): Handle E_{LEFT,KILL,EXIT}. - (ref_type_name): Ditto. - (tree_ref_size): Ditto. - (dump_ref): E_PHI's phi_args is now a varray of phi_arg structs. - (add_ephi_arg): New function. - (remove_ref_from_list): Fix crash when node not found. - (compute_may_aliases): Add timing for points-to analysis. - - * timevar.def: Add TV_TREE_PTA. - - * tree-ssa-pre.c: Start of massive cleanup and rewriting (in - preparation for load/store PRE). No more uses of ref_expr, proper - call handling. Started removing unnecessary structures and lists, - started removing redundant and inefficient operations (IE O(n^2) - loops to process all phi operands, etc). Basic load PRE implemented. - Code may look ugly due to large pieces commented out waiting for DFA - updating of refs to redo. - -2002-11-05 Diego Novillo - - * tree-cfg.c (create_block_annotations): New local function. - (create_bb_ann): Remove. Update all users. - (parent_array): New local variable. - (build_tree_cfg): Initialize it. - Call create_block_annotations. - (create_bb): Call alloc_block instead of ggc_alloc to allocate - memory for basic blocks. - Don't call set_parent_block. - Grow array parent_array. - (dump_tree_cfg): Change meaning of second argument. Make it accept - any of the TDF_* flags defined in tree.h. - (delete_tree_cfg): Call free_aux_for_blocks. - Free array parent_array. - * tree-flow-inline.h (get_filename): New function. - (is_exec_stmt): return false if T is error_mark_node. - * tree-flow.h (struct var_ref_d): Mark alias_imm_rdefs field for - garbage collection. - (get_filename): Declare. - (struct bb_ann_d): Rename from bb_ann_def. - Remove garbage collection markers. - (referenced_vars): Mark for garbage collection. - (global_var): Likewise. - (create_bb_ann): Remove. - * tree-optimize.c (optimize_function_tree): Remove CFG and SSA - after debugging dumps. - - * diagnostic.h (print_generic_stmt): Rename from print_generic_tree. - Update all users. - (print_generic_expr): Rename from print_generic_node. Update all - users. - (PPF_BRIEF): Remove. Update all users. - (PPF_BLOCK): Remove. Update all users. - (PPF_LINENO): Remove. Update all users. - (PPF_IS_STMT): Remove. Update all users. - * flags.h (flag_dump_tree_all_ssa): Remove. Update all users. - * toplev.c (f_options): Remove entry for -fdump-tree-all-ssa. - Update all users. - * tree-dump.c (dump_enable_all): Rename from dump_enable_all_ssa. - Update all users. - (dump_files): Add entry for -fdump-tree-all. - (dump_option_value_info): Remove entries for TDF_REFS and - TDF_RDEFS. - Add entry for TDF_BLOCK. - (dump_switch_p): If -fdump-tree-all was given, call dump_enable_all. - * tree-pretty-print.c (PPF_BRIEF): Remove. Update all users. - (PPF_BLOCK): Remove. Update all users. - (PPF_LINENO): Remove. Update all users. - (PPF_IS_STMT): Remove. Update all users. - (dumping_stmts): New local variable. - (print_generic_stmt): Rename from print_generic_tree. Update all - users. - Set dumping_stmts to true. - (print_generic_expr): Rename from print_generic_node. Update all - users. - Set dumping_stmts to false. - (maybe_init_pretty_print): Set last_bb to -1. - (dump_block_info): If available, dump file and line number - information for the first statement in the basic block. - * tree-ssa.c (build_tree_ssa): Dump referenced variables and - reaching definition information if -details is given. - * tree.h (enum tree_dump_index): Rename TDI_all to TDI_tu. Update - all users. - Add new index TDI_all. - (TDF_DETAILS): Change value. - (TDF_REFS): Remove. Update all users. - (TDF_RDEFS): Remove. Update all users. - (TDF_BLOCK): Define. - * doc/invoke.texi: Update documentation for -fdump-tree-... flags. - -2002-11-05 Frank Ch. Eigler - - * tree-mudflap.c (mudflap_enqueue_decl, _constant): Use - size_in_bytes, not c_size_in_bytes. - (mf_init_extern_trees): Import uintptr_t typedef node from - mf-runtime.h. - -2002-11-01 Diego Novillo - - * tree-cfg.c (remove_tree_bb): Add new argument remove_stmts. - Update all callers. - (make_ctrl_stmt_edges): Add an edge to the body of a SWITCH_EXPR. - (make_cond_expr_edges): Don't try to linearize the if() subgraph. - (make_case_label_edges): Don't remove the fallthru edge from the - entry block to the switch() subgraph. - (cleanup_tree_cfg): Call cleanup_control_flow. - (remove_unreachable_blocks): Remove blocks of compound structures - before removing the entry block. - (remove_blocks): New local function. - (blocks_unreachable_p): New local function. - (is_nonlocal_label_block): New local function. - (find_subblocks): New local function. - (is_parent): New local function. - (gsi_remove): New function. - (remove_stmt): New local function. - (cleanup_control_flow): New local function. - (cleanup_cond_expr_graph): New local function. - (cleanup_switch_expr_graph): New local function. - (disconnect_unreachable_case_labels): New local function. - - * tree-dfa.c (remove_decl): New function. - (find_decl_location): New function. - - * tree-flow.h (gsi_remove): Declare. - (remove_decl): Declare. - (find_decl_location): Declare. - - * tree-ssa-ccp.c (optimize_unexecutable_edges): Remove. Update all - users. - (ssa_ccp_df_delete_unreachable_insns): Remove. Update all users. - (tree_ssa_ccp): Call print_generic_tree with PPF_BLOCK. - -2002-10-31 Diego Novillo - - * tree-dfa.c (create_indirect_ref): New local function. - (find_refs_in_expr): Call it. - (create_ref): Check E_* reference types with == instead of &. - (dump_ref): Likewise. - (count_tree_refs): Likewise. - * tree-ssa.c (set_ssa_links): Update documentation comment for - save_chain. - -2002-10-31 Diego Novillo - - * tree-cfg.c (remove_tree_bb): Don't walk beyond the end of the - basic block. - -2002-10-26 Daniel Berlin - - * flags.h: Remove flag_tree_points_to from here. - * toplev.c: Include tree-alias-common.h. - (flag_tree_points_to): Now of type enum pta_type, rather than - int. - (lang_independent_options): Remove flag_tree_points_to. - (display_help): Display help for tree-points-to here. - (decode_f_option): Allow selecting of points-to algorithm. - * tree-alias-common.c (varmap): Removed. - (alias_annot): Changed to a hash table. Update all functions - appropriately. - (FIELD_BASED): New macro, switches between field-based analysis, - and field-independent analysis (field-based isn't quite done yet). - (alias_annot_entry): New, used in hash table. - (annot_eq): New function. - (annot_hash): New function. - (find_func_aliases): Handle casts, fix indendation. - (splaycount): Removed. - (splay_tree_count): Removed. - (display_points_to_set): Removed. - (splay_tree_size): Removed. - (alias_get_name): New function. - (ptr_may_alias_var): Globals are a bit funky to handle. - * tree-alias-steen.c: Use alias_get_name, rather than - print_generic_node. - (steen_simple_assign): Handle assignment of PTF's. - (test_assign): Remove. - * tree-alias-common.h (enum pta_type): New. - (alias_get_name): New. - (flag_tree_points_to): New. - -2002-10-26 Diego Novillo - - * tree-cfg.c (cleanup_tree_cfg): Uncomment call to - compact_blocks. - -2002-10-26 Diego Novillo - - * Makefile.in (tree-pretty-print.o): Depend on $(TREE_FLOW_H) - * basic-block.h (BB_COMPOUND_ENTRY): Rename from BB_CONTROL_ENTRY. - * diagnostic.h (dump_generic_tree): Remove extern declaration. - (print_generic_node_brief): Remove. Update all users. - (PPF_BRIEF): Declare. - (PPF_BLOCK): Declare. - (PPF_LINENO): Declare. - (PPF_IS_STMT): Declare. - * tree-pretty-print.c (PPF_BRIEF): New constant. - (PPF_BLOCK): New constant. - (PPF_LINENO): New constant. - (PPF_IS_STMT): New constant. - (dump_block_info): New local function. - (last_bb): New local variable. - (dump_generic_tree): Remove unused function. - (print_generic_tree): Add third argument 'flags'. Update all - users. - (print_generic_node_brief): Remove. Update all users. - (print_generic_node): Add third argument 'flags'. Update all - users. - (dump_generic_node): Add third argument 'flags'. Update all users. - If PPF_BLOCK is set, display basic block information at basic block - boundaries. - If PPF_IS_STMT is set, change the way COMPOUND_EXPR nodes are - rendered. - If PPF_BRIEF is set, don't show the bodies of control statements. - (print_declaration): - - * toplev.c (process_options): Update comment for -fdisable-simple. - - * tree-cfg.c (remove_tree_bb): Rename from tree_delete_bb. - (latch_block): Move declaration to tree-flow.h. Declare extern. - (make_blocks): Start a new block after finding a control flow - altering statement. - (make_loop_expr_blocks): Set the loop entry block to be the parent - block for the loop latch block. - (cleanup_tree_cfg): Rename from tree_cleanup_cfg. - Call compact_blocks. - (remove_tree_bb): Rename from tree_delete_bb. Update all users. - (dump_tree_bb): Rename from dump_tree_bb. Update all users. - Dump information about loop latch blocks. - (debug_tree_bb): Rename from tree_debug_bb. Update all users. - (debug_tree_cfg): Rename from tree_debug_cfg. Update all users. - (dump_tree_cfg): Rename from tree_dump_cfg. Update all users. - By default, dump the function with markers for basic block - boundaries. - (successor_block): If we can't find a successor following the - parent chain, return the next block in the linked list of blocks. - Update documentation comments. - (stmt_starts_bb_p): Don't let RETURN_EXPR start a new block. - (is_latch_block): New function. - (first_exec_stmt): Don't treat BIND_EXPR nodes as a special case. - (first_stmt): Return NULL_TREE if the block does not exist. - (last_stmt): Likewise. - - * tree-dfa.c (find_tree_refs): Rename from tree_find_refs. Update - all users. - (find_refs_in_stmt): Handle BIND_EXPR nodes. - (rli_start): Move from tree-flow-inline.h - (rli_start_last): Likewise. - (rli_start_at): Likewise. - (rli_delete): Likewise. - - * tree-flow-inline.h (gsi_start_bb): Handle NULL blocks. - (ref_list_is_empty): New function. - * tree-flow.h (rli_start): Change declaration to extern. - (rli_start_last): Likewise. - (rli_start_at): Likewise. - (rli_delete): Declare. - (latch_block): Declare. - (is_latch_block): Declare. - (get_last_ref): Change to inline declaration. - (get_first_ref): Likewise. - (ref_list_empty): Declare. - - * tree-optimize.c (delete_tree_ssa): Remove declaration. - - * tree-ssa-dce.c (mark_control_parent_necessary): Call gsi_step_bb - instead of gsi_step. - (tree_ssa_eliminate_dead_code): Likewise. - - * tree-ssa.c (compute_tree_rdefs): Rename from compute_tree_rdefs. - Update all users. - -2002-10-22 Diego Novillo - - * tree-dfa.c (struct dfa_stats_d): Add field size_tree_refs. - (tree_ref_size): New function. - (create_ref): Call it. - (dump_dfa_stats): Get total size from dfa_stats.size_tree_refs. - (count_tree_refs): Call tree_ref_size. - * tree-flow-inline.h (get_last_ref): New function. - (get_first_ref): New function. - * tree-flow.h (struct var_ref_d): Rename from var_ref. - (struct var_def_d): Rename from var_def. - (struct var_phi_d): Rename from var_phi. - (struct var_use_d): Rename from var_use. - (struct expr_phi_d): Rename from expr_phi. - (struct expr_use_d): Rename from expr_use. - * tree-ssa-ccp.c (tree_ssa_ccp): Call get_last_ref. - -2002-10-21 Daniel Berlin - - * timevar.def: Add TV_TREE_{PRE,CCP,DCE,CFG,SSA}} timevars. - - * tree-optimize.c (optimize_function_tree): Push and pop timevars - for the tree optimizers. - -2002-10-21 Diego Novillo - - * Makefile.in (OBJS): Move tree-mudflap.o ... - (C_AND_OBJC_OBJS): ... here. - -2002-10-21 Diego Novillo - - * tree-flow-inline.h (rli_start): New function. - (rli_start_rev): New function. - (rli_start_at): New function. - (rli_after_end): New function. - (rli_step): New function. - (rli_step_rev): New function. - (rli_ref): New function. - * tree-flow.h (struct ref_list_iterator): Declare. - (FOR_REF_BETWEEN, FOR_EACH_REF, FOR_EACH_REF_REV): Replace with new - rli_* iterator functions. Update all users. - -2002-10-21 Frank Ch. Eigler - - * tree-cfg.c (make_blocks): Ignore TRY_FINALLY_EXPR and - TRY_CATCH_EXPR. - * tree-mudflap.c (mx_register_decls): Ignore local decls - of extern variables of unknown size. - -2002-10-20 Daniel Berlin - - * tree-ssa-pre.c (repair_injury): DTRT, rather than abort. - - * tree-dfa.c (ref_type_name): E_* don't have these modifier - fields, but may have the same bits set, so don't print the - modifiers on them. - - * gimplify.c (create_tmp_var): New function, wraps calls to - create_tmp_var_1 with pushing/popping of right context. - All internal gimplify.c now use create_tmp_var_1. - (create_tmp_var_noc): New function, create the var without - pushing/popping, and without exposing internals of create_tmp_var_1. - Only one use of this. - - * tree-simple.h (create_tmp_var_noc): New prototype. - - * c-simplify.c (simplify_stmt_expr): create_tmp_var changed to - create_tmp_var_noc. - - * tree-ssa-pre.c: Add WAITING_FOR_DFA_UPDATE around code waiting for DFA - functions to keep refs up to date. - (add_call_to_ei): occurs and occurstmts is now an - array of tree pointers, not trees. Update approriately. - (insert_occ_in_preorder_dt_order_1): Ditto. - (tree_perform_ssapre): Ditto. - (find_use_for_var): Removed function. - (orig_expr_map): Removed global, removed uses. - (struct ei): Added injfixups member. - (is_strred_cand): STRIP_WFL the expression. - (calculate_increment): Ditto. - (is_injuring_def): Ditto. - (defs_y_dom_x): Ditto. Also account for fact that y is now a full - expression, not just an RHS. - (defs_match_p): Ditto (t2 is no longer just an RHS). - (finalize_1): Do insertion by replacement. - (repair_injury): Clean up, do insertion by replacement. - (find_reaching_def_of_var): Do backwards search in a cleaner way. - (update_ssa_for_new_use): Change how we do replacement. - (code_motion): Insertion by replacement. Print EXPR_WFL_LINENO, not - STMT_LINENO. - (pre_part_1_trav): Just create_tmp_var will now suffice. - -2002-10-18 Diego Novillo - - * tree-dfa.c (find_refs_in_expr): Change type of second argument to - enum tree_ref_type. Add third argument ref_mod. Update all users. - (create_ref): Add third argument ref_mod. Decode bitmask to set - the individual bitfields in the new reference. - * tree-flow-inline.h (is_may_ref): New function. - (is_may_def): New function. - (is_may_use): New function. - (is_partial_ref): New function. - (is_partial_def): New function. - (is_partial_use): New function. - (is_volatile_ref): New function. - (is_volatile_def): New function. - (is_volatile_use): New function. - (is_default_def): New function. - (is_clobbering_def): New function. - (is_initializing_def): New function. - (is_relocating_def): New function. - (is_addressof_use): New function. - (is_pure_use): New function. - * tree-flow.h (V_DEF, V_USE, V_PHI, E_PHI, E_USE, E_KILL): Redefine - inside enum tree_ref_type. Update all users. - (enum tree_ref_type): Define. - (TRM_DEFAULT, TRM_CLOBBER, TRM_MAY, TRM_PARTIAL, TRM_INITIAL, - TRM_VOLATILE, TRM_RELOCATE): Rename from M_*. Update all users. - (struct tree_ref_common): Change type of field 'type' to enum - tree_ref_type. Update all users. - (struct var_ref): Add bitfields 'm_may', 'm_partial' and 'm_volatile'. - (struct var_def): Add bitfield 'm_default', 'm_clobber', 'm_initial' - and 'm_relocate'. - (struct var_use): Add bitfield 'm_addressof'. - (ref_type): Change return type to enum tree_ref_type. Update all - users. - (create_ref): Add new argument ref_mod. Update all users. - (function_may_recurse_p): Change return type to bool. Update all - users. - (ref_type_name): Change argument type to tree_ref. Update all - users. - (validate_ref_type): Remove. - -2002-10-18 Diego Novillo - - * cp/Make-lang.in (CXX_C_OBJS): Remove tree-cfg.o, tree-dfa.o, - tree-optimize.o, tree-ssa.o, tree-ssa-pre.o, gimplify.o, tree-simple.o, - tree-alias-steen.o, tree-alias-ecr.o, tree-alias-type.o, - disjoint-set.o, tree-ssa-ccp.o, tree-dchain.o, tree-alias-common.o, - and tree-ssa-dce.o. - -2002-10-17 Diego Novillo - - * Makefile.in (TREE_FLOW_H): Add bitmap.h, basic-block.h, - hard-reg-set.h and tree-simple.h. Update all users. - (C_AND_OBJC_OBJS): Move tree-cfg.o, tree-dfa.o, - tree-ssa.o, tree-optimize.o, c-simplify.o, c-call-graph.o, - tree-simple.o, simple-break-elim.o, simple-goto-elim.o, tree-dchain.o, - tree-ssa-pre.o, tree-alias-type.o, tree-mudflap.o, gimplify.o, - tree-alias-ecr.o, tree-alias-common.o, tree-alias-steen.o, - disjoint-set.o, tree-ssa-ccp.o and tree-ssa-dce.o ... - (OBJS): ... here. - (gimplify.o): Add dependency on $(TREE_FLOW_H). - (tree-pretty-print.o): New rule. - (GTFILES): Add tree-flow.h - * c-config-lang.in (gtfiles): Remove tree-flow.h - * c-simplify.c (copy_if_shared_r, unmark_visited_r, - unshare_all_trees, mark_not_simple): Move ... - * gimplify.c: ... here. - Include tree-flow.h - * tree-flow.h: Include hard-reg-set.h. - - * c-common.h (print_c_tree, print_c_node, print_c_node_brief, - debug_c_tree, debug_c_node, debug_c_node_brief): Move declarations - from diagnostic.h. - * c-call-graph.c (construct_call_graph): Call get_name. - (print_callee): Likewise. - * c-pretty-print.c (print_declaration): Declare static. - (print_function_decl): Likewise. - (print_struct_decl): Likewise. - (dump_c_tree): Likewise. - (dump_c_node): Likewise. - * diagnostic.h (dump_generic_tree, dump_generic_node, - print_generic_tree, print_generic_node, print_generic_node_brief): - Declare. - * tree-pretty-print.c: New file. - * c-decl.c: Replace calls to print_c_node with print_generic_node. - * tree-alias-common.c: Likewise. - * tree-alias-steen.c: Likewise. - * tree-cfg.c: Likewise. - * tree-dfa.c: Likewise. - * tree-mudflap.c: Likewise. - * tree-optimize.c: Likewise. - * tree-ssa-ccp.c: Likewise. - * tree-ssa-pre.c: Likewise. - * tree-ssa-dce.c: Likewise. - Don't include c-common.h nor c-tree.h - (tree_ssa_eliminate_dead_code): Don't call COMPOUND_BODY. - Replace ASM_STMT with ASM_EXPR. Don't check for EXPR_STMT. - -2002-10-17 Daniel Berlin - Diego Novillo - - * tree-cfg.c (remove_bb_ann): Remove. Update all users. - (delete_tree_cfg): Set bb->aux to NULL in all basic blocks. - * tree-dfa.c: Remove extern declaration for tree_find_refs. - (create_ref_list): Allocate new list with ggc_alloc. - (empty_ref_list): Just set first and last element to NULL. - (delete_ref_list): Remove. Update all users. - (remove_ref_from_list): Don't call free. - (add_ref_to_list_begin): Allocate new node with ggc_alloc. - (add_ref_to_list_end): Likewise. - (add_ref_to_list_after): Likewise. - (create_ref): Call BITMAP_GGC_ALLOC. - (remove_tree_ann): Remove. Update all users. - (tree_ref_structure): New function. - * tree-flow.h (edge, basic_block): Forward declare if necessary. - (struct ref_list_node): Mark for garbage collection. - (struct ref_list_priv): Likewise. - (struct tree_ref_common): Likewise. - (struct var_ref): Likewise. - (struct var_def): Likewise. - (struct var_phi): Likewise. - (struct var_use): Likewise. - (struct phi_node_arg_d): Likewise. - (struct expr_ref_common): Likewise. - (struct expr_phi): Likewise. - (struct expr_use): Likewise. - (union tree_ref_d): Likewise. - (struct tree_ann_d): Likewise. - (struct bb_ann_def): Likewise. - (referenced_vars): Likewise. - (global_var): Likewise. - (enum tree_ref_structure_enum): New. - (call_sites): Remove unused function. - * tree-inline.c (copy_tree_r): Copy the 'ann' field from tree_common. - * old-tree-inline.c (copy_tree_r): Likewise. - * tree-ssa.c (added): Mark for garbage collection. - (in_work): Likewise. - (work_stack): Likewise. - (delete_tree_ssa): Set global_var to NULL_TREE. - * tree.h (struct tree_ann_d): Forward declare. - (struct tree_common): Rename field 'aux' to 'ann'. Update all - users. Don't mark it 'skip' for garbage collection. - -2002-10-16 Daniel Berlin - - * tree-dfa.c (compute_may_aliases): Call create/delete_alias_vars - if flag_tree_points_to is on. - (may_alias_p): Use points-to info if user asked us to generate it. - - * tree-optimize.c (optimize_function_tree): Don't call - create_alias_vars here. - -2002-10-16 Diego Novillo - - * tree-cfg.c (make_cond_expr_edges): If the conditional has known - value, only make the edge to the corresponding branch. - (tree_delete_bb): Write a warning to the dump file when removing - blocks with executable statements. - (first_exec_stmt): Skip over empty BIND_EXPR blocks. - - * tree-dfa.c (find_refs_in_expr): Don't look for references in non - GIMPLE statements. - (remove_tree_ann): Clear the annotation with memset. - (collect_dfa_stats_r): Don't call tree_annotation. - (find_may_aliases_for): Avoid adding the same alias more than once. - (may_alias_p): Fix comment grammar. - - * tree-flow-inline.h (is_exec_stmt): New function. - * tree-flow.h (FOR_EACH_REF): Guard against NULL lists. - (FOR_EACH_REF_REV): Likewise. - (is_exec_stmt): Declare. - - * tree-ssa-ccp.c (visit_phi_node): Reformat debug dumping output. - (visit_expression_for): Move check for clobbering definitions - before check for NULL expressions. - (visit_condexpr_for): Reformat debug dumping output. - (set_lattice_value): Remove stale comments. - (replace_uses_in): Don't clear TF_FOLDED flag from expression. - - * tree-ssa.c (add_phi_node): If possible, associate the PHI node to - a statement. - (create_default_def): Create initial declarations for static - variables with DECL_INITIAL set. - (delete_tree_ssa): Remove annotations from variables. - -2002-10-16 Daniel Berlin - - * tree-alias-type.c (alias_tvar_new_with_aterm): New function. - Update all allocations to allocate right type, rather than the union. - Update to use macros to access members of alias_typevar. - - * tree-alias-type.h: Split alias_typevar into a common, an ECR, and - an aterm, update all users. - Add macros to access members of union. - - * tree-alias-common.c (create_alias_var): Handle function_decl's - properly (needed for proper handling of function pointers). - Updates for macros to access typevars. - Fix some indentation. - - * tree-alias-steen.c: Updates for macros to access typevars. - -2002-10-16 Frank Ch. Eigler - - * c-decl.c (c_expand_body): Enable mudflap, only for gimple. - * c-pretty-print.c (dump_c_node): Render try/catch/finally exprs. - (op_prio): Accept BIND_EXPRs. - * gcc.c (cpp_unique_options): Make -fmudflap -include mf-runtime.h. - * toplev.c (process_options): Complain on -fmudflap -fdisable-simple. - * tree-mudflap.c (*): Reorganize for generic/gimple operation. - (mf_init_extern_trees): Extract decl nodes from -include'd file. - (mf_external_ref, mf_decl_extern_trees): Removed; updated callers. - (mf_offset_expr_of_array_ref): Don't bother store index type as - TREE_PURPOSE. - (mf_build_check_statement_for): Use GIMPLE tree types and builders. - (mx_register_decls): New function, replacing mx_register_decl. - (mx_xfn_xform_decls): Support only GIMPLE input tree types. - (mf_flush_enqueued_calls): Clean up enqueued call statements. - -2002-10-14 Diego Novillo - - * toplev.c (parse_options_and_default_flags): Undo local - hack that slipped in the previous commit. - -2002-10-14 Diego Novillo - - * Makefile.in (c-decl.o): Add dependency on diagnostic.h. - * c-decl.c: Include diagnostic.h - (c_expand_body): Call get_name. - - * basic-block.h (struct basic_block_def): Rename head_tree to - head_tree_p and end_tree to end_tree_p. Change type to tree *. - Update all users. - (BLOCK_HEAD_TREE): Remove. Update all users. - (BLOCK_END_TREE): Remove. Update all users. - * tree-cfg.c (build_tree_cfg): Return if function body is empty. - (make_blocks): Change first argument to tree *. Update all users. - (make_bind_expr_blocks): Likewise. - (make_loop_expr_blocks): Likewise. - (make_cond_expr_blocks): Likewise. - (make_switch_expr_blocks): Likewise. - (create_bb): Likewise. - (first_exec_block): Likewise. - (first_exec_stmt): Likewise. - (tree_delete_bb): Use a gimple statement iterator to unmap - statements. - (insert_stmt_before): Remove empty function. - (replace_expr_in_tree): Remove. Update all users. - (find_expr_in_tree_helper): Likewise. - (find_expr_in_tree): Likewise. - (first_stmt): Call STRIP_NOPS. - (last_stmt): Call STRIP_NOPS. - - * tree-dfa.c (struct clobber_data_d): Rename parent_stmt to - parent_stmt_p and parent_expr to parent_expr_p. Change types to - tree *. Update all users. - (find_refs_in_stmt): Change first argument type to tree *. Update - all users. - (find_refs_in_expr): Chnage arguments parent_stmt and parent_expr - to tree *. Update all users. - (create_ref): Don't add the same reference twice on the same list - when parent_stmt and parent_expr are the same node. - Don't set output_ref when the parent statement is not in GIMPLE - form. - (replace_ref_operand_with): Move from tree-flow-inline.h - (replace_ref_expr_with): New function. - (replace_ref_stmt_with): New function. - (create_tree_ann): Abort if trying to annotate certain nodes. - Don't create an empty ref list. - In the presence of WFL or NOPS wrappers, add the annotation to the - inner node. - (dump_ref): Don't call tree_annotation to access the tree - annotation. - - * tree-flow.h (struct tree_ref_common): Rename field stmt to stmt_p - and field expr to expr_p. Change types to tree *. Update all - users. - (replace_ref_expr_with): Declare. - (replace_ref_stmt_with): Declare. - (insert_stmt_before, insert_stmt_after, replace_expr_in_tree, - find_expr_in_tree): Remove. - * tree-flow-inline.h (ref_expr): Return NULL_TREE if expr_p is - NULL. - (ref_stmt): Return NULL_TREE if stmt_p is NULL. - (tree_annotation): Call STRIP_WFL and STRIP_NOPS before returning - the annotation. - (add_tree_ref): Remove consistency checks. Create an empty list - the first time. - (get_lineno): Return -1 on NULL_TREE. - (set_output_ref): Remove consistency. - (set_tree_flag): Likewise. - (clear_tree_flag): Likewise. - (reset_tree_flags): Likewise. - * tree-simple.h (gimple_stmt_iterator): Rename ptr to tp. Change - type to tree *. Update all users. - (gsi_start): Change argument type to tree *. Update all users. - (gsi_stmt_ptr): New function. - (gsi_container): New function. - - * tree-optimize.c (optimize_function_tree): Don't test fnbody for - NULL. - Re-enable optimizers. - * tree-ssa-ccp.c: Update documentation comments. - Don't include c-common.h and c-tree.h. - (tree_ssa_ccp): Don't call COMPOUND_BODY. - (ccp_fold): New private function. - (substitute_and_fold): Call it. - Call replace_ref_expr_with. - Set TF_FOLDED flag on the statement, not the expression. - (visit_assignment_for): Call STRIP_NOPS and STRIP_WFL. - (evaluate_expr): Call ccp_fold. Only use the RHS of the simplified - value in the case of MODIFY_EXPR or INIT_EXPR. - (restore_expr): - * tree-ssa-dce.c (mark_control_parent_necessary): Use a gimple - iterator. - (tree_ssa_eliminate_dead_code): Likewise. - * tree-ssa-pre.c: Disable and add warning comments for out-of-date - calls to create_ref, find_refs_in_stmt and replace_expr_in_tree. - -2002-10-12 Daniel Berlin - - * tree-alias-type.h (alias_typevar_def): Add struct aterm - as a temporary hack for andersen's analysis. - * tree-alias-common.c (current_alias_ops): New, use it - instead of referring to steen_alias_ops everywhere. - (get_alias_var): Use STRIP_WFL. - (find_func_aliases): Ditto. - (create_alias_vars): Call init function, move deletion to - delete_alias_vars. - (delete_alias_vars): New function, move deletion code to here. - (get_virtual_var): Removed. - (ptr_may_alias_var): New function. - * tree-alias-common.h (struct tree_alias_ops): Add may_alias - function. - * tree-alias-steen.c (steen_may_alias): New function. - -2002-10-10 Falk Hueffner - - * diagnostic.h (dump_c_tree, dump_c_node, - print_declaration, print_function_decl, - print_struct_decl): Fix argument types. - -2002-10-10 Diego Novillo - - * tree.h (struct tree_common): Rename field unused_0 to - not_gimple_flag. - (TREE_NOT_GIMPLE): Define. - * c-simplify.c (mark_not_simple_r): Remove. Update all users. - (mark_not_simple): Set TREE_NOT_GIMPLE. - * gimplify.c (simplify_call_expr): Enable call to mark_not_simple. - * tree-flow.h (TF_NOT_SIMPLE): Remove. Update all users. - - * tree-cfg.c (build_tree_cfg): Rename from tree_find_basic_blocks. - Update all users. - Find the first executable statement before starting basic block 0. - (make_blocks): Do not accept TRY_FINALLY_EXPR and TRY_CATCH_EXPR - nodes. - (make_edges): Always create an edge from entry to basic block 0. - (delete_tree_cfg): Rename from delete_cfg. Update all uses. - (first_exec_stmt): Return the container for the first statement, - not the statement itself. - - * tree-dfa.c (tree_find_refs): Re-implement using a GIMPLE - iterator. - (find_refs_in_stmt): Handle GIMPLE statements. - (find_refs_in_expr): Call flags_from_decl_or_type when handling - CALL_EXPR expressions. - (create_ref): Call DECL_P. - (remove_tree_ann): Call tree_annotation. - - * tree-flow-inline.h (gsi_step_bb): Stop if statement is not inside - a basic block. - - * tree-flow.h (build_tree_cfg): Rename from tree_find_basic_blocks. - Update all users. - (delete_tree_cfg): Rename from delete_cfg. - (tree_find_refs): Declare. - (build_tree_ssa): Rename from tree_build_ssa. - (is_upward_exposed): Remove unused function. - * tree-optimize.c (delete_tree_ssa): Remove declaration. - (optimize_function_tree): Re-enable SSA builder. - * tree-simple.h (gsi_container): New function. - - * Makefile.in (tree-ssa.o): Remove dependencies on c-common.h and - c-tree.h. - * tree-ssa.c: Don't include c-common.h nor c-tree.h. - (tree_find_refs): Remove declaration. - (remove_annotations_r): New local function. - (build_tree_ssa): Rename from tree_build_ssa. Update all users. - (analyze_rdefs): Don't call prep_stmt. - (is_upward_exposed): Remove unused function. - (add_phi_node): Don't associate the PHI node to a statement. - (delete_tree_ssa): Receive the function body as argument. - Walk the function body removing annotations from every tree. - -2002-10-10 Steven Bosscher - - * tree-ssa-dce (tree_ssa_eliminate_dead_code): Initialize prev to - NULL_TREE. - Don't close dump_file until end of function. - Dump the tree after DCE for -fdump-tree-dce. - -2002-10-08 Richard Henderson - Jason Merrill - Diego Novillo - - * tree-simple.h (gimple_stmt_iterator): New type. - (gsi_start): New function. - (gsi_after_end): New function. - (gsi_step): New function. - (gsi_stmt): New function. - -2002-10-08 Diego Novillo - - * calls.c (flags_from_decl_or_type): Make extern. - (ECF_*): Move ... - * rtl.h (ECF_*): ... here. - (flags_from_decl_or_type): Declare. - - * tree.h (COND_EXPR_COND): Define. - (COND_EXPR_THEN): Define. - (COND_EXPR_ELSE): Define. - (LABEL_EXPR_LABEL): Define. - (optimize_function_tree): Declare. - -2002-10-08 Diego Novillo - - * Makefile.in (TREE_FLOW_H): Define. - (c-decl.o): Remove dependency on tree-optimize.h. - (tree-alias-steen.o, tree-alias-common.o, tree-ssa.o, tree-ssa-pre.o, - tree-cfg.o, tree-dfa.o, tree-optimize.o, c-simplify.o, c-call-graph.o, - tree-ssa-dce.o, tree-ssa-ccp.o): Depend on $(TREE_FLOW_H). - (tree-cfg.o): Remove dependencies on c-tree.h and c-common.h. - * c-call-graph.c (construct_call_graph): Disable calls to removed - functions. - * c-decl.c: Don't include tree-optimize.h. - (c_expand_body): Enable calls to optimize_function_tree. - - * c-pretty-print.c (dump_c_node): Fix printf warnings. - Only dump the first node of a COMPOUND_EXPR when brief_dump is set. - Use COND_EXPR_COND, COND_EXPR_THEN and COND_EXPR_ELSE accessors. - Only dump the opening brace of a BIND_EXPR when brief_dump is set. - - * tree-cfg.c: Don't include tree-optimize.h, c-common.h and c-tree.h. - (binding_stack, make_for_stmt_blocks, make_if_stmt_blocks, - make_while_stmt_blocks, make_switch_stmt_blocks, - make_do_stmt_blocks, create_maximal_bb, make_for_stmt_edges, - make_while_stmt_edges, make_do_stmt_edges, make_if_stmt_edges, - make_break_stmt_edges, make_continue_stmt_edges, create_loop_hdr, - insert_before_ctrl_stmt, insert_before_normal_stmt, - insert_after_ctrl_stmt, insert_after_normal_stmt, - insert_after_loop_body, tree_split_bb, stmt_ends_bb_p): Remove. - Update all users. - (STRIP_CONTAINERS): Define. - (make_bind_expr_blocks): New local function. - (make_cond_expr_blocks): New local function. - (make_loop_expr_blocks): New local function. - (make_switch_expr_blocks): New local function. - (make_loop_expr_edges): New local function. - (make_cond_expr_edges): New local function. - (make_case_label_edges): New local function. - (first_exec_block): New local function. - (make_goto_expr_edges): Rename from make_goto_stmt_edges. - (make_blocks): Remove arguments COMPOUND_STMT and PREV_CHAIN_P. - Use gimple_stmt_iterator to iterate over the statements in the - function. Create maximal basic blocks during traversal. - (create_bb): Remove arguments end, prev_chain_p and binding_scope. - Rename control_parent to parent_block. - (set_bb_for_stmt): Move from tree-flow.h. - (make_edges): Don't assume that basic block 0 contains executable - statements. - Handle BIND_EXPR nodes. - (make_ctrl_stmt_edges): Handle LOOP_EXPR, COND_EXPR and - SWITCH_EXPR. - (make_exit_edges): Handle GOTO_EXPR, CALL_EXPR and RETURN_EXPR. - (tree_delete_bb): Call first_stmt and last_stmt. - (block_invalidates_loop): Call last_stmt. - (replace_expr_in_tree): Don't dump line number information. - (find_expr_in_tree_helper): Don't call statement_code_p. - (tree_dump_bb): Call get_lineno. - (tree_cfg2dot): Ditto. - (successor_block): Use a gimple_stmt_iterator to find the first - executable block after the current one. - (is_ctrl_stmt): Handle COND_EXPR, LOOP_EXPR and SWITCH_EXPR. - (is_ctrl_altering_stmt): Call flags_from_decl_or_type to discover - non-return functions. - (is_loop_stmt): Handle LOOP_EXPR. - (is_computed_goto): Handle GOTO_EXPR. - (stmt_starts_bb_p): Handle CASE_LABEL_EXPR, LABEL_EXPR, RETURN_EXPR - and BIND_EXPR. - (first_exec_stmt): Use a gimple_stmt_iterator to traverse the - statements. - (first_stmt): New function. - (last_stmt): New function. - - * tree-dfa.c: Don't include c-common.h, c-tree.h and - tree-optimize.h. Include diagnostic.h. - (tree_find_refs): Disable. - (find_refs_in_stmt): Disable. - (find_refs_in_expr): Don't call prep_stmt. - (tree_ann): Don't annotate empty_stmt_node. - (find_declaration): Remove. Update all users. - (dump_ref): Call get_lineno. - (is_visible_to): Always return true. - - * tree-flow.h: Include tree-flow-inline.h, basic-block.h and - tree-simple.h. - (tree_ann_d): Remove compound_parent field. - (set_bb_for_stmt): Declare extern. - (compound_parent, set_compound_parent, struct for_header_blocks, - union header_blocks, prev_chain_p, set_prev_chain_p, binding_scope, - set_binding_scope, loop_hdr, for_init_bb, set_for_init_bb, - for_cond_bb, set_for_cond_bb, for_expr_bb, set_for_expr_bb, - end_while_bb, set_end_while_bb, do_cond_bb, set_cond_bb, - stmt_ends_bb_p, loop_parent, latch_block, switch_parent, - first_exec_stmt, last_exec_stmt, is_exec_stmt, - is_statement_expression, first_non_decl_stmt, first_decl_stmt, - first_non_label_in_bb, tree_split_bb, find_declaration): Remove. - Update all users. - (get_lineno): New function. - (struct bb_ann_def): Rename field parent to parent_block. Update - all users. - Remove fields prev_chain_p, loop_hdr and binding_scope. Update all - users. - (parent_block): Rename from bb_parent. - (set_parent_block): Rename from set_bb_parent. - (prev_chain_p): Remove - (bb_empty_p): Return true if block only contains empty_stmt_node. - (gsi_step_bb): New function. - (gsi_start_bb): New function. - (gsi_insert_before, gsi_insert_after, gsi_delete, gsi_replace): - Declare. - (insert_stmt_before): Rename from insert_stmt_tree_before. - (insert_stmt_after): Rename from insert_stmt_tree_after. - (first_stmt): Declare. - (last_stmt): Declare. - (tree_perform_ssapre, tree_ssa_ccp, - tree_ssa_eliminate_dead_code): Move declaration from tree-optimize.h. - * tree-flow-inline.h: New file for all the inline functions - declared in tree-flow.h - - * tree-optimize.c: Don't include tree-optimize.h, c-common.h and - c-tree.h. - (optimize_function_tree): Disable call to double_chain_stmts. - Call init_flow. - Call tree_find_basic_blocks. - Disable calls to tree_build_ssa and optimizers. - (build_tree_ssa): Remove. Update all users. - * tree-optimize.h: Remove. - * tree-ssa-ccp.c: Don't include tree-optimize.h - * tree-ssa-dce.c: Don't include tree-optimize.h. - Include diagnostic.h - * tree-ssa-pre.c: Don't include tree-optimize.h. - (requires_edge_placement): Disable unused function. - (set_need_repair): Disable unused function. - (finalize_1): Disable calls to insert_stmt_tree_before and - insert_stmt_tree_after. - (repair_injury): Ditto. - (code_motion): Ditto. - * tree-ssa.c: Don't include tree-optimize.h. - (insert_phi_nodes_for): Remove unused variable. - (add_phi_node): Don't call statement_code_p. - * cp/optimize.c: Don't include tree-optimize.h - * tree-alias-common.c: Don't include tree-optimize.h. - (find_func_decls): Disable. - (display_points_to_set): Disable. - * tree-alias-steen.c: Don't include tree-optimize.h. - -2002-10-04 Jason Merrill - - * gimplify.c (declare_tmp_vars): Don't add temps to block vars. - * tree-inline.c (remap_decls): Split out from remap_block. - (copy_bind_expr): Remap BIND_EXPR_VARS separately from block vars. - - * c-simplify.c (simplify_expr_stmt): Call set_file_and_line_for_stmt. - - * gimplify.c: New file. - (push_gimplify_context, pop_gimplify_context): New fns. - (gimple_push_bind_expr, gimple_pop_bind_expr): New fns. - (simplify_bind_expr): Use them. - (gimple_current_bind_expr, gimple_add_tmp_var): New fn. - (foreach_stmt): Recurse if necessary. - (various): Use generic interfaces instead of c-specific ones. - * c-simplify.c: Move language-independent code to gimplify.c. - (simplify_c_loop): Use add_tree instead of add_stmt_to_compound. - (various): Use new *_bind_expr interfaces. - * Makefile.in (C_AND_OBJC_OBJS): Add gimplify.o. - (gimplify.o): New rule. - - * c-decl.c (c_expand_body): Dump trees here. - * c-simplify.c (simplify_function_body): Not here. - -2002-10-03 Frank Ch. Eigler - - * tree-mudflap.c (mf_offset_expr_of_array_ref): Don't emit - intermediate variables for constant index values. - (mx_xfn_indirect_ref): For constant valid index values and - known valid array sizes, omit bounds checks. - -2002-10-03 Jason Merrill - - * c-simplify.c (simplify_bind_expr): Don't clear TREE_SIDE_EFFECTS - if we have a block. - - * c-simplify.c (simplify_expr) [TRY_FINALLY_EXPR]: New case. - - * tree-inline.c (copy_body_r) [RETURN_EXPR]: Don't make an extra - copy of the MODIFY_EXPR. Mark the return label used. - (expand_call_inline): Don't push/pop_srcloc. Only emit the return - label if it was used. - - * tree-simple.c (right_assocify_expr): Split out from - rationalize_compound_expr. Don't move non-matching op0's. - * tree-simple.h: Declare it. - * c-simplify.c (simplify_boolean_expr): Call it. - (simplify_cond_expr): Reorganize. Optimize if (a&&b). - - * c-simplify.c (wrap_with_wfl): Drop special loop handling. - (simplify_c_loop): Wrap loop contents in wfls. - - * c-simplify.c (STRIP_WFL): Move... - * tree.h: ...here. - - * c-common.c (c_walk_subtrees): Don't walk TREE_CHAIN. - * tree-inline.c (walk_tree): Call langhook walk_subtrees first. - For expressions, walk TREE_CHAIN if it matters. - -2002-10-01 Frank Ch. Eigler - - * builtins.c (expand_builtin_alloca): Disable if -fmudflap. - * tree-mudflap.c (mudflap_enqueue_decl): Tweak logic to include - more globals. - (mx_xfn_indirect_ref): Handle bitfield COMPONENT_REFs; instrument - BIT_FIELD_REF/INDIRECT_REFs. - -2002-10-01 Jason Merrill - - * c-decl.c (poplevel): Only add undeclared labels to the toplevel - block. - * c-parse.in (label_decl): Push the declared label. - - * c-decl.c (c_expand_body): If we've been simplified, use - expand_expr_stmt_value instead. - - * c-decl.c (c_expand_decl): Rename from c_expand_decl_stmt. - Handle all C-specific expansion semantics. - * c-tree.h: Change prototype. - * langhooks.h (struct lang_hooks): Add expand_decl hook. - * langhooks.c (lhd_expand_decl): Default version. - * langhooks-def.h (LANG_HOOKS_EXPAND_DECL): Provide default. - * c-lang.c (LANG_HOOKS_EXPAND_DECL): Define. - * c-semantics.c (lang_expand_decl_stmt): Remove. - (genrtl_decl_stmt): Use lang_hooks.expand_decl. - * Makefile.in (c-semantics.o): Depend on langhooks.h. - * c-objc-common.c (c_objc_common_init): Don't set - lang_expand_decl_stmt. - - * c-common.def (ASM_STMT): Only 4 operands. - * c-common.h (ASM_CV_QUAL): Remove. - (genrtl_asm_stmt): Adjust prototype. - * c-typeck.c (build_asm_stmt): Adjust. - * c-semantics.c (genrtl_asm_stmt): Change cv_qualifier parm to - volatile_p. - (expand_stmt): Adjust. - - * c-common.h (SWITCH_COND, SWITCH_BODY, CASE_LOW, CASE_HIGH, - CASE_LABEL_DECL, GOTO_DESTINATION, ASM_STRING, ASM_OUTPUTS, - ASM_INPUTS, ASM_CLOBBERS, ASM_VOLATILE_P, ASM_INPUT_P): Move to tree.h. - - * c-pretty-print.c (newline_and_indent): New fn. - (dump_c_tree, dump_c_node): Make spc a plain int. - (dump_c_node): Use output_add_identifier. - Reorganize for bnw-simple; indent in the enclosing node rather - than the subexpression. - [FUNCTION_DECL]: Just print the name for now. - [COMPOUND_EXPR, COND_EXPR]: Handle use as statements. - [BIND_EXPR, GOTO_EXPR, EXIT_EXPR, LOOP_EXPR, LABELED_BLOCK_EXPR, - EXIT_BLOCK_EXPR, RETURN_EXPR, SWITCH_EXPR, ASM_EXPR, - CASE_LABEL_EXPR]: Implement. - (print_declaration): Print 'static'. - * c-tree.h: Move c-pretty-print decls to diagnostic.h. - - * expr.c (store_field): Don't always pass want_value==0 to store_expr. - - * expr.c (expand_expr) [EXIT_EXPR]: Handle EXIT_EXPR_IS_LOOP_COND. - - * expr.c (expand_expr) [LOOP_EXPR]: Pass exit_flag==0 to - exand_start_loop. - [BIND_EXPR]: Adjust for functions-as-trees mode. - [COMPOUND_EXPR]: Avoid recursion if possible. - [SWITCH_EXPR, LABEL_EXPR]: Move handling from java/expr.c. - [CASE_LABEL_EXPR, ASM_EXPR]: New handling. - - * tree.h (struct tree_common): Add visited flag. - (TREE_VISITED): New macro. - * tree.c (copy_node): Clear TREE_VISITED. - * print-tree.c (print_node): Print visted. - - * stmt.c (expand_asm_expr): New fn. - - * tree.c (build1): Always set TREE_SIDE_EFFECTS for 's' codes. - - * tree.h (enum tree_index): Add TI_EMPTY_STMT. - (empty_stmt_node): New macro. - * tree.c (build_common_tree_nodes_2): Initialize it. - - * tree.def: Change some codes from 'e' to 's'. - (CASE_LABEL_EXPR, ASM_EXPR): New codes. - - * tree.def (SWITCH_EXPR): Now has three operands. - - * tree-inline.c: Retarget to generic trees. FIXME FIXME. - * old-tree-inline.c: Old C/Java-specific inliner. - * Makefile.in (old-tree-inline.o): New rule. - * c-common.c (c_walk_subtrees): New fn. - (c_tree_chain_matters_p): New fn. - * c-lang.c: Use them for LANG_HOOKS_TREE_INLINING_WALK_SUBTREES - and LANG_HOOKS_TREE_INLINING_TREE_CHAIN_MATTERS_P. - * c-common.h: Declare them. - (DECL_NUM_STMTS): Move to tree.h. - * c-decl.c (finish_function): Simplify the function trees. - * c-objc-common.c (inline_forbidden_p): Look inside BIND_EXPRs - for nested functions. Don't inline a function with _STMT trees. - - * basic-block.h: Include hard-reg-set.h. - - * c-decl.c (start_function): Don't call make_decl_rtl. - (c_expand_body): Call it here instead. - - * Makefile.in (explow.o): Depend on langhooks.h. - - * unroll.c (copy_loop_body): Don't copy NOTE_INSN_DELETED_LABELs - between copy_notes_from and loop_end, either. - -2002-09-30 Daniel Berlin - - * tree-ssa-pre.c (repair_injury): Start work on updating SSA - representation for strength reduction injuries. - Print a new line after outputting tree node in debug statements. - Fix strength reduction of a candidate with two variables (IE a * - c). - Put the repair after the injuring statement, not at the end of the - block. - Break the RHS use lookup if it's defined by a phi. - (calculate_increment): Ditto on node printing. - (code_motion): Ditto on updating SSA rep for strength reduction - injuries. - (find_rhs_use_for_var): Rewrite to use maybe_find_rhs_use_for_var. - (maybe_find_rhs_use_for_var): Rename from find_rhs_use_for_var, - don't abort, return NULL. - (set_var_phis): Simplify break condition. - Make sure RHS *has* a use before we go and get it. - (rename2): Ditto on RHS checking. - When looking up injuring defs, break on phis. - (phi_opnd_from_res): Ditto. - (defs_y_dom_x): Ditto. - (TODO List): Add new TODO to fix the remapping crud. - -2002-09-27 Daniel Berlin - - * tree-ssa-pre.c (tree_perform_ssapre): Move insertion into - splay tree inside the is_simple_modify_expr block, to prevent - tree check failure. - -2002-09-26 Daniel Berlin - - * tree-ssa-pre.c (update_phis_in_list): New function. - (update_ssa_for_new_use): New function. - (code_motion): Start working on code to update SSA representation. - (find_reaching_def_of_var): New function. - -2002-09-25 Steven Bosscher - - * Makefile.in (tree): Add dependency on c-tree.h - * tree-optimize.c: Include c-tree.h - (optimize_function_tree): React to -fdump-tree-optimized. - -2002-09-25 Daniel Berlin - - * tree-dfa.c (add_list_to_ref_list_end): New function. - (add_list_to_ref_list_begin): Ditto. - (find_list_node): Handle searching in empty lists. - (find_refs_in_stmt): De-staticify. - - * tree-flow.h (add_list_to_ref_list_end): New declaration. - (add_list_to_ref_list_begin): Ditto. - (find_refs_in_stmt): Add prototype. - -2002-09-25 Diego Novillo - - * Makefile.in (tree-dfa.o): Depend on flags.h - * tree-cfg.c (tree_dump_cfg): Alter output format slightly. - (block_invalidates_loop): Look for clobbering definitions of - GLOBAL_VARIABLE. - * tree-simple.c (get_base_symbol): Handle EXPR_WITH_FILE_LOCATION - nodes. - * tree-optimize.c (init_tree_flow): Remove. Update all users. - (build_tree_ssa): Don't call tree_find_refs. - Don't call tree_compute_rdefs. - - * tree-dfa.c: Include flags.h - (dump_file): Remove. - (dump_flags): Remove. - (pointer_refs): Remove. - (struct dfa_stats_d): Add fields max_num_phi_args, num_may_alias, - max_num_may_alias, num_alias_imm_rdefs and max_num_alias_imm_rdefs. - Remove field num_fcalls. - (dfa_counts): Declare. - (tree_find_refs): Declare. - (tree_ssa_dump_file): Declare. - (tree_ssa_dump_flags): Declare. - (dump_if_different): New function. - (add_default_defs): Remove. Update all users. - (add_call_site_clobbers): Remove. Update all users. - (add_ptr_may_refs): Remove. Update all users. - (compute_may_aliases): New function. - (find_may_aliases_for): New function. - (add_may_alias): New function. - (may_alias_p): New function. - (is_visible_to): New function. - (get_alias_index): New function. - (call_sites): Remove. Update all users. - (global_var): Declare. - (E_FCALL): Remove. Adjust other constants. - (M_INDIRECT): Remove. Update all users. - (M_RELOCATE): Declare. - (tree_find_refs): Move debugging dumps to tree_build_ssa. - Move initialization code to init_tree_ssa. - Call compute_may_aliases. - (find_refs_in_expr): For INDIRECT_REF nodes create a reference to - the canonical INDIRECT_REF node associated with the pointer symbol. - Given a pointer p, clobber the canonical INDIRECT_REF of p after - creating a V_DEF for p. - For CALL_EXPR nodes, if the called function is not pure nor - const, create a use and a clobbering definition to GLOBAL_VAR. - (create_ref): Allow INDIRECT_REF variables. - (add_phi_arg): Keep track of number of PHI arguments created. - (function_may_recurse_p): Look for clobbering definitions to - GLOBAL_VAR. - (get_fcalls): Remove unused function. - (is_pure_fcall): Remove unused function. - (fcall_takes_ref_args): Remove unused function. - (find_declaration): Stop iterating at ENTRY_BLOCK_PTR. - (debug_variable): New function. - (dump_variable): New function. - (dump_referenced_vars): Call it. - (dump_phi_args): Don't dump NULL arguments. - (PERCENT): Define. - (dump_dfa_stats): Re-format output. - Add new counters. - Call dump_if_different. - (collect_dfa_stats): Also recurse into GLOBAL_VAR. - (collect_dfa_stats_r): Collect may-alias information. - (count_tree_refs): Collect information about def-def links for - aliases. - Keep track of maximum values for number of PHI arguments, aliases - and def-def links. - (ref_type_name): Handle M_RELOCATE. - (validate_ref_type): Ditto. - - * tree-ssa.c: Add more documentation. - (tree_ssa_dump_file): Rename from dump_file. Declare extern. - (tree_ssa_dump_flags): Rename from dump_flags. Declare extern. - (added): New local varray. - (in_work): New local varray. - (work_stack): New local varray. - (dfa_counts): Declare. - (insert_phi_nodes_for): New local function. - (add_phi_node): New local function. - (set_ssa_links): New local function. - (set_alias_imm_reaching_def): New local function. - (create_default_def): New local function. - (init_tree_ssa): New local function. - (tree_find_refs): Relocate declaration from tree-flow.h - (tree_build_ssa): Call init_tree_ssa. - Call tree_find_refs. - Process all SSA-related dump options. - (insert_phi_nodes): Rename from insert_phi_terms. Update all - users. - Call insert_phi_nodes_for. - (build_fud_chains): Add more documentation. - Initialize save_chain to 0. - (search_fud_chains): Add more documentation. - Call set_ssa_links. - Call create_default_def. - (tree_compute_rdefs): Initialize array marked to 0. - (follow_chain): Follow def-def chains for non-killing definitions - for aliases. - (dump_reaching_defs): Call dump_variable. - - * tree-flow.h (E_FCALL): Remove. Update all users. - (M_INDIRECT): Remove. Update all users. - (M_RELOCATE): Declare. - (struct var_ref): Add field alias_imm_rdefs. - (alias_imm_reaching_def): New inline function. - (struct tree_ann_d): Add field indirect_var. - Add field may_aliases. - (enum tree_flags): Relocate. - (indirect_var): New inline function. - (set_indirect_var): New inline function. - (may_alias): New inline function. - (num_may_alias): New inline function. - (struct dfa_counts_d): Declare. - (global_var): Declare. - (FCALL_NON_PURE, FCALL_PURE, FCALL_BUILT_IN): Remove. - (tree_find_refs): Move to tree-ssa.c. - (dump_variable): Declare. - (debug_variable): Declare. - (get_fcalls): Remove. - (is_pure_fcall): Remove. - (fcall_takes_ref_args): Remove. - (ref_defines): Declare. - (is_killing_def): Declare. - (get_alias_index): Declare. - (delete_tree_ssa): Rename from delete_ssa. Update all users. - (set_currdef_for): Allow INDIRECT_REF nodes. - (bb_annotation): Don't create a new one if the block didn't have an - annotation already. - - * tree-ssa-ccp.c (substitute_and_fold): Rename from - ssa_ccp_substitute_constants. Update all users. - Call replace_uses_in. - (replace_uses_in): New local function. - (evaluate_expr): Call it. - (initialize): Call get_base_symbol. - - * tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Don't handle - E_FCALL. - -2002-09-22 Diego Novillo - - * Makefile.in (tree-dfa.o): Depend on hashtab.h. - * c-simplify.c (get_name): Declare extern. - * tree-cfg.c (tree_dump_cfg): Call it. - (tree_cfg2dot): Call it. - * tree-ssa-ccp.c (tree_ssa_ccp): Call get_name. - * tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Call get_name. - * tree-ssa-pre.c (tree_perform_ssapre): Call get_name. - * tree-ssa.c (analyze_rdefs): Call get_name. - (dump_reaching_defs): Call get_name. - (dump_tree_ssa): Call get_name. - * tree.h (get_name): Declare. - - * tree-dfa.c: Include "hashtab.h" - (struct dfa_stats_d): New. - (collect_dfa_stats): New local function. - (collect_dfa_stats_r): New local function. - (count_tree_refs): New local function. - (count_ref_list_nodes): New local function. - (tree_find_refs): Call dump_begin on entry to the function. - (dump_referenced_vars): Call get_name. - (SCALE): Declare. - (LABEL): Declare. - (dump_dfa_stats): New function. - (debug_dfa_stats): New function. - * tree-dump.c (struct dump_option_value_info): Add entry for TDF_STATS. - * tree-flow.h (has_annotation): Remove. Update all users. - (dump_dfa_stats): Declare. - (debug_dfa_stats): Declare. - (tree_annotation): Don't create one if the tree doesn't have one - already. Update all users to new semantics. - * tree-ssa-dce.c (print_stats): Dump if dump_flags has TDF_STATS bit - set. - * tree-ssa.c (tree_build_ssa): Open dump file on entry. - Call dump_dfa_stats if dump_flags has TDF_STATS bit set. - Call dump_tree_ssa if dump_flags has TDF_DETAILS bit set. - * tree.h (TDF_STATS): Define. - * doc/invoke.texi: Document 'stats' flag for -fdump-tree. - - * tree-dfa.c (next_tree_ref_id): Change type to unsigned long. - Update all users. - tree-flow.h (tree_ref_common): Change type of field 'id' to - unsigned long. Update all users. - (ref_id): Change return type to unsigned long. Update all users. - -2002-09-21 Daniel Berlin - - * tree-ssa-pre.c (struct expr_info): Add repaired member. - (repair_injury): Track which injuries we repaired, so we don't - repair them > 1 time. - -2002-09-20 Diego Novillo - - * c-pretty-print.c (dump_c_node): Fix call to REAL_VALUE_TO_DECIMAL. - -2002-09-20 Diego Novillo - - * tree-dfa.c (find_refs_in_stmt): Fix botched call to - clobber_vars_r with CLEANUP_STMT nodes. - -2002-09-20 Diego Novillo - - * toplev.c (flag_tree_ssa): Remove. Update all users. - -2002-09-20 Frank Ch. Eigler - - * gcc.c (cc1_options): Make -fmudflap imply -fno-merge-constants. - * varasm.c (categorize_decl_for_section): Likewise, for strings. - * tree-mudflap.c (mudflap_enqueue_decl): Don't be interested - in !TREE_USED decls. Fix minor type warning. - (mf_offset_expr_of_array_ref): Create explicit temporary variables - for array index expressions instead of SAVE_EXPRs. Update callers. - (mf_build_check_statement_for): Insert temp variables. - (mx_xfn_indirect_ref): Correct recursion-protection checking - sequence. Tweak array check-base calculation back to "&array[0]". - (*): Use build_function_type_list instead of build_function_type. - (mx_external_ref): Remove unused parameter. Update callers. - -2002-09-19 Diego Novillo - - * c-decl.c (c_expand_body): Invoke tree optimizers with -O1 and - above. - * flags.h (flag_tree_ssa): Remove. - * tree-cfg.c (find_expr_in_tree_helper): Change last argument type - to int. - * tree-dfa.c (create_ref): Ditto. - * tree-flow.h (num_referenced_vars): Change type to unsigned long. - * doc/invoke.texi (-ftree-ssa): Remove. - (-fdump-tree-{pre,ccp,dce}): Add to the summary section. - (-fdump-tree-xxx-details): Update documentation. - (-fdump-tree-ccp): Document. - (-fdump-tree-simple): Move elsewhere. - -2002-09-19 Richard Henderson - - * function.c (insns_for_mem_hash): Cast to size_t first. - * tree-dfa.c (num_referenced_vars): Unsigned long, not size_t. - (dump_referenced_vars): Use %lu for it. - (dump_ref): Use HOST_WIDE_INT_PRINT_DEC. - * tree-nomudflap.c (mudflap_c_function): Use ATTRIBUTE_UNUSED. - (mudflap_enqueue_decl, mudflap_enqueue_constant): Likewise. - * tree-ssa-pre.c (compute_idfs): Cast to size_t first. - - * tree-optimize.c (optimize_function_tree): Fix missed renamings. - * tree-ssa-pre.c (tree_perform_ssapre): Likewise. - -2002-09-19 Jeff Law - - * tree-dfa.c (find_refs_in_stmt): Search for references in the call - address of a CALL_EXPR. - -2002-09-19 Daniel Berlin - - * toplev.c: tree-ssa-* -> tree-*. - - * doc/invoke.texi: Ditto. - -2002-09-19 Daniel Berlin - - * flags.h: flag_tree_ssa_* -> flag_tree_*. - - * toplev.c: Ditto. - - * tree-optimize.c: Ditto. - - * tree-dump.c: dump-tree-ssa-* -> dump-tree-*. - TDI_ssa_* -> TDI_*. - - * tree.h: Ditto - - * tree-ssa-dce.c (tree_ssa_eliminate_dead_code): Fix dump handling. - -2002-09-18 Daniel Berlin - - * tree-dump.c (dump_files): Use dump-tree-ssa-??? for the option names - and "ssa-???" for the dump files. - - * tree.h: TDI_ccp and TDI_dce -> TDI_ssa_ccp and TDI_ssa_dce. - - * tree-ssa-ccp.c: TDI_ccp->TDI_ssa_ccp. - -2002-09-18 Daniel Berlin - - * tree-dump.c: Fix order of dump files - -2002-09-17 Daniel Berlin - - * tree-ssa-pre.c: Remove a lot of finding refs in statements junk. - Start on strength reduction. - Only generate simple statements. - Remove EXPR* macros in favor of inline functions. - Update comparisons and sets to 1 and 0 to true and false where - approriate. - (toplevel): Add DEBUGGING_STRRED define (temporary, for - implementation debugging, *not* useful as a dump option). - Add TODO notes. - Add global avdefs, orig_expr_map, need_repair_map, - strred_candidate. - (set_var_phis): Add struct expr_info * argument. - Update to handle injuring definitions. - (defs_y_dom_x): Ditto. - (phi_opnd_from_res): Ditto. - (phi_for_operand): Remove extra \. - (find_tree_ref_for_var): Renamed to find_use_for_var. Update all - callers. - Use orig_expr_map to lookup original expression, remove statement - searching gunk. - (find_rhs_use_for_var): New function. - (is_strred_cand): New function. - (is_injuring_def): New function. - (calculate_increment): New function. - (repair_injury): New function. - (set_need_repair): New function. - (struct expr_info): Add strred_cand member. - (rename_2): Update to handle injuring definitions. - (expr_phi_insertion): Ditto. - (code_motion): Update to repair injuries. - Only insert SIMPLE statements. - Free avdefs here now. - (finalize_1): Don't free avdefs anymore here. - (tree_perform_ssapre): Record original expresion for - find_use_for_var's benefit. - Determine strength reduction candidates. - - * tree-flow.h: Remove EXPR* macros in favor of inline functions. - Remove E_INJ. - - * tree-dfa.c: Change EXPR* macros to the new functions. - Remove E_INJ. - -2002-09-18 Diego Novillo - - * tree-dfa.c (M_ADDRESSOF): Define. - (find_refs_in_expr): Create addressof-use references for ADDR_EXPR - nodes. - Don't create references for FUNCTION_DECL nodes. - (ref_type_name): Handle M_ADDRESSOF. - (validate_ref_type): Ditto. - (clobber_vars_r): Don't clobber FUNCTION_DECL nodes. - * tree-flow.h (M_ADDRESSOF): Declare. - -2002-09-17 Diego Novillo - - * doc/invoke.texi: Document -ftree-ssa-dce and -fdump-tree-dce. - * cp/Make-lang.in (CXX_C_OBJS): Add tree-ssa-dce.o. - -2002-09-17 Ben Elliston - - * Makefile.in (C_AND_OBJC_OBJS): Add tree-ssa-dce.o. - tree-ssa-dce.o): New target. - * tree-ssa-dce.c: New file. - * flags.h (flag_tree_ssa_dce): Declare flag. - * tree.h (tree_dump_index): Add TDI_dce. - * toplev.c (flag_tree_ssa_dce): New flag. - (f_options): Add "dump-tree-all-ssa" option. - * tree-flow.h (enum tree_flags): Add TF_NECESSARY. - * tree-dump.c (dump_files): Add dump-tree-dce option. - (dump_enable_all_ssa): Enable it when dumping all. - * tree-optimize.h (tree_ssa_eliminate_dead_code): Declare. - * tree-optimize.c (optimize_function_tree): Invoke the - optimisation pass if flag_tree_ssa_dce is set. - -2002-09-17 Diego Novillo - - * Makefile.in (tree-ssa.o): Add dependency on c-tree.h - * c-simplify.c (mark_not_simple_r): Don't mark IDENTIFIER_NODEs. - * tree-dfa.c (function_may_recurse_p): Fix comment. - (dump_ref): Don't dump immediate uses for PHI nodes more than once. - (dump_referenced_vars): Unparse the name of the variable. - * tree-flow.h (dump_tree_ssa): Declare. - (debug_tree_ssa): Declare. - (replace_ref_operand_with): Check if OPERAND_P is NULL. - (restore_ref_operand): Ditto. - (tree_annotation): Check that constants, types and IDENTIFIER_NODEs - are not being annotated. - * tree-ssa.c: Include c-tree.h. - (dump_reaching_defs): Unparse the variable name. - (dump_tree_ssa): New function. - (tree_build_ssa): Call it. - (debug_tree_ssa): New function. - -2002-09-14 Steven Bosscher - - * dwarf2out.c (is_fortran): Return true for - DW_LANG_Fortran95. - (gen_compile_unit_die): Return DW_LANG_Fortran95 if - language is "GNU F95". - -2002-09-13 Daniel Berlin - - * tree-dump.c (dump_switch_p): Get longest match, not first one. - - * tree.h: Put TDI_* back in order, now that we do longest match - matching. - -2002-09-13 Diego Novillo - - * tree-dfa.c (add_call_site_clobbers): Call decl_function_context - instead of DECL_CONTEXT. - * tree-ssa-ccp.c (initialize): Ditto. - * tree-ssa.c (analyze_rdefs): Ditto. - -2002-09-11 Diego Novillo - - * tree-dfa.c (find_refs_in_stmt): Call clobber_vars_r to clobber - CLEANUP_STMT nodes. - (create_ref): Only add _DECL nodes to the list of referenced - variables. - (clobber_vars_r): Create a may-use reference prior to clobbering - the variable. - (add_call_site_clobbers): Ditto. - (add_ptr_may_refs): Move call to find_list_node where it's actually - needed. - * tree-flow.h: Update documentation on M_CLOBBER. - -2002-09-10 Daniel Berlin - - * tree-ssa-pre.c (defs_match_p): Fix typo ( | -> || ). - -2002-09-10 Diego Novillo - - * tree-dfa.c (V_PHI_ARG): Remove. Adjust related constants. - Update all users. - (add_ref_to_list_after): Don't allocate memory for the - node when adding to the beginning or the end of the list. - (add_phi_arg): Don't call create_ref to add a new argument. - (debug_phi_args): New function. - (dump_phi_args): New function. - (dump_ref): Call it. - (dump_referenced_vars): Use 'file' instead of 'dump_file'. - - * tree-flow.h (V_PHI_ARG): Remove. Update all users. - (struct var_ref): Move fields used in distinct - reference types to other structures. Update all users. - (struct var_def): New. - (struct var_phi): New. - (struct var_use): New. - (union tree_ref_d): Add members vdef, vphi, vuse and vphi_arg. - Update all users. - (save_chain): Remove. Update all users. - (set_save_chain): Remove. Update all users. - (marked_with): Remove. Update all users. - (mark_def_with): Remove. Update all users. - (dump_reaching_defs): Declare. - (debug_reaching_defs): Declare. - - (struct phi_node_arg_d): New structure. - (phi_node_arg): New type. - (phi_arg): Change return type to phi_node_arg. - (imm_reaching_def_edge): Rename to phi_arg_edge. - (set_imm_reaching_def_edge): Rename to set_phi_arg_edge. - (phi_arg_def): New inline function. - (set_phi_arg_def): New inline function. - (debug_phi_args): Declare. - (dump_phi_args): Declare. - - * tree-ssa-ccp.c: Use new phi_node_arg type when examining PHI node - arguments. - - * tree-ssa-pre.c: Ditto. - - * tree-ssa.c (save_chain): New local variable. - (build_fud_chains, search_fud_chains): Use it. - (marked): New local variable. - (tree_compute_rdefs, follow_chain): Use it. - (dump_reaching_defs): New function. - (debug_reaching_defs): New function. - -2002-09-09 Daniel Berlin - - * Makefile.in (tree-alias-steen.o): Remove gt-tree-alias-steen.h - (tree-alias-common.o): Add dependency on c-common.h - - * tree-ssa-pre.c: Fix PRE now that V_USE's expr's are the entire - assignment, rather than just the right hand side. - Stop generating our own call clobbers - - * tree-dfa.c (create_ref): Make sure var is not null before checking - TREE_THIS_VOLATILE. - - * tree.h: Reorder TDI_* so ssapre comes before ssa. - - * tree-dump.c: dump-tree-ssapre has to come before dump-tree-ssa - in the table, or else it'll never match. - -2002-09-09 Frank Ch. Eigler - - * tree-mudflap.c (mf_offset_expr_of_array_ref): Fold constants along - the way. - (mf_build_check_statement_for): Ditto. Flag new COMPONENT_REFs. - (mx_xfn_indirect_ref): Instrument COMPONENT_REFs specially. Tweak - ARRAY_REF instrumentation to reduce need of copying and recursion. - -2002-09-09 Diego Novillo - - * tree-ssa.c (analyze_rdefs): Disable uninitialized variable warnings. - -2002-09-09 Diego Novillo - - * Makefile.in (tree-ssa.o): Add dependency on tree-simple.h. - (tree-dfa.o): Add dependency on tree-simple.h and tree-inline.h. - (tree-alias-steen.o): Add dependency on c-common.h. - (tree-optimize.o): Add dependency on c-common.h. - - * c-simplify.c (deep_copy_node): Call walk_tree with mostly_copy_tree_r. - (mostly_copy_tree_r): Also copy flags from original tree. - (mark_not_simple_r): Call set_tree_flag. - - * tree-alias-steen.c: Include c-common.h. - - * tree-cfg.c (map_stmt_to_bb): Remove. - (block_invalidates_loop): Change return type to bool. - (create_loop_hdr): New function. - (create_bb): Call it. - (create_bb_ann): Return newly created annotation object. - (remove_bb_ann): Nullify loop_hdr annotation, if there is one. - (tree_delete_bb): Only remove basic block annotation from - executables statements. - (is_computed_goto): New function. - - * tree-dfa.c (pointer_refs): New file local variable. - (call_sites): New global variable. - (V_DEF, V_USE, V_PHI, V_PHI_ARG, E_FCALL, E_PHI, E_USE, E_KILL, - E_INJ): New global constants. - (M_DEFAULT, M_CLOBBER, M_MAY, M_PARTIAL, M_INITIAL, M_INDIRECT, - M_VOLATILE): New global constants. - (num_referenced_vars): New global variable. - (referenced_vars): Rename from referenced_symbols. Update all - users. - (clobber_vars_r): New function. - (add_default_defs): New function. - (add_call_site_clobbers): New function. - (add_ptr_may_refs): New function. - (add_phi_arg): New function. - (find_list_node): New function. - (remove_ref_from_list): Call it. - (add_ref_to_list_after): New function. - (is_pure_fcall): New function. - (fcall_takes_ref_args): New function. - (dump_referenced_vars): New function. - (debug_referenced_vars): New function. - (ref_type_name): New function. - (validate_ref_type): New function. - (debug_phi_args): Remove. - (dump_phi_args): Remove. - (add_referenced_var): Rename from add_ref_symbol. Update all - users. - (dump_ref): Rename from dump_varref. Update all users. - (debug_ref): Rename from debug_varref. Update all users. - (dump_ref_list): Rename from dump_varref_list. Update all users. - (dump_ref_array): Rename from dump_varref_array. Update all users. - (next_tree_ref_id): Rename from next_varref_id. Update all users. - - (tree_find_refs): Rename from tree_find_varrefs. Update all users. - Call add_default_defs. - Call add_call_site_clobbers. - Call add_ptr_may_refs. - Call dump_referenced_vars. - Create and destroy pointer_refs list. - - (find_refs_in_stmt): Set reference type to clobbering definition - for the ASM_OUTPUTS and ASM_CLOBBERS expressions of an ASM_STMT. - Set reference type to initial definition for the DECL_INITIAL node - of a DECL_STMT. - Clobber everything in CLEANUP_STMT nodes. - - (find_refs_in_expr): Re-write. - Recursively clobber every VAR_DECL contained in non SIMPLE nodes. - Mark indirect pointer references with M_INDIRECT flag. - Add pointer references to pointer_refs list. - Glob references to arrays and structures. - Add function call expressions to call_sites list. - - (empty_ref_list): Do nothing if the list is empty already. - (delete_ref_list): Ditto. - (create_ref): Add new argument ADD_TO_BB. - Set M_VOLATILE modifier if this is a reference to a volatile - variable. - Count number of incoming edges for V_PHI references before - initializing the V_PHI_ARG array. - Only add reference to basic block if ADD_TO_BB is true. - Set output reference for the parent expression for V_DEF - references. - (remove_tree_ann): Do nothing if the tree didn't have an - annotation. - - * tree-flow.h (enum treeref_type): Remove. Update all users. - (union varref_def): Ditto. - (tree_ref): Rename from varref. Update all users. - (V_DEF): Declare. - (V_USE): Declare. - (V_PHI): Declare. - (V_PHI_ARG): Declare. - (E_FCALL): Declare. - (E_PHI): Declare. - (E_USE): Declare. - (E_KILL): Declare. - (E_INJ): Declare. - (M_DEFAULT): Declare. - (M_CLOBBER): Declare. - (M_MAY): Declare. - (M_PARTIAL): Declare. - (M_INITIAL): Declare. - (M_INDIRECT): Declare. - (M_VOLATILE): Declare. - (struct tree_ref_common): Rename from treeref_common. Update all - users. - Change type of field 'type' to HOST_WIDE_INT. - Rename field 'sym' to 'var'. - (struct var_ref): Rename from varref. Update all users. - Join the structures varuse - and vardef into a single structure. - (struct expr_ref_common): Rename from exprref_common. Update all - users. - (struct expr_use): Rename from expruse. Update all users. - (struct expr_phi): Rename from exprphi. Update all users. - (union tree_ref_d): Rename from varref_def. Update all users. - (EXPRPHI_PHI_ARGS): Rename from EXPRPHI_PHI_CHAIN. Update all - users. - (struct tree_ann_d): Rename field 'compound_stmt' to - 'compound_parent'. - Add field 'output_ref'. - (enum tree_flags): New enum. - (TF_REFERENCED): New flag. - (phi_arg): Remove. - (get_num_phi_args): Remove. - (get_phi_arg): Remove. - - (struct vardef): Remove. Update all users. - (VARDEF_IMM_USES): Ditto. - (VARDEF_SAVE_CHAIN): Ditto. - (VARDEF_RUSES): Ditto. - (VARDEF_MARKED): Ditto. - (VARDEF_PHI_ARGS): Ditto. - (struct varuse): Ditto. - (VARUSE_IMM_RDEF): Ditto. - (VARUSE_RDEFS): Ditto. - (VARREF_ID): Ditto. - (VARREF_TYPE): Ditto. - (VARREF_BB): Ditto. - (VARREF_EXPR): Ditto. - (VARREF_OPERAND_P): Ditto. - (VARREF_STMT): Ditto. - (VARREF_SYM): Ditto. - (IS_DEFAULT_DEF): Ditto. - (IS_ARTIFICIAL_REF): Ditto. - (TREE_ANN): Ditto. - (BB_FOR_STMT): Ditto. - (TREE_CURRDEF): Ditto. - (TREE_REFS): Ditto. - (TREE_COMPOUND_STMT): Ditto. - (TREE_FLAGS): Ditto. - (BB_ANN): Ditto. - (BB_PARENT): Ditto. - (BB_REFS): Ditto. - (BB_PREV_CHAIN_P): Ditto. - (BB_BINDING_SCOPE): Ditto. - (BB_LOOP_HDR): Ditto. - (FOR_INIT_STMT_BB): Ditto. - (FOR_COND_BB): Ditto. - (FOR_EXPR_BB): Ditto. - (END_WHILE_BB): Ditto. - (DO_COND_BB): Ditto. - (BB_EMPTY_P): Ditto. - - (ref_type): New inline function. - (ref_var): New inline function. - (ref_stmt): New inline function. - (ref_expr): New inline function. - (ref_bb): New inline function. - (ref_id): New inline function. - (replace_ref_operand_with): New inline function. - (restore_ref_operand): New inline function. - (imm_uses): New inline function. - (save_chain): New inline function. - (set_save_chain): New inline function. - (reached_uses): New inline function. - (marked_with): New inline function. - (mark_def_with): New inline function. - (phi_args): New inline function. - (num_phi_args): New inline function. - (phi_arg): New inline function. - (imm_reaching_def): New inline function. - (set_imm_reaching_def): New inline function. - (imm_reaching_def_edge): New inline function. - (set_imm_reaching_def_edge): New inline function. - (reaching_defs): New inline function. - (tree_annotation): New inline function. - (has_annotation): New inline function. - (bb_for_stmt): New inline function. - (set_bb_for_stmt): New inline function. - (currdef_for): New inline function. - (set_currdef_for): New inline function. - (tree_refs): New inline function. - (add_tree_ref): New inline function. - (remove_tree_ref): New inline function. - (compound_parent): New inline function. - (set_compound_parent): New inline function. - (set_tree_flag): New inline function. - (clear_tree_flag): New inline function. - (tree_flags): New inline function. - (reset_tree_flags): New inline function. - (output_ref): New inline function. - (set_output_ref): New inline function. - (bb_annotation): New inline function. - (bb_parent): New inline function. - (set_bb_parent): New inline function. - (bb_refs): New inline function. - (remove_bb_ref): New inline function. - (prev_chain_p): New inline function. - (set_prev_chain_p): New inline function. - (binding_scope): New inline function. - (set_binding_scope): New inline function. - (header_blocks): New inline function. - (for_init_bb): New inline function. - (set_for_init_bb): New inline function. - (for_cond_bb): New inline function. - (set_for_cond_bb): New inline function. - (for_expr_bb): New inline function. - (set_for_expr_bb): New inline function. - (end_while_bb): New inline function. - (set_end_while_bb): New inline function. - (do_cond_bb): New inline function. - (set_do_cond_bb): New inline function. - (bb_empty_p): New inline function. - - (referenced_vars): Rename from referenced_symbols. Update all - users. - (num_referenced_vars): Declare. - (NREF_SYMBOLS): Remove. Update all users. - (REF_SYMBOL): Ditto. - (ADD_REF_SYMBOL): Ditto. - (referenced_var): New inline function. - (call_sites): Declare. - (next_tree_ref_id): Rename from next_varref_id. Update all users. - (is_computed_goto): Declare. - (is_pure_fcall): Declare. - (fcall_takes_ref_args): Declare. - (add_ref_to_list_after): Declare. - (find_list_node): Declare. - (ref_type_name): Declare. - (validate_ref_type): Declare. - - * tree-optimize.c: Include c-common.h. - (optimize_function_tree): Store DECL_SAVED_TREE in a local - variable. - - * tree-ssa-ccp.c (cp_lattice_meet): New function. - (visit_phi_node): Call it. - (add_outgoing_control_edges): New function. - (visit_expression_for): Call it. - Don't handle static initializers. - Handle computed gotos. - (add_control_edge): New function. - (visit_condexpr_for, simulate_block, add_outgoing_control_edges): Call - it. - (simulate_def_use_chains): Only look at unmodified V_USE references. - (ssa_ccp_substitute_constants): Ditto. - (evaluate_expr): Ditto. - (initialize): Set initial value for incoming parameters and globals - to VARYING. - Set initial value for initialized static variables to VARYING, - unless the variable is read-only. - (set_lattice_value): Don't special case globals, volatiles and - variables with their address taken. - - * tree-ssa.c: Include tree-simple.h. - (tree_build_ssa): Don't add default definitions. - (insert_phi_terms): Add new PHI nodes at the beginning of the list - of references for the basic block. - (search_fud_chains): Add def-def chains for non-killing - definitions. - (delete_ssa): Remove list call_sites. - Set num_referenced_vars to 0. - Set referenced_vars to NULL. - (follow_chain): Follow def-def chains for non-killing definitions. - (is_upward_exposed): Change return type to bool. - (add_phi_arg): Remove. - -2002-09-06 Frank Ch. Eigler - - * tree-mudflap.c (deferred_static_decl*): Correct GTY markup. - (mudflap_enqueue_decl): Correct iteration bounds. - (mf_init_extern_trees): Add more constness to mf_cache_structptr_type. - (mf_offset_expr_of_array_ref): Remove excess mx_flagging. save_expr - array subscripts. - (mf_build_check_statement_for): Reorganize to take explicit - check-base/size arguments, in addition to value argument. save_expr - array subscripts. Copy value/base/size subtrees. - (mx_xfn_indirect_ref): Support marking of subtrees for nontraversal. - Track source line numbers more aggressively. For arrays, check bounds - from base through indexed element, not just the indexed element. - Use nontraversal flagging to eliminate some excess instrumentation. - (mf_xform_derefs): Support nontraversal by a hash table. - (*): Remove "{{{"/"}}}" folding marks. - -2002-09-02 Daniel Berlin - - * tree-alias-common.[ch]: New files. - * tree-alias-steen.[ch]: Split out common stuff into - tree-alias-common.[ch]. - * c-config-lang.in: Modify to use tree-alias-common.[ch] instead of - tree-alias-steen, since this is where the GTY'd stuff is now. - * Makefile.in: Add dependencies for tree-alias-common.[ch]. - -2002-09-03 Diego Novillo - - * c-simplify.c (simplify_goto_stmt): New function. - (simplify_stmt): Call it. - * tree-simple.c: Document grammar for GOTO_STMT nodes. - (rationalize_compound_expr): Wrap it with #if 0/#endif. - (get_base_symbol): Minor comment fixup. - -2002-09-03 Frank Ch. Eigler - - * gcc.c (MFWRAP_SPEC): Add --wrap=alloca. - -2002-09-01 Diego Novillo - - * c-simplify.c (simplify_stmt): Mark CLEANUP_STMTs and ASM_STMTs - not SIMPLE. - (simplify_for_stmt): Do not allow expression sequences in - FOR_INIT_STMT and FOR_EXPR nodes. - * tree-simple.c: Document difference with original SIMPLE grammar. - -2002-08-31 Frank Ch. Eigler - - * tree-mudflap.c (mf_build_check_statement_for): Tolerate dereference - of void pointers. - (mx_register_decl): Correct typo in below patch. - -2002-08-30 Graydon Hoare - - * tree-mudflap.c (mx_register_decl): Mark declarations as - TREE_ADDRESSABLE when mudflap decides to register them. - -2002-08-29 Graydon Hoare - - * tree-mudflap.c (mx_xfn_indirect_ref): Rewrite array references as - pointer dereferences. - (struct mf_xform_decls_data): New member: param_decls. - (mx_register_decl): New function. - (mx_xfn_xform_decls): Factor code out into mx_register_decl. - Register live parameters with mudflap. - (mx_xfn_find_addrof): Notice references to fields of structures - and function parameters. - -2002-08-29 Frank Ch. Eigler - - * c-pretty-print.c (dump_c_tree): Detect loops in statement chains - using a hash table to track visited status. - * Makefile.in: Add hashtab.h dependency. - -2002-08-28 Frank Ch. Eigler - - * tree-mudflap.c (mudflap_enqueue_constant): Register non-string - constants also. - (mf_build_check_statement_for): Include pushlevel/pushdecl/poplevel - for local variables. - -2002-08-27 Frank Ch. Eigler - - Better static registration: - * varasm.c (make_decl_rtl): Handle DECL_RTL_SET_P case for - mudflap static registration. - * tree-mudflap.c (mudflap_enqueue_decl): Rewrite to handle - deferred statics. - (mudflap_finish_file): Call above fn back for deferred statics. - - Cleanup: - * tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree): - Reorganize output_buffer reuse mechanism. - (mf_build_check_statement_for): Set TREE_SIDE_EFFECTS. - (mx_xfn_indirect_ref): Correct file/line collection tests. - - Dynamic linking support: - * gcc.c (MFWRAP_SPEC): Make conditional on -static. Add the - newer wrapped functions dlopen/mmap/munmap. - (MFLIB_SPEC): Be sensitive to -static. Partial support for - dynamic linking. - -2002-08-26 Diego Novillo - - * Makefile.in (tree-ssa.o): Add dependency on ggc.h - (c-simplify.o): Add dependency on langhooks-def.h - * c-simplify.c: Include langhooks-def.h - (simplify_function_tree): Do nothing if the front end does not - support simplification. - - * tree-flow.h (struct vardef): Remove fields 'phi_chain' and - 'phi_chain_bb'. - Add field 'phi_args'. - (VARDEF_PHI_CHAIN): Remove. Update all users. - (VARDEF_PHI_CHAIN_BB): Remove. Update all users. - (VARDEF_PHI_ARGS): Define. - (struct varuse): Rename field 'chain' to 'imm_rdef'. Update all - users. - (VARUSE_IMM_RDEF): Rename from VARUSE_CHAIN. Update all users. - (phi_arg): New structure. - (get_num_phi_args): New function. - (get_phi_arg): New function. - (set_phi_arg): New function. - (add_phi_arg): New function. - (debug_phi_args): Declare. - (dump_phi_args): Declare. - * tree-dfa.c (create_ref): Remove initialization of - VARDEF_PHI_CHAIN and VARDEF_PHI_CHAIN_BB. - Initialize array VARDEF_PHI_ARGS. - (dump_varref): Call dump_phi_args. - (dump_phi_args): New function. - (debug_phi_args): New function. - * tree-ssa-ccp.c (PHI_PARMS): Remove. - (EIE): Remove. - (visit_phi_node): Get the argument's edge directly from the - argument instead of calling find_edge. - (initialize): Cast call to NUM_EDGES to unsigned. - * tree-ssa-pre.c: Update uses of VARDEF_PHI_CHAIN, - VARDEF_PHI_CHAIN_BB and VARUSE_CHAIN everywhere. - * tree-ssa.c: Ditto. - Include ggc.h. - (search_fud_chains): Call add_phi_arg to add arguments to each PHI - node. - (tree_ssa_remove_phi_alternative): Call set_phi_arg to switch the - last element with the element being removed. - -2002-08-26 Diego Novillo - - * c-simplify.c (mostly_copy_tree_r): Unshare STMT_EXPR - nodes. - -2002-08-25 Diego Novillo - - * tree-dfa.c (find_refs_in_stmt): Replace calls to - RETURN_EXPR with RETURN_STMT_EXPR. - * c-simplify.c (simplify_return_stmt): Ditto. - (deep_copy_node): Ditto. - * c-pretty-print.c (dump_c_node): Ditto. - -2002-08-24 Diego Novillo - - * c-pretty-print.c: Add `break' after calls to NIY in - switch statements. - -2002-08-23 Jeffrey A Law (law@redhat.com) - - * tree-ssa-ccp.c (tree_ssa_ccp): Remove #if 0 that accidentally - got checked in. Cleanup the cfg to remove unreachable blocks - discovered by CCP. - - * basic-block.h (EDGE_EXECUTABLE): New edge flag. - - * cfganal.c (find_edge): New function. - - * ssa-ccp.c: Convert to use EDGE_EXECUTABLE bit in the - edge flags rather than a bitmap. Convert edge worklist - into a varray. Avoids expensive find_index_edge calls. - * tree-ssa-ccp.c: Likewise. - - * tree-flow.h (tree_ssa_remove_phi_alternative): Declare. - * tree-ssa.c (tree_ssa_remove_phi_alternative): New function. - * tree-ssa-ccp.c (optimize_unexecutable_edges): Remove - PHI alternatives for unexecutable edges. Also remove - unexecutable edges from the CFG. - -2002-08-22 Jeffrey A Law (law@redhat.com) - - * Makefile.in (tree-optimize.o): Depend on tree-dchain.o - * tree-optimize.c: Include tree-dchain.h. - (optimize_function_tree): Unconditionally build and tear down - the backpointers for the statement chain. - -2002-08-22 Diego Novillo - - * tree-dfa.c (find_refs_in_stmt): Look for VARUSE references in - initialization expressions. - (find_refs_in_expr): Reformat. - (remove_ref_from_list): Optimize for the common case of removing - the head or the tail of the list. - (add_ref_to_list_end): Reformat comment. - (create_ref): Store the reference to LHS of assignment expressions. - (dump_varref): Also dump immediate uses of PHI nodes. - * tree-flow.h (IS_GHOST_DEF): Rename to IS_DEFAULT_DEF. Update all - callers everywhere. - (struct tree_ann_def): Update comments for field 'currdef'. - * tree-ssa-ccp.c (ssa_edges): Change type to ref_list. - (SSA_NAME): Remove. - (initialize): New function - (finalize): New function. - (visit_expression): Rename to visit_expression_for. Update all - callers. - (visit_condexpr_for): New function. - (visit_assignment): Rename to visit_assignment_for. Update all - callers. - (examine_flow_edges): Rename to simulate_block. Update all - callers. - (follow_def_use_chains): Rename to simulate_def_use_chains. Update - all callers. - (evaluate_expr_for): Rename to evaluate_expr. Change argument to - 'tree'. - (set_lattice_value): New function. - (tree_ssa_ccp): Change main loop to visit flow_edges and ssa_edges - alternately. - (visit_phi_node): Do not set the lattice value to UNDEFINED when we - find a non-executable edge. - (visit_expression_for): Default definitions for PARM_DECLs are - assigned a VARYING value. - Default definitions for any other local variables are assigned an - UNDEFINED value. - Clobber VARDEFs that are not the LHS of an assignment. - Clobber VARDEFs that initialize non-const static variables. - * tree-ssa.c (search_fud_chains): Set up def-use edges for PHI - nodes and regular definitions. - - * tree.c (simple_cst_equal): Call simple_cst_list_equal to compare - CONSTRUCTOR_ELTS pointers. - -2002-08-22 Diego Novillo - - * c-pretty-print.c (buffer): New file local variable. - (initialized): New file local variable. - (print_c_tree): Don't call init_output_buffer. Call - maybe_init_pretty_print. - (print_c_node): Ditto. - (print_c_node_brief): Ditto. - (maybe_init_pretty_print): New function. - * tree-mudflap.c (mf_varname_tree): Only call init_output_buffer - once. Call output_clear_message_text before returning. - -2002-08-21 Frank Ch. Eigler - - Support source-file/line coordinates in check/violation messages. - * tree-mudflap.c (mf_init_extern_trees): Add new "location" formal - arg to __mf_check. - (mf_file_function_line_tree): New function to build an actual location - string. - (build_check_statement_for): Call it / pass it. - (mx_xfn_indirect_ref): Track source file/line location via - STMT_LINENO, FILE_STMT, EXPR_WITH_FILE_LOCATION traversal memos. - -2002-08-21 Daniel Berlin - - * dominance.c: Cache immediate dominators. - -2002-08-20 Daniel Berlin - - * tree-alias-steen.h (struct tree_alias_ops): Add flag for - interprocedural. - - * tree-alias-steen.c (steen_alias_ops): Set interprocedural to 0 - for now. - (intra_function_call): New function to handle intraprocedural calling. - (finc_func_aliases): Use it. - Handle *x = *y, *x = &y, and *x = (cast) y. - (display_points_to_set_helper): New function, split from ... - (display_points_to_set): Here. - (create_alias_vars): Try to print all alias vars we find in the - alias_vars array, rather than just those that are linked directly to - trees. - Clear arrays when we finish if we aren't interprocedural. - -2002-08-20 Frank Ch. Eigler - - static object registration support: - * tree-mudflap.c (mudflap_enqueue_decl, mudflap_enqueue_constant): - Replace stubs with real code. - (mf_enqueue_register_call): New function to generate asm-object - call to __mf_register. - (mf_flush_enqueued_calls): New function to emit global ctor function - with enqueued __mf_register calls. - (mf_varname_tree): Tolerate being called from non-function context. - * c-objc-common.c: #include . - - gengtypes support for mudflap: - * Makefile.in (GTFILES): Include tree-mudflap.c. - (gt-tree-mudflap.h): New target. - * tree-mudflap.c: Annotate global tree nodes with GTY(()). - * tree-nomudflap.c: Add dummy ggc root table. - -2002-08-19 Diego Novillo - - * tree-dfa.c (find_refs_in_expr): If the current sub-expression is - not SIMPLE, mark its parent. - (create_ref): If the parent expression is not SIMPLE, create - VARDEFs regardless of the original reference type. - - * tree-ssa-ccp.c (widen_bitfield): New function. - (evaluate_expr_for): Call it. - -2002-08-18 Diego Novillo - - * tree-ssa-ccp.c (evaluate_expr_for): Fix thinko in - 2002-08-17 patch. - -2002-08-17 Diego Novillo - - * tree-ssa-ccp.c (evaluate_expr_for): keep VARREF_SYM in a local - variable. - -2002-08-16 Diego Novillo - - * basic-block.h (BB_CONTROL_EXPR): Update value. - (BB_LOOP_CONTROL_EXPR): Define. - (BB_CONTROL_ENTRY): Update value. - * tree-cfg.c (make_for_stmt_blocks): Flag header blocks withh - BB_LOOP_CONTROL_EXPR. - (make_while_stmt_blocks): Ditto. - (make_do_stmt_blocks): Ditto. - (tree_delete_bb): Update annotations in the loop entry block when - removing one of the loop expression blocks. - - * tree-dfa.c (tree_find_varrefs): Disregard empty blocks. - (find_refs_in_stmt): Handle all the loop expression blocks in - FOR_STMT and DO_STMT nodes. - (find_refs_in_expr): Change first argument to tree *. Update all - callers. - Force all references to be definitions when the expression is not - in SIMPLE form. - Also create references for compound variables and array references. - Not just their individual components. - Always use the original parent expression when making recursive - calls. - (create_ref): Add new argument operand_p. Update all callers. - (remove_tree_ann): New function. - (dump_varref): Don't assume that the referenced symbol is a _DECL - node. - * tree-flow.h (treeref_common): Add field operand_p. - (VARREF_OPERAND_P): Define. - (BB_EMPTY_P): Define. - (remove_tree_ann): Declare. - (create_ref): Add new argument operand_p. - * tree-simple.c (get_base_symbol): New function. - * tree-simple.h (get_base_symbol): Declare. - * tree-ssa-ccp.c (visit_assignment): Call it. - (ssa_ccp_substitute_constants): Use VARREF_OPERAND_P to replace - values into the expression. - (evaluate_expr_for): Ditto. - Do not try to evaluate the expression if the reference is not of - the same type as the expression. - After evaluation, restore the expression to its original form. - * tree-ssa-pre.c (insert_occ_in_preorder_dt_order_): Update calls - to create_ref. - (finalize_): Ditto. - (expr_phi_insertion): Ditto. - * tree-ssa.c (tree_build_ssa): Ditto. - (insert_phi_terms): Ditto. - (delete_ssa): Call remove_tree_ann. - -2002-08-15 Diego Novillo - - * c-pretty-print.c: Move extern definitions to diagnostic.h. - (print_c_node_brief): New function. - (debug_c_node_brief): New function. - (debug_c_node): Add option for showing brief versions of statement - nodes. Update all callers. - (print_declaration): Ditto. - * c-simplify.c (simplify_function_tree): Add newline to debug - output. - * c-tree.h (print_c_node_brief): Declare. - (debug_c_node_brief): Declare. - * tree-cfg.c: Call print_c_node_brief in debugging otuput. - * tree-mudflap.c (dump_c_node): Remove extern declaration. - (mf_varname_tree): Update call to dump_c_node. - -2002-08-15 Daniel Berlin - - * tree-cfg.c (find_expr_in_tree_helper): Renamed from find_expr_in_tree. - (find_expr_in_tree): Redone. - -2002-08-15 Daniel Berlin - - * tree-cfg.c (insert_before_ctrl_stmt): Fix insertion for various - parts of for loop. - - * tree-ssa-pre.c (finalize_1): Set EXPR_STMT type to type of - expression in it. - -2002-08-14 Frank Ch. Eigler - - * gcc.c (LINK_COMMAND_SPEC): Tweak placement of %(mflib). - -2002-08-14 Diego Novillo - - * tree-simple.h (is_simple_decl_stmt): Declare. - -2002-08-13 Frank Ch. Eigler - - * gcc.c (MFWRAP_SPEC, MFLIB_SPEC): New macros, splitting MFLIB_SPEC. - (mfwrap_spec, mflib_spec): Define corresponding vars. - (static_specs): Define correponding spec aliases. - (LINK_COMMAND_SPEC): Include -fmudflap refs to new spec aliases. - (cpp_unique_options): Move -fmudflap MFCPP_SPEC clause here. - (cc1_options): Move -fmudflap MFCC1_SPEC clause here. - (MFCC1_SPEC, MFCPP_SPEC, MFLIB_SPEC): Remove macros and uses. - -2002-08-13 Graydon Hoare - - * tree-mudflap.c (mf_build_check_statement_for): Factor code out of - mx_xfn_indirect_ref for use in ARRAY_REF case. - (mf_build_check_statement_for): Check size of underlying object - rather than size of pointer. - (mx_xfn_indirect_ref): Check ARRAY_REF expressions. - (mf_offset_expr_of_array_ref): New function to calculate array ref - offsets. - -2002-08-13 Diego Novillo - - * tree-simple.c (is_simple_condexpr): Update comment. - * tree-ssa-ccp.c (ssa_ccp_substitute_constants): Add debugging code. - -2002-08-12 Jason Merrill - - * c-typeck.c (build_component_ref): Don't add a NON_LVALUE_EXPR - in C99 mode. - - * c-simplify.c (simplify_expr): Always simplify. Loop if *expr_p - changed. - (simplify_addr_expr): Just replace *expr_p if we have a '&*'. - * tree-simple.c (is_simplifiable_builtin): Add more tree codes. - -2002-08-11 Diego Novillo - - * c-simplify.c: Fix typo. Substitute CHECKING with ENABLE_CHECKING. - * tree-cfg.c: Ditto. - * tree-dfa.c: Ditto. - * tree-ssa-ccp.c: Ditto. - * tree-ssa.c: Ditto. - -2002-08-11 Diego Novillo - - * tree-dfa.c (find_refs_in_expr): Use the given ref_type for some unary - expressions. - (create_ref): Insert ghost definitions at the beginning of the - basic block. - (find_expr_in_tree): Ignore IDENTIFIER_NODE. - * tree-flow.h (treeref_common): Move the id field to the end of the - structure. - (IS_GHOST_DEF): Redefine to return non zero for definitions - without an associated expression in basic block 0. - * tree-ssa-ccp.c (tree_ssa_ccp): Use last_basic_block to allocate - executable_blocks. - (visit_expression): Set the lattice value for ghost definitions to - VARYING. - (examine_flow_edges): Update comments. - * tree-ssa.c (tree_build_ssa): Create ghost definitions in basic - block 0. - (insert_phi_terms): Don't ignore ghost definitions. - - * c-simplify.c (simplify_function_tree): Return 0 if the function's - body is not a COMPOUND_STMT. - Return 0 if simplification failed. - (simplify_expr): Change to return int. Return non zero if - simplification was successful. - (c_simplify_expr): Add default case to avoid compile time warnings. - (create_tmp_alias_var): Reformat comment. - * tree-simple.h (simplify_expr): Change return type to int. - - * c-simplify.c: Guard consistency checks with #if defined CHECKING - everywhere. - * tree-cfg.c: Ditto. - * tree-dfa.c: Ditto. - * tree-ssa-ccp.c: Ditto. - * tree-ssa.c: Ditto. - - * c-simplify.c: Include hard-reg-set.h, basic-block.h and - tree-flow.h. - (mark_not_simple_r): New function. - (simplify_expr): Temporarily mark VA_ARG_EXPR and BIT_FIELD_REF - trees as not simplifiable. - (simplify_call_expr): If the builtin cannot be simplified, flag it. - * Makefile.in (c-simplify.o): Update dependencies. - * tree-dfa.c (create_ref): Variable references inside - non-simplifiable expressions are always considered definitions. - * tree-flow.h (TF_NOT_SIMPLE): New flag. - * tree-simple.c (is_simplifiable_builtin): Update comments. - - * c-pretty-print.c (dump_c_node): Unparse anonymous structures and - unions. - Change rendering for SAVE_EXPR and BIT_FIELD_REF. - - * Makefile.in (tree-mudflap.o, tree-nomudflap.o): Add. - -2002-08-11 Frank Ch. Eigler - - Prototype -fmudflap support. - * Makefile.in (C_AND_OBJC_OBJS): Add tree-mudflap.o. - (OBJS): Add tree-nomudflap.o. - * flags.h (flag_mudflap): New flag. - * toplev.c: Map "-fmudflap" to that flag. - * c-decl.c (c_expand_body): Call mudflap_c_function if flag_mudflap. - * c-objc-common.c (c_objc_common_finish_file): Add mudflap hook. - * varasm.c (make_decl_rtl): Add mudflap hook. - (output_constant_def_contents): Ditto. - * tree-mudflap.c: New file: implement mudflap instrumentation. - * tree-nomudflap.c: New file: stub functions for non-C frontends. - * tree-mudflap.h: New file: define exported functions. - * gcc.c (MFLIB_SPEC, MFCC1_SPEC, MFCPP_SPEC): Add general - -fmudflap spec mappings. - * c-simplify.c (simplify_stmt): Stub: handle CLEANUP_STMT nodes. - * tree-dfa.c (find_refs_in_stmt): Ditto. - * c-pretty-print.c (dump_c_node): Ditto. - (print_declaration): Handle "extern" decls. Handle arrays with - indefinite sizes. - * tree-simple.h (is_simple_stmt, is_simple_compstmt): Remove decls. - -2002-08-11 Jason Merrill - - * c-simplify.c (simplify_self_mod_expr): Unshare the lhs before - using it again. - (simplify_compound_lval): Don't unshare. - - * c-simplify.c (c_simplify_expr): Check statement_code_p. - - * c-simplify.c (maybe_fixup_loop_cond): Move to cp/cp-simplify.c. - (simplify_for_stmt): Don't call it. - (simplify_while_stmt): Don't call it. - -2002-08-11 Diego Novillo - - * c-simplify.c (simplify_compound_lval): Use mostly_copy_tree_r. - -2002-08-09 Jason Merrill - - * langhooks-def.h: Replace the simplify_function_tree hook - with a simplify_expr hook. - * langhooks.h: Likewise. - * langhooks.c: Replace lhd_simplify_function_tree with - lhd_simplify_expr. - * c-lang.c (LANG_HOOKS_SIMPLIFY_FUNCTION_TREE): Don't define. - (LANG_HOOKS_SIMPLIFY_EXPR): Define. - * c-decl.c (c_expand_body): De-hook simplify_function_tree. - * c-common.h: Declare c_simplify_expr. - * c-simplify.c (simplify_function_tree): Rename from - c_simplify_function_tree. Call simplify_expr instead of - simplify_stmt. - (c_simplify_expr): Split out from... - (simplify_expr): ...here. No longer static. Call langhook. - (is_simple_decl_stmt): Move here from tree-simple.c. - * tree-simple.c: Don't include c-tree.h. - (is_simple_stmt, is_simple_compstmt): Remove. - (is_simple_decl_stmt): Move to c-simplify.c. - * tree.h: Declare simplify_function_tree. - * tree-simple.h: Declare simplify_expr, add_tree. - - * tree-simple.c (rationalize_compound_expr): New fn. - -2002-08-07 Diego Novillo - - * basic-block.h (EDGE_TRUE_VALUE): Define. - (EDGE_FALSE_VALUE): Define. - * tree-cfg.c: Include c-tree.h. - (make_for_stmt_edges): Call simple_cst_equal to determine infinite - and zero iteration loops. - Set EDGE_TRUE_VALUE and EDGE_FALSE_VALUE to edges coming out of - predicate block. - (make_while_stmt_edges): Ditto. - (make_do_stmt_edges): Ditto. - (make_if_stmt_edges): Set EDGE_TRUE_VALUE and EDGE_FALSE_VALUE to - edges coming out of predicate block. - - * c-simplify.c (simplify_compound_lval): Unshare the compound - reference before simplification. - - * tree-cfg.c (insert_before_ctrl_stmt): Call print_c_node instead of - print_node_brief. - (insert_before_normal_stmt): Ditto. - (insert_after_ctrl_stmt): Ditto. - (insert_after_normal_stmt): Ditto. - (insert_after_loop_body): Ditto. - (replace_expr_in_tree): Ditto. - (tree_dump_bb): Ditto. - - * tree-dfa.c: Include c-tree.h - (next_varref_id): New global variable. - (tree_find_varrefs): Initialize it to 0. - (create_ref): Increment it after creating a new reference. Store - it in ref.common.id. - Add the new reference to the list of references for the containing - expression. - (dump_varref): Show the reference ID. - * tree-flow.h (treeref_common): Add field 'id'. - (VARREF_ID): Define. - - * tree-dump.c (dump_files): Re-order dump files. - * tree.h (tree_dump_index): Ditto. - - * tree-optimize.c (optimize_function_tree): Remove blank lines. - - * tree-simple.c: Remove unary operator '!' from grammar. - - * tree-flow.h (tree_ann_def): Add field 'flags'. - (TF_FOLD): Define. - (TREE_ANN): Re-define into an lvalue. - (BB_FOR_STMT): Ditto. - (TREE_CURRDEF): Ditto. - (next_varref_id): Declare. - * tree-ssa-ccp.c: Include tree-simple.h - (ssa_edges): Convert sbitmap into varray_type. Update all uses. - (decl_map): Remove. - (SSA_NAME): Use VARREF_ID instead of DECL_UID. - (visit_assignment): New function. - (evaluate_expr_for): New function. - (dump_lattice_value): New function. - (tree_ssa_ccp): Add debugging dumps. - Remove #if 0 code everywhere. - (visit_phi_node): Add debugging dumps. - Also visit PHI arguments. - Remove basic block argument - (visit_expression): Re-implement. - (examine_flow_edges): Add debugging dumps. - (ssa_ccp_substitute_constants): Add debugging dumps. - Update comments. - Mark and fold expressions with substituted constants. - * tree-ssa.c (search_fud_chains): Don't check if BB_REFS(bb) is - empty before iterating. - Add comment explaining how we chain PHI node arguments to their - originating basic block. - - * Makefile.in (tree-cfg.o, tree-dfa.o, tree-ssa-ccp.o): Update - dependencies. - -2002-07-29 Daniel Berlin - - * tree-ssa-pre.c (tree_perform_ssapre): Ben forgot to add a - dump_begin call when he removed the before dump. - -2002-07-24 Daniel Berlin - - * tree-alias-ecr.c (ECR_new_with_type): Use correct number in mapping. - -2002-07-23 Daniel Berlin - - * c-simplify.c (simplify_for_stmt): Deep copy the result of the - tail_expression, so it's unshared. - -2002-07-23 Daniel Berlin - - * tree-flow.h: Add prototype for create_alias_vars. - - * tree-alias-steen.c (display_points_to_set): New function. - (init_alias_vars): Display points to sets when we are done. - - * disjoint-set.h (disjoint_set_def): ptr_alias to ECR_def so that - we mark parent properly. - -2002-07-24 Diego Novillo - - * Makefile.in (GTFILES): Move tree-alias-type.[ch], - tree-alias-ecr.[ch], tree-alias-steen.[ch] from ... - * c-config-lang.in (gtfiles): ... here. - - * tree-simple.c (is_simplifiable_builtin): Replace - BUILT_IN_VARARGS_START with BUILT_IN_VA_START. - -2002-07-23 Andreas Jaeger - - * tree-ssa-pre.c (hash_expr_tree): Remove. - - * c-call-graph.c (write_dtd): Remove. - - * tree-ssa.c (delete_refs): Remove. - -2002-07-23 Andreas Jaeger - - * gengtype.c (open_base_files): Add tree.h. - - * tree-alias-type.h: Remove inclusion of tree.h. - - * tree-alias-steen.c: Include tree.h. - Add prototype for create_fun_alias_var_ptf. - - * tree-alias-ecr.c: Add prototype for ECR_add_pending. - - * tree-ssa-pre.c (calculate_preorder): Remove unused variables. - - * tree-simple.c: Include expr.h and rtl.h for prototypes. - - * tree-optimize.c: Include tree-alias-steen.h for prototypes. - - * Makefile.in (tree-optimize.o): Add tree-alias-steen.h. - (tree-simple.o): Add expr.h and rtl.h. - (tree-alias-steen.o): Add tree.h. - - * diagnostic.h: Add declaration of debug_output_buffer. - - * c-call-graph.c (construct_call_graph): Make static to follow - declaration. - (construct_call_graph): Use #if 0 instead of C++ comments to - disable code. - -2002-07-20 Andreas Jaeger - - * doc/invoke.texi (Option Summary): Fix syntax. - -2002-07-19 Jason Merrill - - * c-simplify.c (simplify_return_stmt): Do simplify a returned - expression in a void function. - - * c-simplify.c (simplify_stmt_expr): Handle C++ return semantics. - -2002-07-19 Jason Merrill - - * c-pretty-print.c (dump_c_node) [TARGET_EXPR]: Handle. - [COND_EXPR]: Print a returned expression in a void function. - -2002-07-19 Ben Elliston - - * tree-ssa-pre.c (tree_perform_ssapre): Don't dump the original - tree before applying this optimisation. - - * flags.h (flag_dump_tree_all_ssa): New flag. - * toplev.c (flag_dump_tree_all_ssa): New flag. - (f_options): Add "dump-tree-all-ssa" option. - (process_options): Process flag_dump_tree_all_ssa. - * tree.h (dump_enable_all_ssa): Declare. - * tree-dump.c (dump_enable_all_ssa): New function. - * doc/invoke.texi (Option Summary): Add -fdump-tree-all-ssa and - -fdump-tree-ssapre options. - (Debugging Options): Describe in more detail. - * c-simplify.c (c_simplify_function_tree): Dump the original tree - only if a TDI_original dump is requested, rather than TDI_simple. - - * tree-dump.c (dump_begin): Include phase number in dump filename. - -2002-07-18 Ben Elliston - - * tree-dump.c (dump_files): Rename "unparse" to "raw". - * tree.h (TDF_UNPARSE): Rename from this .. - (TDF_RAW): .. to this. - * tree-ssa-pre.c (tree_perform_ssapre): Use TDF_RAW and invert the - logical sense of this flag. - * tree-ssa-ccp.c (tree_ssa_ccp): Likewise. - * c-simplify.c (c_simplify_function_tree): Likewise. - -2002-07-18 Daniel Berlin - - * tree-ssa-pre.c (calculate_preorder): New function. - (tree_perform_ssapre): Use it, rather than - flow_compute_preorder_tranversal, which seems to not do - what we want. - -2002-07-18 Daniel Berlin - - * tree-alias-type.c: Move gt-tree-alias-type include to end of file. - - * tree-alias-steen.c: Move gt-tree-alias-steen include to end of file. - -2002-07-18 Daniel Berlin - - * gengtype.c (get_base_file_bitmap): Mark tree-alias-* and - disjoint-set* as c/c++/objc files only. - - * Makefile.in (gt-tree-alias-type.h): Add. - (tree-alias-type.o): Add dependency on gt-tree-alias-type.h. - - * tree-alias-type.c: Include gt-tree-alias-type.h. - (alias_bottom): Add a GTY marked version of alias_bottom here. - - * tree-alias-type.h: Remove the GTY marker from alias_bottom. - -2002-07-17 Daniel Berlin - - * tree-alias-ecr.c (ECR_union_pending_sets): Only clear bitmap if - it's not NULL. - -2002-07-16 Jason Merrill - - * c-simplify.c (add_tree): Build an EXPR_STMT immediately. - (convert_to_stmt_chain): Remove. - (simplify_stmt, simplify_for_stmt, simplify_while_stmt, - simplify_do_stmt, simplify_expr_wfl, tail_expression): Adjust. - -2002-07-17 Daniel Berlin - - * tree-alias-ecr.c: New file. Equivalence Class Representation. - - * tree-alias-steen.c: New file. Steengaard Alias Analysis. - - * disjoint-set.c: New file. Disjoint set data structure. - - * tree-alias-type.c: New file. Alias types. - - * c-simplify.c (create_tmp_alias_var): New function, like - create_tmp_var, but doesn't add it to the current binding. - - * tree-simple.h: Prototype for create_tmp_alias_var. - - * tree-optimize.c (build_tree_ssa): Create alias variables, if - requested. - - * flags.h: Add flag_tree_points_to. - - * toplev.c: Ditto. - - * gengtype.c (open_base_files): Add disjoint-set.h, - tree-alias-ecr.h, tree-alias-type.h, tree-flow.h. - - * Makefile.in (C_AND_OBJC_OBJS): Add disjoint-set.o, - tree-alias-ecr.o, tree-alias-type.o, tree-alias-steen.o. - (tree-alias-steen.o): Add dependencies. - (tree-alias-ecr.o): Ditto. - (tree-alias-type.o): Ditto. - (disjoint-set.o): Ditto. - -2002-07-10 Daniel Berlin - Diego Novillo - - * Makefile.in (C_AND_OBJC_OBJS): Add tree-ssa-ccp.o - * flags.h (flag_tree_ssa_ccp): Declare. - * fold-const.c (eval_subst): Make extern. - * toplev.c (flag_tree_ssa_ccp): Define. - (f_options): Document -ftree-ssa-ccp. - * tree-dump.c (dump_files): Add -fdump-tree-ccp. - * tree-flow.h (tree_perform_ssapre): Move declaration ... - * tree-optimize.h: ... here. - (tree_ssa_ccp): Declare. - * tree-optimize.c (optimize_function_tree): Call tree_ssa_ccp. - * tree-ssa-ccp.c: New file. - * tree.c (next_decl_uid): Remove static declaration. - * tree.h (next_decl_uid): Declare. - (tree_dump_index): Add TDI_ccp. - * cp/Make-lang.in (CXX_C_OBJS): Add tree-ssa-ccp.o. - * doc/invoke.texi: Document -ftree-ssa-pre and -ftree-ssa-ccp. - -2002-07-09 Daniel Berlin - - s/varrays of refs/ref_list of refs/g - - * tree-flow.h: Add ref_list structure. - Add prototypes for ref_list functions. - (FOR_EACH_REF, FOR_EACH_REF_REV): New macros to iterate through - ref lists. - * tree-cfg.c, tree-ssa.c, tree-ssa-pre.c: Update all uses. - - * tree-dfa.c (create_ref_list): New function. - (delete_ref_list): Ditto. - (empty_ref_list): Ditto. - (add_ref_to_list_end): Ditto. - (add_ref_to_list_begin): Ditto. - (remove_ref_from_list): Ditto. - -2002-07-04 Diego Novillo - - * tree-simple.c (is_simplifiable_builtin): Don't simplify target - builtins. - -2002-07-03 Diego Novillo - - * c-simplify.c (simplify_decl_stmt): Unshare the - initializer nodes before simplification. - -2002-06-29 Aldy Hernandez - Diego Novillo - - * c-simplify.c (simplify_call_expr): Do not bail on all builtins. - (is_simple_call_expr): Same. - (simplify_addr_expr): New function. - (simplify_expr): Call it. - - * tree-simple.c (is_simplifiable_builtin): New. - (is_simple_compound_lval): Do not bail on INDIRECT_REF. - - * tree-simple.h: New prototype for is_simplifiable_builtin. - -2002-06-26 Daniel Berlin - - * tree-ssa.c (tree_build_ssa): Call free_dominance_info, not - free, on idom. - - * tree-ssa-pre.c (compute_domchildren): Update to use new - dominance_info structure, rather than idom array. - (tree_perform_ssapre): Don't forget to free the dominance info. - - s/VARRAY_FREE/VARRAY_CLEAR/g now that VARRAY's are ggc allocated. - -2002-06-24 Diego Novillo - - * tree-ssa.c (build_fud_chains): Use dominance_info instead of int *. - (search_fud_chains): Ditto. - Call get_immediate_dominator. - * tree-ssa-pre.c (a_dom_b): Call dominated_by_p. - (pre_idom): Change type to dominance_info. Update all uses. - (pre_doms): Remove. Update all uses. - -2002-06-20 Jason Merrill - - Simplify DECL_STMT, CONSTRUCTOR and COMPOUND_LITERAL_EXPR. - * tree-simple.c (is_simple_decl_stmt): New fn. - (is_simple_constructor, is_simple_constructor_elt): New fns. - (is_simple_stmt, is_simple_unary_expr): Use them. - (is_simple_modify_expr): Accept an INIT_EXPR. - (is_simple_id): Don't allow a COMPOUND_LITERAL_EXPR. - (is_simple_unary_expr): Here either. - * c-simplify.c (simplify_decl_stmt, simplify_constructor): New fns. - (simplify_compound_literal_expr): New fn. - (simplify_stmt, simplify_expr): Use them. - (get_initialized_tmp_var): Use an INIT_EXPR. - (simplify_modify_expr): Accept an INIT_EXPR. - (simplify_for_stmt): Call simplify_decl_stmt. - (get_name): Don't crash if the decl is anonymous. - (tail_expression): New fn. - * tree-simple.h: Declare new fns. - * c-pretty-print.c (dump_c_node) [INIT_EXPR]: Print like MODIFY_EXPR. - (dump_c_node, op_prio): Handle COMPOUND_LITERAL_EXPR. - * c-simplify.c (simplify_expr_wfl): Only wrap pre and post stuff - that came from our subexpression. - (simplify_stmt): Restore stmts_are_full_exprs_p. - - * c-simplify.c (simplify_expr_wfl): Bracket substatements with - FILE_STMTs rather than wrapping them in EXPR_WITH_FILE_LOCATION. - (simplify_stmt): Update lineno and input_filename from stmts. - (simplify_expr et al): Don't copy lineno between stmts. Don't pass - enclosing stmt down. - (update_line_number): Remove. - - * c-simplify.c (simplify_expr_stmt): Don't check - is_last_stmt_of_scope. - (simplify_stmt_expr): Check it here. Set *expr_p to void_zero_node - instead of NULL_TREE. - (expr_has_effect): No need to deal with NULL exprs now. - (simplify_expr_wfl): Likewise. - -2002-06-18 Diego Novillo - - * c-simplify.c (strip_off_ending): Rename to remove_suffix. - Update callers. - (is_last_stmt_of_scope): New function. - (simplify_expr_stmt): Call it. - (stmt_has_effect): Ditto. - (c_simplify_function_tree): Update comment. - -2002-06-18 Jason Merrill - - * c-simplify.c (maybe_fixup_loop_cond): New fn for C++ conditions. - (simplify_for_stmt, simplify_while_stmt): Use it. - - * c-pretty-print.c (dump_c_node) [COMPONENT_REF]: Print "->" if - appropriate. - -2002-06-19 Jason Merrill - - * c-simplify.c (simplify_stmt_expr): New fn. - (simplify_expr): Call it. - (stmt_expr_level): Remove. - (stmt_has_effect, c_simplify_function_tree): Remove refs. - (expr_has_effect): Deal with null expression. - (simplify_expr_wfl): If the subexpression is simplified away, drop - this one, too. Don't wrap statements. - * tree-simple.c (is_simple_unary_expr): Don't allow a STMT_EXPR. - * tree-inline.c (copy_tree_r): Clear the aux field in the copies. - -2002-06-17 Frank Ch. Eigler - - * c-pretty-print.c (dump_c_node): Print pointer-type - integer constants as raw numbers with a "B" (bytes) suffix. - -2002-06-17 Jason Merrill - - * c-simplify.c (simplify_stmt): Take a tree *. - (various): Adjust. - -2002-06-16 Daniel Berlin - - * c-simplify.c (get_name): New function. - (get_initialized_tmp_var): Use it to try to get a prefix for - create_tmp_var from the value we are initializing to. - (simplify_cond_expr): Add prefix for create_tmp_var. - (create_tmp_var): Add prefix argument. - - * tree-simple.h: Change create_tmp_var prototype to match. - - * tree-ssa-pre.c: Change create_tmp_var call. - -2002-06-15 Diego Novillo - - * Makefile.in (c-decl.o): Add dependency on langhooks.h - (c-simplify.o): Add dependency on flags.h, langhooks.h, toplev.h - and rtl.h. - * c-decl.c: Include langhooks.h. - (c_expand_body): Simplify the function. If it succeeds and - -ftree-ssa is enabled, call optimize_function_tree. - * c-simplify.c: Include flags.h, rtl.h and toplev.h. - (simplify_expr_stmt): New function. - (simplify_stmt): Call it. - * tree-optimize.c: Don't include langhooks.h. - (optimize_function_tree): Don't call lang_hooks.simplify_function_tree. - - * c-decl.c (c_expand_body): Do not simplify nor optimize the - function if -fdisable-simple is given. - * c-simplify.c (simplify_expr): Use is_simple_addr_expr_arg when - simplifying ADDR_EXPR nodes. - * flags.h (flag_disable_simple): Declare. - * toplev.c (flag_disable_simple): Define. - (f_options): Document -fdisable-simple. - (process_options): Warn if -fdisable-simple is used with - optimization enabled. - * tree-simple.c (is_simple_addr_expr_arg): New function. - (is_simple_unary_expr): Call it. - * tree-simple.h (is_simple_addr_expr_arg): Declare. - * doc/invoke.texi: Document -fdisable-simple. - - * c-pretty-print.c (dump_c_node): Handle DECL_STMT nodes inside - FOR_INIT_STMT. - * c-simplify.c (c_simplify_function_tree): Don't do anything if the - program had errors. - (simplify_stmt): Skip DECL_STMTs. - (simplify_for_stmt): Handle DECL_STMT nodes inside FOR_INIT_STMT. - (simplify_save_expr): New function. - (simplify_expr): Call it. - (tree_last_decl): Handle cases where DECL_STMTs are found before - the body of the function. - * tree-simple.c (is_simple_stmt): Handle DECL_STMT nodes inside - FOR_INIT_STMT. - (is_simple_compound_lval): Handle nodes wrapped in NON_LVALUE_EXPR. - -2002-06-14 Frank Ch. Eigler - - * c-pretty-print.c (dump_c_node): Print more type qualifiers, - especially for pointers. - -2002-06-11 Diego Novillo - - * c-simplify.c: Remove folding markers. - (insert_before_first): Remove unused function. - * tree-cfg.c: Remove folding markers. - * tree-dfa.c: Ditto. - * tree-flow.h: Ditto. - * tree-optimize.c: Ditto. - * tree-optimize.h: Ditto. - * tree-simple.c: Ditto. - * tree-ssa.c: Ditto. - -2002-06-11 Jason Merrill - - * c-simplify.c (add_tree): Don't deep-copy expressions. - (simplify_for_stmt): Only deep-copy pre_cond_s the first time. - Don't deep copy expr_chain. - -2002-06-10 Diego Novillo - - * tree-cfg.c (remove_bb_ann): Don't call VARRAY_FREE. - * tree-dfa.c (create_ref): Use sizeof (ref) instead of - refs->element_size. - * tree.h (struct tree_common): Skip field 'aux' from GC type - information. - * tree-optimize.c (optimize_function_tree): Don't call - VARRAY_REF. - * tree-ssa.c (insert_phi_terms): Ditto. - (delete_refs): Ditto. - * c-simplify.c (simplify_array_ref): Ditto. - * simple-break-elim.c: Disable whole file. - * simple-goto-elim.c: Disable whole file. - -2002-06-10 Jason Merrill - - * c-simplify.c (simplify_switch_stmt): Let simplify_expr handle - post-effects. Reorder. - (simplify_if_stmt): Likewise. Don't build redundant comparison. - (simplify_do_stmt, simplify_while_stmt): Likewise. - (simplify_for_stmt): Likewise. Remove POST_P parm. - (simplify_stmt): Adjust. - (insert_before_first): #if 0, no longer used. - - * c-pretty-print.c (dump_c_node): Print FIX_TRUNC_EXPR, FLOAT_EXPR - et al as casts. Add parens as needed. - - * tree-simple.c (is_union_based_ref): New fn. - (is_simple_min_lval): Use it. Rename from is_simple_arraybase. - (is_simple_arrayref): Adjust. Use loop instead of recursion. - (is_simple_compref): Likewise. - (is_simple_compref_lhs): Remove. - * tree-simple.h: Adjust. - * c-simplify.c (simplify_array_ref): Adjust. - (simplify_component_ref): Adjust. - - * c-simplify.c (simplify_expr_common): Tweak ordering. - (get_initialized_tmp_var): Let simplify_expr handle post-effects. - * tree-simple.c (is_simple_stmt): Accept an rhs for a return expr. - - * c-simplify.c (simplify_boolean_expr): Avoid redundant tests. - Give the temp the appropriate type for a boolean value, and - reconvert at the end. - - * c-simplify.c (simplify_self_mod_expr): Don't duplicate side-effects. - - * c-simplify.c (simplify_return_stmt): Accept a SIMPLE rhs. - Just hand off to simplify_expr. - - * c-simplify.c (get_initialized_tmp_var): New fn. - (simplify_expr_common): Use it. Handle post-effects internally if - POST_P is NULL. - (is_simple_tmp_var): Rename from simple_tmp_var_p. - * tree-simple.h: Adjust. - -2002-06-09 Diego Novillo - - * c-simplify.c (simplify_return_stmt): Update folding markers. - (build_addr_expr): Ditto. - * langhooks.h (struct langhooks): Document simplify_function_tree - hook. - -2002-06-09 Jason Merrill - - * c-simplify.c (simplify_expr_common): Handle creating both lvalue - and rvalue temps. Add new parameter to specify which. - (simplify_expr): Now just a wrapper. - (simplify_lvalue_expr): Likewise. - (simplify_expr_either): New wrapper. - (simplify_component_ref): Use it instead of simplify_lvalue_expr. - - * c-pretty-print.c (debug_c_tree): Add a trailing newline. - (debug_c_node): Likewise. - * gdbinit.in (pct): New macro, calls debug_c_tree. - -2002-06-08 Jason Merrill - - * tree-simple.c (is_simple_unary_expr): Only allow the address of - a varname. - (is_simple_id): Allow STRING_CST. - * c-simplify.c (simplify_expr_common): Split out from simplify_expr. - Do simplify ADDR_EXPR. - (simplify_lvalue_expr): Use it and build_addr_expr. Take - simple_test_f. - (simplify_modify_expr): Adjust. - (build_addr_expr): New fn. - (simplify_array_ref): Use simplify_lvalue_expr. - (simplify_component_ref): Likewise. - - * tree-simple.c (is_simple_rhs): Remove condexpr rule. - (is_simple_compref_lhs): Remove &ID.idlist rule. - (is_simple_relop): New fn. - (is_simple_binary_expr, is_simple_condexpr): Use it. - * tree-simple.h: Declare it. - - * c-simplify.c (create_tmp_var): Refuse to create an array temp. - (simple_tmp_var_p): New fn. - (simplify_lvalue_expr): Use it; make sure we don't return a temp. - * tree-simple.h: Declare it. - - * c-pretty-print.c (dump_c_node) [ARRAY_REF]: Wrap array in parens - as needed. - [COMPONENT_REF]: Likewise. - [POINTER_TYPE]: Fix pointer-to-function handling. - [ARRAY_TYPE]: Don't try to print an unknown dimension. - - * tree-simple.c (is_simple_arraybase): New function. - (is_simple_arrayref): Use it to check the array base again. - * tree-simple.h: Add declaration. - * c-simplify.c (simplify_array_ref): Do simplify the base. - * expr.c (expand_expr): First make sure the type has a size. - -2002-06-07 Jason Merrill - - * cppexp.c (num_equality_op): Use a temporary variable to work - around gcc 3.0.4 bug. - -2002-06-05 Diego Novillo - - * Makefile.in (BOOT_CFLAGS): Remove -ftree-ssa. - * c-decl.c (c_expand_body): Call optimize_function_tree if tree SSA - is enabled. - * c-lang.c (LANG_HOOKS_SIMPLIFY_FUNCTION_TREE): Define. - * c-simplify.c (simplify_tree): Rename to c_simplify_function_tree. - Update all callers. - Dump function body before and after simplification if - -fdump-tree-simple is used. - (simplify_expr): Document FIXME for simplification of BIT_FIELD_REF - nodes. - * c-tree.h (simplify_tree): Rename to c_simplify_function_tree. - * langhooks-def.h (LANG_HOOKS_SIMPLIFY_FUNCTION_TREE): Define - (LANGHOOKS_INITIALIZER): Add LANG_HOOKS_SIMPLIFY_FUNCTION_TREE. - (lhd_simplify_function_tree): Declare. - * langhooks.c (lhd_simplify_function_tree): New function. - * langhooks.h (lang_hooks): Add simplify_function_tree function - pointer. - * toplev.c (parse_options_and_default_flags): Set flag_tree_ssa to - 1 at optimization levels >= 1. - Revert to default warning when -Wuninitialized is used without -O. - * tree-cfg.c (tree_find_basic_blocks): Rename argument 't' to - 'fnbody'. - * tree-optimize.c: Include langhooks.h. - (optimize_tree): Rename to optimize_function_tree. Update all - users. - Rename argument 't' to 'fndecl'. - Call simplify langhook before building SSA. - (build_tree_ssa): Rename argument 't' to 'fndecl'. - Adjust call to tree_find_basic_blocks to pass body of the function. - * tree-optimize.h (optimize_tree): Rename to - optimize_function_tree. - * tree-simple.c (is_simple_unary_expr): Document FIXME on - BIT_FIELD_REF nodes. - * tree-ssa.c: Add whitespace. - * testsuite/lib/c-torture.exp: Remove -ftree-ssa flag. - -2002-06-03 Daniel Berlin - - * tree-cfg.c (insert_before_*): For insertion into FOR_INIT's, if - we have an expression statement, transform into a compound - expression. - Pick the right place to insert a statement by iterating until we - have a first_exec_stmt (first_non_decl_stmt) that is really the - first executable non decl statement. - (insert_after_*): Ditto. - -2002-06-03 Daniel Berlin - - * tree-ssa-pre.c: Update BB stuff to new basic block structure. - Add some comments throughout (more coming, particularly describing - the algorithm, rather than the implementation). - (free_expr_info): Free refs as well. - (defs_y_dom_x): Handle unary expressions as well. - (insert_euse_in_preorder_dt_order_1): Use block of ref, not block - of statement. - Don't insert exit blocks if we hit them before hitting an - occurrence (it's pointless). - (rename_2): Return set of phi operands we touched, don't forget to - free VARRAY's we allocated. - (rename_1): Correct downsafety computation. Now get exact same - results as Open64. - Correct setting of has_real_use. - (finalize_1): Fix up insertion. - (code_motion): Fix up insertion. - - * tree-dfa.c (dump_varref): Improve dumping of expression - references. - -2002-06-03 Diego Novillo - - * tree-cfg.c (delete_bb): Rename to tree_delete_bb. Update callers. - (tree_find_basic_blocks): Initializer last_basic_block. - (create_bb): Update last_basic_block after creating a new block. - (tree_cleanup_cfg): Delete unreachable blocks by traversing the - linked list, not the array. Update comments. - (delete_bb): Update comments. - (tree_dump_cfg): Also show last_basic_block. - * tree-ssa.c (tree_build_ssa): Use last_basic_block instead of - n_basic_blocks to allocate dominator arrays. - (insert_phi_terms): Ditto. - (search_fud_chains): User FOR_EACH_BB to look for dominator - children. - -2002-05-29 Diego Novillo - - * tree-cfg.c (tree_find_basic_blocks): Set next_bb and prev_bb for - ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR. - (create_bb): Set flag BB_NEW for every newly created block. - Call link_block to add the new block to the linked list. - (tree_split_bb): Traverse basic blocks using FOR_EACH_BB. - (make_goto_stmt_edges): Ditto. - (remove_unreachable_blocks): Add reminder comment to stop - compacting the basic block array every time a block is deleted. - (delete_cfg): Traverse basic blocks using FOR_EACH_BB. - (tree_dump_bb): Ditto. - (tree_dump_cfg): Ditto. - (tree_cfg2dot): Ditto. - * tree-dfa.c (tree_find_varrefs): Ditto. - (create_tree_ann): Ditto. - (get_fcalls): Ditto. - (find_declaration): Ditto. - * tree-ssa.c (tree_build_ssa): Ditto. - -2002-05-28 Diego Novillo - - * Makefile.in: Add -ftree-ssa to BOOT_CFLAGS. - -2002-05-27 Diego Novillo - - * c-decl.c (c_expand_body): Close dump file before simplifying the - function. - * c-pretty-print.c (dump_c_node): Handle COMPLEX_CST, - BIT_FIELD_REF, COMPLEX_EXPR, CONJ_EXPR, REALPART_EXPR, - IMAGPART_EXPR and VA_ARG_EXPR nodes. - Display all type casts, not just pointer casts. - (op_prio): Handle LROTATE_EXPR, RROTATE_EXPR, REALPART_EXPR and - IMAGPART_EXPR. - * c-simplify.c: Include "tree-inline.h" - (dump_file): New local variable. - (dump_flags): New local variable. - (stmt_expr_level): New local variable. - (simplify_tree): Open and close dump file if - -fdump-tree-simple-details is given. - Initialize stmt_expr_level. - (simplify_stmt): Dump statement before and after simplification if - -fdump-tree-simple-detail is given. - Unshare the expression of an EXPR_STMT before simplifying it. - Call simplify_return_stmt to handle RETURN_STMT nodes. - Do not simplify DECL_STMT nodes. - Call stmt_has_effect before re-chaining side effects. - (simplify_for_stmt): Do not return the simplified statement. - Update all callers. - Simplify FOR_BODY after the headers. - Unshare loop header expressions before simplification. - (simplify_while_stmt): Do not return the simplified statement. - Update all callers. - Simplify WHILE_BODY after the headers. - Unshare the loop header expression before simplification. - (simplify_do_stmt): Do not return the simplified statement. Update - all callers. - Unshare the loop header expression before simplification. - (simplify_if_stmt): Do not return the simplified statement. Update - all callers. - Simplify the condition expression before the clauses. - Unshare the condition expression before simplification. - (simplify_switch_stmt): Do not return the simplified statement. - Update all callers. - Simplify the switch expression before the body. - Unshare the switch expression before simplification. - (simplify_decl_stmt): Remove. - (simplify_expr): Remove argument 'needs_lvalue'. - Add argument 'stmt'. - Replace first argument 'expr' with a pointer to the - expression 'expr_p'. - Do not return the simplified expression. - Update all callers and uses. - Handle TRUTH_NOT_EXPR nodes. Simplify SAVE_EXPR nodes into a - SIMPLE id and remove the SAVE_EXPR node. - Do not simplify BIT_FIELD_REF nodes. - Remove code that tried to create new lvalues. - (simplify_array_ref): Replace first argument 'expr' with a pointer - to the expression 'expr_p'. - Do not return the simplified expression. - Add argument 'stmt'. - Update all callers and uses. - (simplify_self_mod_expr): Replace first argument 'expr' with a - pointer to the expression 'expr_p'. - Do not return the simplified expression. - Add argument 'stmt'. - Update all callers and uses. - Call simplify_lvalue_expr to simplify a copy of the LHS into an - lvalue for the new assignment. - Simplify the new binary expression. - (simplify_component_ref): Replace first argument 'expr' with a - pointer to the expression 'expr_p'. - Do not return the simplified expression. - Add argument 'stmt'. - Update all callers and uses. - (simplify_call_expr): Ditto. - (simplify_tree_list): Ditto. - (simplify_cond_expr): Ditto. - Build a replacement IF_STMT and call simplify_if_stmt() to process - it. Set the line number of the new statement from the statement - containing the original expression. - (simplify_modify_expr): Replace first argument 'expr' with a - pointer to the expression 'expr_p'. - Do not return the simplified expression. - Add argument 'stmt'. - Update all callers. - Call simplify_lvalue_expr to simplify the LHS of the assignment. - (simplify_boolean_expr): Replace first argument 'expr' with a - pointer to the expression 'expr_p'. - Do not return the simplified expression. - Add argument 'stmt'. - Update all callers. - Build a new IF_STMT and simplify it all at once by calling - simplify_if_stmt. - (simplify_compound_expr): Replace first argument 'expr' with a - pointer to the expression 'expr_p'. - Do not return the simplified expression. - Add argument 'stmt'. - Update all callers. - (simplify_expr_wfl): Ditto. - (simplify_lvalue_expr): New function. - (add_tree): Create a copy of each expression before adding it to - the list. - (deep_copy_node): Call copy_tree_r to copy expression nodes. - (stmt_has_effect): Return nonzero if the statement may be the last - statement of a statement expression body. - (mostly_copy_tree_r): New function. - * tree-dump.c (dump_options): Add 'details'. - * tree-simple.c: Update documentation about ADDRESSOF expressions. - (is_simple_stmt): Test for SIMPLE values when checking return - statements. - Accept all DECL_STMT nodes. - (is_simple_compstmt): Return nonzero if T is NULL. Do not test - DECL_STMT nodes - (is_simple_expr): Return nonzero if T is NULL. - (is_simple_rhs): Ditto. - (is_simple_modify_expr): Ditto. - (is_simple_modify_expr_lhs): Ditto. - (is_simple_binary_expr): Ditto. - (is_simple_cond_expr): Ditto. - (is_simple_unary_expr): Call STRIP_NOPS before testing T. - Always accept ADDR_EXPR nodes. - Always accept BIT_FIELD_REF nodes. - (is_simple_call_expr): Return nonzero if T is NULL. - (is_simple_const): Ditto. - (is_simple_val): Ditto. - (is_simple_compref): Ditto. - (is_simple_compref_lhs): Ditto. - (is_simple_cast): Ditto. - (is_simple_cast_op): Ditto. - (is_simple_id): Return nonzero if T is NULL. Allow identifiers - wrapped inside NON_LVALUE_EXPR and EXPR_WITH_FILE_LOCATION nodes. - Allow real and imaginary parts of a complex variable. - Allow compound literals. - (is_simple_arrayref): Allow arrays of complex types. - * tree.h (TDF_DETAILS): Define. - * cp/pt.c (tsubst_template_parms): Check that 'parms' is non-NULL - before calling TMPL_PARMS_DEPTH. - * doc/invoke.texi: Document -fdump-tree-simple-details. - -2002-05-10 Daniel Berlin - - * c-pretty-print.c (dump_c_node): Print "" for - types, variables, etc that have no name, rather than printing - nothing. - Handle PMF's properly. - Print out structure initializers in a somewhat sensible way. - Print SAVE_EXPR () around SAVE_EXPRs. - (print_call_name): Handle EXPR_WITH_FILE_LOCATION. - -2002-05-09 Daniel Berlin - - * tree-dfa.c (dump_varref): Tree inlining generates variables with - no name. Don't crash on dumping varref's of them. - - * tree-inline.c (expand_call_inline): Generate a proper STMT_EXPR - (it was missing COMPOUND_STMT). - -2002-05-08 Daniel Berlin - - s/varref_type/treeref_type/g - s/create_varref/create_ref/g - - * tree-flow.h: Add EXPRPHI, EXPRUSE, EXPRKILL, EXPRINJ. - Add structures and macros for each. - Add tree_perform_ssapre prototype. - - * Makefile.in (C_AND_OBJC_OBJS): Add tree-ssa-pre.o - (tree-ssa-pre.o): Add dependencies for tree-ssa-pre.o - - * cp/Make-lang.in: Add tree-ssa-pre.o - - * flags.h: Add flag_tree_ssa_pre. - - * tree-ssa-pre.c: New file, SSA-PRE. - - * toplev.c: Add flag_tree_ssa_pre. - (lang_independent_options): Add tree-ssa-pre. - - * tree-dump.c (dump_files): Add ssapre dump. - - * tree-optimize.c (optimize_tree): Do SSAPRE if requested. - - * tree.h (dump_index): Add TDI_ssa_pre. - - * tree-dfa.c (create_ref): Add support for creating the EXPR*'s refs. - (dump_varref): Add support for dumping EXPR* refs. - - * tree-ssa.c (search_fud_chains): Add BB to VARDEF_PHI_CHAIN_BB. - -2002-05-07 Diego Novillo - - * c-pretty-print.c (op_prio): Handle ABS_EXPR. - Don't abort when the operand is not recognized. - (op_symbol): Don't abort when the operand is not recognized. - * c-simplify.c (simplify_expr): Remove 'const' qualifier from first - argument. - Do not copy incoming expression. - Exclude handling of MODIFY_EXPR, INIT_EXPR, SAVE_EXPR and binary - expression nodes. - (simplify_array_ref): Remove 'const' qualifier from first argument. - Do not copy the incoming expression. - (simplify_self_mod_expr): Ditto. - Do not simplify the first operand twice. - (simplify_component_ref): Remove 'const' qualifier from first - argument. Do not copy the incoming expression. - (simplify_call_expr): Ditto. - (simplify_tree_list): Ditto. - (simplify_cond_expr): Ditto. - (simplify_modify_expr): Ditto. - (simplify_boolean_expr): Ditto. - (simplify_compound_expr): Ditto. - (simplify_save_expr): Ditto. - (simplify_expr_wfl): Ditto. - (tree_build_scope): Re-write. Do nothing if block already contains - a scope. Use chainon to chain the body with the scope closing - node. - (deep_copy_node): Do not check for NULL nodes. Do not deep copy - declarations, types and constants. - -2002-05-06 Daniel Berlin - - * c-simplify.c (deep_copy_node): Don't copy DECL_STMT_DECL's. - -2002-05-06 Daniel Berlin - - * tree-simple.c (is_simple_compstmt): Don't post-initialize - statics or aggregate initializers. - - * c-simplify.c (simplify_decl_stmt): Ditto. - -2002-05-06 Sebastian Pop - - * Makefile.in (simple-break-elim.o, simple-goto-elim.o, tree-dchain.o): - Added. - * c-decl.c: Include tree-dchain.h - (c_expand_body): Add entry point to the goto, break elimination - after the simplification pass. - * simple-break-elim.c: New file. - * simple-goto-elim.c: New file. - * tree-dchain.h: New file. - * tree-dchain.c: New file. - -2002-05-02 Diego Novillo - - * c-simplify.c (simplify_expr): Constify first argument. - Always work on a copy of the input expression. - Do not simplify COMPOUND_LITERAL_EXPR nor CONSTRUCTOR nodes. - (simplify_array_ref): Constify first argument. Always work on a - copy of the input expression. - (simplify_self_mod_expr): Ditto. - (simplify_component_ref): Ditto. - (simplify_call_expr): Ditto. - (simplify_tree_list): Ditto. - (simplify_cond_expr): Ditto. - When building the THEN_CLAUSE and ELSE_CLAUSE for the new IF_STMT, - create a scope for them and simplify the scope, not the expression. - (simplify_modify_expr): Constify first argument. Always work on a - copy of the input expression. - (simplify_boolean_expr): Ditto. - (simplify_compound_expr): Ditto. - (simplify_save_expr): Ditto. - (simplify_expr_wfl): Ditto. - * tree-cfg.c (tree_find_basic_blocks): Update comments for - -fdump-tree-dot. - (tree_dump_cfg): Ditto. - * tree-dump.c (dump_files): Rename -fdump-tree-graphviz to - -fdump-tree-dot. - * tree-simple.c (is_simple_unary_expr): Do not handle &CONST - expressions. - Handle COMPOUND_LITERAL_EXPR and CONSTRUCTOR nodes. - (is_simple_const): Strip NOPS and handle &CONST expressions. - * tree.h (enum tree_dump_index): Remove references to GraphViz. - * doc/invoke.texi: Update documentation for -fdump-tree-dot. - -2002-05-02 Sebastian Pop - - * c-pretty-print.c (dump_c_node): Don't print declarations - from the SCOPE_STMT_BLOCK, use the DECL_STMT instead. - -2002-04-30 Diego Novillo - - * c-pretty-print.c (NIY): Display an error string instead of aborting. - (op_prio): Add support for COMPOUND_EXPR, TRUTH_XOR_EXPR, MIN_EXPR, - MAX_EXPR and NON_LVALUE_EXPR. - For EXPR_WITH_FILE_LOCATION nodes, return the priority of - the internal node. - (op_symbol): Add support for TRUTH_XOR_EXPR. - * c-simplify.c (simplify_stmt): Only remove null statements that - have been nullified by simplification. - Call debug_tree() dump unhandled tree nodes. - (simplify_for_stmt): Always deep-copy PRE_COND_S before adding it - to PRE_P. - (simplify_expr): When simplifying a MODIFY_EXPR node into an - rvalue, return operand 0. - Handle VA_ARG_EXPR, BIT_FIELD_REF and NON_LVALUE_EXPR nodes. - Treat TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR nodes as - regular binary expressions. - Call debug_tree() to dump an unhandled expression. - (simplify_array_ref): Do not simplify the base of an array. - (simplify_call_expr): Do not simplify calls to builtins. - (simplify_cond_expr): Handle conditional expressions of type void. - (simplify_boolean_expr): Return 'T != 0' instead of 'T'. - (simplify_save_expr): Do not wrap statement trees inside SAVE_EXPR - nodes. - (tree_last_decl): Ignore FILE_STMT nodes preceding a SCOPE_STMT. - * tree-simple.c: Update grammar to accept any valid C array as the - array base. - (is_simple_compstmt): Accept DECL_INITIAL expressions for read-only - variables. - (is_simple_expr): Do not abort if the incoming tree is NULL. - (is_simple_modify_expr): Allow SAVE_EXPR, EXPR_WITH_FILE_LOCATION - and NON_LVALUE_EXPR wrappers. - (is_simple_binary_expr): Ditto. - (is_simple_condexpr): Ditto. - Accept TRUTH_AND_EXPR, TRUTH_OR_EXPR and TRUTH_XOR_EXPR. - (is_simple_unary_expr): Do not abort it the incoming tree is NULL. - Allow SAVE_EXPR, EXPR_WITH_FILE_LOCATION and NON_LVALUE_EXPR - wrappers. - Handle BIT_FIELD_REF and VA_ARG_EXPR nodes. - (is_simple_call_expr): Always return 1 for builtin calls. - (is_simple_arrayref): Do not check the array base. - -2002-04-30 Daniel Berlin - - * c-simplify.c (simplify_call_expr): Don't try to simplify - call_expr arglist if it's not there. - -2002-04-27 Diego Novillo - - * c-decl.c (c_expand_body): Call simplify_tree to simplify a - FUNCTION_DECL node. - * c-simplify.c (simplify_tree): New function. - (simplify_stmt): Remove variable 'new_vars'. Update all called - functions. - Remove argument 'scope'. Update all callers. - Do not keep track of new scope statements as they are entered. - Do not call declare_tmp_vars(). - (simplify_for_stmt): Remove argument new_vars_p. Update all callers. - (simplify_while_stmt): Ditto. - (simplify_do_stmt): Ditto. - (simplify_if_stmt): Ditto. - (simplify_switch_stmt): Ditto. - (simplify_decl_stmt): Reformat comments. - (simplify_expr): Remove argument new_vars_p. Update all callers. - Call simplify_save_expr() to simplify SAVE_EXPR nodes. - Call simplify_expr_wfl() to simplify EXPR_WITH_FILE_LOCATION nodes. - Do not call is_unop() and is_binop() when checking for unary and - binary operators. - Do not return early after simplify statement-expressions. - Do not call add_modify_stmt() to create assignment expressions. - (simplify_array_ref): Remove argument new_vars_p. Update all callers. - (simplify_self_mod_expr): Ditto. - (simplify_component_ref): Ditto. - (simplify_call_expr): Ditto. - (simplify_tree_list): Ditto. - (simplify_cond_expr): Ditto. - (simplify_modify_expr): Ditto. - (simplify_boolean_expr): Ditto. - (simplify_compound_expr): Ditto. - (simplify_save_expr): New function. - (simplify_expr_wfl): New function. - (tree_build_scope): Reformat. - (add_tree): Call stmt_has_effect() and expr_has_effect() to decide - whether or not to add a new tree to the list. - (add_modify_stmt): Remove. - (create_tmp_var): Remove 'new_vars_p' argument. - Call pushdecl() to insert the newly created variable in the current - binding scope. - (declare_tmp_vars): Do not create a BLOCK_VARS for the scope. - (is_binop): Remove. - (is_unop): Remove. - (expr_has_effect): New function. - * c-tree.h (simplify_tree): Remove second argument. - * stmt.c (warn_if_unused_value): Check operand 0 of SAVE_EXPR - nodes. - * tree-dfa.c (find_refs_in_expr): Call find_refs_in_expr() to look - inside an EXPR_WITH_FILE_LOCATION node. - * tree-simple.c (is_simple_stmt): Add a case for SCOPE_STMT nodes. - (is_simple_compstmt): Assume that T is the first tree in the - compound statement's body. - Stop when a scope ending SCOPE_STMT node is found. - (is_simple_binary_expr): Don't call is_simple_binop(). - (is_simple_condexpr): Don't call is_simple_relop(). - (is_simple_binop): Remove. - (is_simple_relop): Remove. - (is_simple_unary_expr): Accept any operator with tree code class - '1' followed by a simple value. - Accept simple unary expressions wrapped inside SAVE_EXPR, - EXPR_WITH_FILE_LOCATION and NON_LVALUE_EXPR nodes. - (is_simple_id): Accept simple identifiers wrapped inside SAVE_EXPR, - EXPR_WITH_FILE_LOCATION and NON_LVALUE_EXPR nodes. - * tree-simple.h (create_tmp_var): Remove second argument. - (is_simple_binop): Remove. - (is_simple_relop): Remove. - -2002-04-22 Diego Novillo - - * c-simplify.c (stmt_has_effect): New function. - (simplify_stmt): Fix example code in comment. - Use EXPR_STMT_EXPR to access the expression in an expression - statement. - Call debug_c_node to display unhandled statements. - Call stmt_has_effect to determine whether the statement has been - nullified by the simplification process. - (simplify_for_stmt): Do not simplify the initialization expression - if it's NULL. - Do not convert post_cond_s into a statement chain. - Do not simplify the expression if it's NULL. - (simplify_switch_stmt): initialize post_cond_s to NULL before - simplifying the expression. - (simplify_expr): Rename argument IS_LHS to NEEDS_LVALUE. Update - all uses. - When simplifying assignments, return the LHS of the assignment if - the caller wants to use the assignment as an rvalue. - Do not simplify ADDR_EXPR nodes. - Handle NOP_EXPR, CONVERT_EXPR, FIX_TRUNC_EXPR, FIX_CEIL_EXPR, - FIX_ROUND_EXPR, INDIRECT_REF, NEGATE_EXPR, INTEGER_CST, STRING_CST, - COMPLEX_CST. - Abort if the expression has not been simplified and cannot be used - as an rvalue to assign it to a temporary. - When creating a new temporary to hold an lvalue, if the expression - is an indirect reference, use the address of the referenced object. - When creating an indirect reference, use the pointed-to type as the - type of the reference. - (simplify_self_mod_expr): If the LHS operand needs to be - simplified, simplify twice. Once to produce an lvalue and another - to produce a simple value. - (simplify_modify_expr): Break assignment chains (a = b = c = ...) - into individual assignments. - (simplify_compound_expr): - (create_tmp_var): If the type is an array, use TYPE_POINTER_TO as - the pointer type. - (update_line_number): Fix typo in comment. - (is_unop): Ditto. - (convert_to_stmt_chain): Only add statements that comply with - stmt_has_effect(). - * tree-dfa.c (find_declaration): Fix typo in comment. - (debug_varref): Ditto. - * tree-flow.h: Ditto. - * tree-simple.c (is_simple_stmt): New function. - (is_simple_compstmt): New function. - (is_simple_expr): Fix typo in comment. - (is_simple_rhs): Allow conditional expressions. - (is_simple_modify_expr): Fix typo in comment. - (is_simple_modify_expr_lhs): Ditto. - (is_simple_binary_expr): Ditto. - (is_simple_condexpr): Ditto. - (is_simple_relop): Ditto. - (is_simple_unary_expr): Ditto. - Allow taking the address of a constant (for strings). - (is_simple_call_expr): Fix typo in comment. - Call is_simple_id to determine if the first operand is a SIMPLE - function identifier. - (is_simple_arglist): Fix typo in comment. - (is_simple_varname): Ditto. - (is_simple_const): Don't accept casts of SIMPLE constants. - (is_simple_id): Don't accept casts of SIMPLE identifiers. - (is_simple_val): Fix typo in comment. - (is_simple_arrayref): Ditto. - (is_simple_compref): Ditto. - (is_simple_compref_lhs): Ditto. - (is_simple_cast_op): Ditto. - (is_simple_exprseq): Allow NULL expression sequences. - * tree-simple.h (is_simple_stmt): Declare - (is_simple_compstmt): Declare. - * tree-ssa.c (follow_chain): Fix typo in comment. - -2002-04-22 Diego Novillo - - * c-pretty-print.c (dump_c_node): Don't print function - bodies of FUNCTION_DECL nodes. - -2002-04-19 Andreas Jaeger - - * Makefile.in (c-call-graph.o): New. - -2002-04-18 Sebastian Pop - - * c-pretty-print.c (PRINT_FUNCTION_NAME): Define. - (dump_c_node): Call pretty_print_string to print string. - Call print_call_name to print function names. - (pretty_print_string): New function. - (print_call_name): New function. - -2002-04-17 Diego Novillo - - * c-simplify.c (simplify_do_stmt): Call is_simple_condexpr to test - if the conditional is in SIMPLE form. - (simplify_if_stmt): Ditto. - -2002-04-17 Diego Novillo - - * c-pretty-print.c (dump_c_node): Handle escape sequences in strings. - (op_symbol): Handle TRUTH_NOT_EXPR. - * c-simplify.c: Rename 'after' with 'post' and 'before' with 'pre' - everywhere. - Re-group some functions and add comments. - (simplify_stmt): Update calls to simplify_for_stmt, - simplify_while_stmt, simplify_do_stmt and simplify_switch_stmt. - Call simplify_if_stmt. - Do not test if expression is in SIMPLE form before calling - simplify_expr. - Call convert_to_stmt_chain to emit statement trees for side effects - found while simplifying. - (simplify_for_stmt): Re-implement. Do not change structure of the - statement. Simplify each header expression and emit side effects - at sequence points. - (simplify_while_stmt): Ditto. - (simplify_do_stmt): Ditto. - (simplify_switch_stmt): Ditto. - (new_simplified_if): Rename to simplify_if_stmt. - Call simplify_expr to simplify the conditional. - (simplify_if_stmt): New name for new_simplified_if. - (simplify_expr): Do not default simple_test_f to is_simple_expr. - If simple_test_f is not set, abort. - Handle COMPOUND_EXPR, MODIFY_EXPR, TRUTH_ANDIF_EXPR, - TRUTH_ORIF_EXPR, SAVE_EXPR and EXPR_WITH_FILE_LOCATION. - (simplify_arglist): Rename to simplify_tree_list. - (simplify_tree_list): New name for simplify_arglist. - (simplify_boolean_expr): New function. - (simplify_compound_expr): New function. - (tree_build_scope): Use SCOPE_BEGIN_P instead of TREE_LANG_FLAG_0 - to access scope operands. Use COMPOUND_BODY instead of - TREE_OPERAND to access the body of the compound statement. - (add_tree): Use a TREE_LIST container instead of directly chaining the - trees. - (add_assignment_tree): Rename to add_modify_stmt. Update all - callers. - (add_modify_stmt): New name for add_assignment_tree. - (insert_before_continue_end): Do nothing it the tree to insert is - NULL. - (copy_stmt_chain): Rename to deep_copy_list. Update all callers. - (deep_copy_list): New name for copy_stmt_chain. - (copy_stmt): Rename to deep_copy_node. Update all callers. - (deep_copy_node): New name for copy_stmt. Handle TREE_LIST - trees. - (insert_before_first): New function. - (is_binop): Add COMPOUND_EXPR. - (convert_to_stmt_chain): New function. - * tree-cfg.c (make_for_stmt_blocks): Fix comment. - * tree-simple.c (is_simple_condexpr): New function. - (is_simple_const): Allow casts of SIMPLE constants. - (is_simple_id): Allow casts of SIMPLE identifiers. - (is_simple_cast): Call is_simple_cast_op. - (is_simple_cast_op): New function. - (is_simple_exprseq): New function. - * tree-simple.h (deep_copy_list): Declare. - (deep_copy_node): Declare. - (is_simple_cast_op): Declare. - (is_simple_exprseq): Declare. - -2002-04-03 Diego Novillo - - * c-simplify.c (simplify_expr): Add arguments simple_tree_f and - is_lhs. Update all callers. - Call simplify_call_expr, simplify_cond_expr, simplify_arglist and - simplify_modify_expr. - Call is_unop and is_binop to check for unary and binary operators. - (simplify_binary_expr): Remove. - (simplify_call_expr): New function. - (simplify_arglist): New function. - (simplify_cond_expr): New function. - (simplify_modify_expr): New function. - (keep_stmt_p): Remove. - (is_binop): New function. - (is_unop): New function. - (simplify_stmt): Don't call keep_stmt_p. - (simplify_decl_stmt): Call add_assignment_tree. - * tree-simple.c: Include c-tree.h - Add expression-statements to the SIMPLE grammar. - (is_simple_modify_expr_lhs): New function. - (is_simple_modify_expr): Call it. - (is_simple_relop): Update comment. - (is_simple_unary_expr): Allow expression-statements. - (is_simple_arglist): New function. - (is_simple_call_expr): Call it. - (is_simple_id): Accept expressions taking the address of a - function. - * tree-simple.h (is_simple_modify_expr_lhs): Declare. - (is_simple_arglist): Declare. - -2002-03-21 Diego Novillo - - * Makefile.in (c-simplify.o): Add dependency on varray.h. - * c-simplify.c: Include varray.h. - Remove comments with SIMPLE grammar. - (simplify_array_ref): New. - (simplify_self_mod_expr): New. - (simplify_component_ref): New. - (add_assignment_tree): New. - (simplify_expr): Call simplify_array_ref to simplify array - references. - Call simplify_self_mod_expr to simplify ++, --, += and -= - expressions. - Call simplify_component_ref to simplify references to structures. - (simplify_binary_expr): Do not check whether the expression is - already in SIMPLE form. - * tree-simple.c: Document changes from original SIMPLE grammar. - (is_simple_unary_expr): Add check for *ID. - (is_simple_call_expr): Update comments. - (is_simple_const): Ditto. - (is_simple_id): Do not accept *ID expressions. - (is_simple_val): Update comments. - (is_simple_arrayref): Accept any variable name as the base address. - (is_simple_compref_lhs): New. - (is_simple_compref): Call it. - * tree-simple.h (is_simple_compref_lhs): Declare. - -2002-03-18 Diego Novillo - - * Makefile.in (C_AND_OBJC_OBJS): Add tree-simple.o - (tree-simple.o): New rule. - * c-simplify.c (simplified_p): Remove. - (simplified_rec_p): Remove. - (simplified_condition_p): Remove. - (simplify_for_stmt): Call is_simple_expr instead of - simplified_condition_p. - (simplify_while_stmt): Ditto. - (simplify_do_stmt): Call is_simple_expr instead of simplified_p. - (new_simplified_if): Call is_simple_expr instead of - simplified_rec_p. - (simplify_decl_stmt): Update comment. - (simplify_expr): Return the original expression if it's already - in SIMPLE form. - Do not special case most binary and unary expressions. - When simplifying array references, create temporary variables to - hold the base address for the array. - Simplify COMPONENT_REF expressions separately. - Call simplify_binary_expr to handle most binary expressions. - (simplify_binary_expr): New function. - (keep_stmt_p): Call is_simple_unary_expr to determine whether the - statement should be kept or not. - * tree-simple.c: New file. - * tree-simple.h (is_simple_expr): Declare. - (is_simple_rhs): Declare. - (is_simple_modify_expr): Declare. - (is_simple_binary_expr): Declare. - (is_simple_binop): Declare. - (is_simple_relop): Declare. - (is_simple_unary_expr): Declare. - (is_simple_call_expr): Declare. - (is_simple_const): Declare. - (is_simple_id): Declare. - (is_simple_varname): Declare. - (is_simple_val): Declare. - (is_simple_arrayref): Declare. - (is_simple_compref): Declare. - (is_simple_cast): Declare. - * cp/Make-lang.in (CXX_C_OBJS): Add tree-simple.o - -2002-03-18 Diego Novillo - - * tree-simple.h: New file. - * Makefile.in (c-simplify.o): Add dependency on tree-simple.h - * c-simplify.c: Reformat some comments. - (tree_last_decl): Declare. - -2002-03-18 Sebastian Pop - - * c-simplify.c (insert_stmt_chain): Delete. - (simplified_condition_p, insert_after_case_labels): New. - (simplify_stmt, simplify_for_stmt, simplify_while_stmt, - simplify_do_stmt, new_simplified_if, simplify_switch_stmt): - Returns a single node, generate a chain of statements to be executed - before the if, and a list of new variables. - (new_simplified_if): Simplify clauses. - (simplify_expr): Remove unused parameter scope. - -2002-03-14 Sebastian Pop - - * c-simplify.c (simplify_switch_stmt, simplify_expr): Add scope - parameter. - (simplify_while_stmt, simplify_do_stmt, simplify_for_stmt): Avoid - negating loop condition during simplification. - (new_simplified_if): Don't simplify the IF_BODY. - (copy_stmt_chain): Use copy_stmt. - (copy_stmt): New function. - -2002-02-28 Sebastian Pop - - * tree-dfa.c (find_refs_in_stmt): Changed if/else statements in - a switch. - -2002-02-28 Sebastian Pop - - * c-simplify.c (simplify_if_stmt): Deleted. - (new_simplified_if): New function. - (make_type_writable): New function. - (insert_before_continue_end): New function. - (insert_before_continue): New function. - (copy_stmt_chain): New function. - (insert_stmt_chain): New function. - (update_line_number): New function. - (simplified_p): New function. - (simplified_rec_p) New function. - (simplify_stmt): Modify the way to call simplification - of COMPOUND_STMT, FOR_STMT, WHILE_STMT, DO_STMT, IF_STMT, - and SCOPE_STMT in order to avoid to execute the code after - the switch. Add FILE_STMT, LABEL_STMT, GOTO_STMT, ASM_STMT cases. - Simplified a little the code after the switch. - (simplify_for_stmt): Change functions parameters. - Add code to simplify the FOR_INIT_STMT, FOR_COND, FOR_EXPR. - (simplify_while_stmt): Change functions parameters. - Add code to simplify the WHILE_COND. - (simplify_do_stmt): Change functions parameters. - Add code to simplify the DO_COND. - (simplify_switch_stmt): Change functions parameters. - (simplify_expr): Remove scope parameter. - Avoid to introduce a new temporary variable for an expression - that is already simplified. - ([ARRAY|COMPONENT]_REF, COND_EXPR): Handle them apart. - (TRUTH_ANDIF_EXPR, TRUTH_ORIF_EXPR): Avoid to evaluate the second - operand if the value can be deduced from the first one. - (keep_stmt_p): Add some other cases in which we don't need to keep - a statement after its simplification. - -2002-02-28 Sebastian Pop - - * Makefile.in: Add c-call-graph.o dependence. - * c-call-graph.c: New file. - * c-decl.c (c_expand_body): Add an entry point for call-graph. - * tree-dump.c (dump_files): Add the flag dump-call-graph. - * tree.h (tree_dump_index): Add TDI_xml. - -2002-02-28 Sebastian Pop - - * c-pretty-print.c (dump_c_tree): Declare it extern. - (dump_c_node): Declare it extern. - (dump_c_scope_vars): Deleted, some code moved in print_declaration (). - (print_declaration): New function. - (print_function_decl): New function. - (print_struct_decl): New function. - (INDENT_PRINT_C_NODE): Deleted. - (INDENT): New macro. - (NIY): Define the macro body in a block. - (dump_c_node): Add dumping for TREE_PURPOSE operand in TREE_LIST. - [VOID|INTEGER|REAL|COMPLEX|VECTOR|ENUMERAL|BOOLEAN|CHAR]_TYPE nodes: - insert some code from print-tree.c:print_node_brief () in order to - stabilise the type printing. - [RECORD|UNION]_TYPE nodes: Don't print their contents by default, - move the existing code in print_struct_decl (). - [POSTDECREMENT|POSTINCREMENT]_EXPR: Print the operand in post postion. - [MIN|MAX|ABS]_EXPR: New code for printing these nodes. - FOR_STMT: Don't print the FOR_BODY if it is not present. - RETURN_STMT: Don't print the return expression for a void function. - ASM_STMT: New code for printing this node. - SCOPE_STMT: Use print_declaration instead of dump_c_scope_vars. - COMPOUND_LITERAL_EXPR: Add the node as not implemented yet. - (op_prio): Fix switch indent. - Add node EXPR_WITH_FILE_LOCATION with priority 16. - (op_symbol): Fix switch indent. - -2002-01-25 Diego Novillo - - * Makefile.in (c-pretty-print.o): Add dependency on errors.h. - * c-decl.c (c_expand_body): React to -ftree-dump-simple. - * c-pretty-print.c: Fix typo in header comment. - (NYI): Flush output buffer, dump the tree and abort. - (dump_c_node): Add unparsing code for ERROR_MARK, IDENTIFIER_NODE, - ARRAY_TYPE, UNION_TYPE, STRING_CST, CEIL_DIV_EXPR, FLOOR_DIV_EXPR, - ROUND_DIV_EXPR, TRUNC_MOD_EXPR, FLOOR_MOD_EXPR, ROUND_MOD_EXPR, - RDIV_EXPR, EXACT_DIV_EXPR, LROTATE_EXPR, RROTATE_EXPR, - BIT_ANDTC_EXPR, BIT_NOT_EXPR, UNORDERED_EXPR, SAVE_EXPR and - EXPR_WITH_FILE_LOCATION. - Unify unparsing code for common binary and unary expressions. - Handle indirect references like any other unary expression. - (dump_c_scope_vars): Remove unused variable 'context'. - Call dump_c_node to print the type. - (dump_c_indirect_ref): Remove. - (op_prio): New function. - (op_symbol): New function. - * c-simplify.c (simplify_stmt): Do not simplify a return - expression, only its second operand. - Fix capitalization in error message. - (simplify_expr): Add documentation. - Fix capitalization in error message. - * tree-dump.c (dump_files): Add entry for -fdump-tree-simple. - (dump_options): Add entry for -unparse. - * tree.h (TDI_simple): Define. - (TDF_UNPARSE): Define. - * doc/invoke.texi: Document -fdump-tree-simple. - -2002-01-23 Sebastian Pop - - * c-pretty-print.c: Clean C++ comments. - (debug_output_buffer): Remove declaration and definition. - * diagnostic.h (debug_output_buffer): Add declaration. - * diagnostic.c (debug_output_buffer): Add definition. - -2002-01-21 Diego Novillo - - * tree-dfa.c (find_refs_in_stmt): Fix capitalization in error - message. - (find_refs_in_expr): Ditto. - -2002-01-20 Diego Novillo - Sebastian Pop - - * Makefile.in: Add c-simplify.o. - * cp/Make-lang.in: Ditto. - * c-decl.c (c_expand_body): Call simplify_stmt() before - calling optimize_tree(). - * c-simplify.c: New file. - * c-tree.h (simplify_stmt): Declare. - (print_c_tree) - * tree-dfa.c (find_refs_in_stmt): Fix error message for unhandled - statement codes. - -2002-01-20 Sebastian Pop - - * Makefile.in: Add c-pretty-print.o. - * cp/Make-lang.in: Ditto. - * c-pretty-print.c: New file. - * c-tree.h (print_c_tree): Declare. - (print_c_node): Declare. - (debug_c_tree): Declare. - (debug_c_node): Declare. - -2001-12-29 Diego Novillo - - * c-lang.c (c_post_options): Move code to enable tree-ssa - if -Wuninitialized is used ... - * c-common.c (c_common_post_options): ... here. - -2001-12-29 Diego Novillo - - * Makefile.in (tree-optimize.o): Don't depend on c-common.h - * tree-cfg.c: Don't include c-tree.h. Explain why we need to - include c-common.h. - * tree-dfa.c: Explain why we need to include c-common.h. - * tree-ssa.c: Ditto. - * tree-optimize.c: Don't include c-common.h - -2001-12-21 Nathan Sidwell - - Revert my patch of 2001-07-23 for the moment. - -2001-10-15 Diego Novillo - - * tree-dfa.c (create_varref): If the new reference is inside a - statement, add it to the list of references for that statement. - -2001-10-14 Diego Novillo - - * Merge from mainline: - - Tue Sep 11 11:37:52 CEST 2001 Jan Hubicka - - * basic-block.h (cached_make_edge): New. - (make_edge): Remove first parameter. - * flow.c (cached_make_edge): Rename from make_edge; return - newly created edge; use obstack allocation. - (make_edge): New. - (flow_call_edges_add): Updaet make_edge call. - (add_noreturn_fake_exit_edges): Likewise. - (connect_infinite_loops_to_exit): Liekwise. - (make_label_edge, make_edges, find_sub_basic_blocks): Use - cached_make_edge. - * profile.c (branch_prob): Update make_edge call. - * ssa-dce.c (ssa_eliminate_dead_code): Likewise. - -2001-10-14 Diego Novillo - - * Makefile.in (tree-ssa.o): Remove dependency on flags.h. - (tree-optimize.o): Add dependency on flags.h. - * bb-reorder.c (fixup_reorder_chain): Update call to make_edge. - * c-lang.c (c_post_options): Set flag_tree_ssa if -Wuninitialized - is given. - * ifcvt.c (find_if_case_1): Update call to make_edge. - * toplev.c (toplev_main): Do not warn about -Wuninitialized without - -O if -ftree-ssa is used. - * tree-cfg.c (dot_dump_file): Remove. - (dot_dump_flags): Remove. - (cfg_dump_file): Rename to dump_file. - (cfg_dump_flags): Rename to dump_flags. - (remove_bb_ann): New function. - (tree_find_basic_blocks): Do not open dump files at the beginning - of the function. - Do not call delete_cfg. - Create annotations for ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR. - (make_for_stmt_blocks): Update FOR_INIT_STMT_BB and FOR_COND_BB - when creating the header blocks. - Create the blocks for the loop body before the expression block. - (make_while_stmt_blocks): Update END_WHILE_BB when creating the - header blocks. - Create the blocks for the loop body before the end-while block. - (make_do_stmt_blocks): Update DO_COND_BB when creating header - blocks. - Create the blocks for the loop body before the block for DO_COND. - (create_bb): When creating loop header blocks, allocate space for - the header_blocks union. - Call create_bb_ann to create a new annotation. - (remove_bb_ann): New function. - (tree_split_bb): New function. - (make_edges): Remove first argument from call to make_edge, - make_ctrl_stmt_edges, make_exit_edges, make_for_stmt_edges, - make_while_stmt_edges, make_do_stmt_edges, make_if_stmt_edges, - make_goto_stmt_edges, make_break_stmt_edges and - make_continue_stmt_edges. - When creating edges for the default label, remove the fallthru edge - that was created for the associated SWITCH_STMT entry block. - Do not call delete_unreachable_blocks. - Call tree_cleanup_cfg. - (make_ctrl_stmt_edges): Remove first argument. - (make_exit_edges): Remove first argument. - If the last element of the block is an EXPR_STMT, assume that it is - the call to a non-returning function and make an edge to the exit - block. - Do not call make_return_stmt_edges. Call make_edge directly. - (make_for_stmt_edges): Remove first argument. - Simplify the graph for infinite and zero-iteration loops. - (make_while_stmt_edges): Remove first argument. - Simplify the graph for infinite and zero-iteration loops. - (make_do_stmt_edges): Remove first argument. - Simplify the graph for infinite and one-iteration loops. - (make_if_stmt_edges): Remove first argument. - Simplify the graph for always-true and always-false conditionals. - (make_goto_stmt_edges): Remove first argument. - (make_break_stmt_edges): Remove first argument. - (make_continue_stmt_edges): Remove first argument. - (make_return_stmt_edges): Remove. - (tree_cleanup_cfg): New function. - (delete_unreachable_blocks): Do not react to -Wunreachable-code. - Write to dump file blocks that have been removed. - Call remove_edge. - (is_ctrl_altering_stmt): If the statement contains a call to a - non-returning function, return 1. - (delete_cfg): Call remove_bb_ann. Also remove annotations for - ENTRY_BLOCK_PTR and EXIT_BLOCK_PTR. - (latch_block): Use WHILE_COND_BB instead of END_WHILE_BB. - (insert_stmt_tree_before): Use cfg_dump_file instead of dump_file. - (insert_before_ctrl_stmt): Ditto. - (insert_before_normal_stmt): Ditto. - (insert_stmt_tree_after): Ditto. - (insert_after_ctrl_stmt): Ditto. - (insert_after_normal_stmt): Ditto. - (replace_expr_in_tree): Ditto. - (insert_bb_before): Ditto. - * tree-dfa.c (tree_find_varrefs): Call find_refs_in_expr when the - tree is not a statement. - (find_refs_in_stmt): Update comments. - Do not deal with FOR_STMT and DO_STMT trees separately. - When processing VAR_DECLs, call find_refs_in_expr with the - declaration, not its initial value. - (find_refs_in_expr): When processing COMPONENT_REFs and ARRAY_REFs, - recurse using the same reference type that was given by the - original caller. - (create_varref): Insert new PHI terms at the beginning of the - BB_REFS array, not the end. - * tree-flow.h (struct for_header_blocks): Declare. - (union header_blocks): Declare. - (struct bb_ann_def): Add new field 'loop_hdr'. - (BB_ANN): Re-define so that it can be used as an lvalue. - (BB_PARENT): Ditto. - (BB_REFS): Ditto. - (BB_PREV_CHAIN): Ditto. - (BB_BINDING_SCOPE): Ditto. - (BB_LOOP_HDR): Define. - (FOR_INIT_STMT_BB): Redefine using BB_LOOP_HDR. - (FOR_COND_BB): Ditto. - (FOR_EXPR_BB): Ditto. - (DO_COND_BB): Ditto. - (END_WHILE_BB): New name for WHILE_COND_BB. - (tree_warn_uninitialized): Declare. - (tree_cleanup_cfg): Declare. - (tree_split_bb): Declare. - * tree-optimize.c: Include flags.h. - (init_tree_flow): New function. - (optimize_tree): Call build_tree_ssa instead of building SSA - in-place. - (build_tree_ssa): New function. - * tree-optimize.h (build_tree_ssa): Declare. - * tree-ssa.c: Don't include toplev.h - (tree_warn_uninitialized): Define. - (tree_compute_rdefs): Do not call is_upward_exposed. Instead - traverse all the uses of each variable and warn if the use is - reached by the ghost definition. - -2001-10-10 Graham Stott - - * tree-cfg.c (create_bb): Add new binding_scope parameter which allows - the binding scope either to be explicitly specified if non-zero. - (make_blocks): Update call to create_bb. - (make_for_stmt_blocks): Ditto. - (make_while_stmt_blocks): Ditto. - (make_do_stmt_blocks): Ditto. - (make_if_stmt_blocks): Ditto. - (make_switch_stmt_blocks): Ditto. - (create_maximal_bb): Ditto. - (make_edges): If a statement expression is in the last basic - block create an edge to EXIT_BLOCK_PTR and not the next block. - (insert_before_normal_stmt): Pass the appropriate binding scope to - create_bb. - -2001-10-01 Graham Stott - Diego Novillo - - * tree-optimize.c (optimize_tree): Early return if the program has - errors. - -2001-09-30 Diego Novillo - - * tree-optimize.c (optimize_tree): Compute reaching definitions - after building SSA. - -2001-09-30 Diego Novillo - - * tree-cfg.c (insert_after_ctrl_stmt): Remove unused argument. - (make_blocks): Pop top element from scope binding stack when an end - of scope statement is found. - (create_bb): Remove code for popping top element from scope binding - stack. - Do not push basic block 0 to initialize scope binding stack. - (insert_stmt_tree_after): Remove unused argument from call to - insert_after_ctrl_stmt. - (tree_dump_bb): Dump BB_BINDING_SCOPE if defined. - * doc/invoke.texi: Document debugging option -ftree-dump-ssa-rdefs. - -2001-09-29 Diego Novillo - - * Makefile.in (tree-ssa.o): Update dependencies. - (tree-cfg.o): Ditto. - (tree-optimize.o): Ditto. - * basic-block.h (BB_CONTROL_EXPR): Define. - (BB_CONTROL_ENTRY): Define. - * c-common.h (TDF_RDEFS): Define. - * c-dump.c (dump_option_value_in): Add entry for TDF_RDEFS. - * tree-cfg.c: Include flags.h and c-tree.h - (binding_stack): New local variable. - (delete_block): Rename to delete_bb. - (tree_find_basic_blocks): Initialize varray 'binding_stack'. - Call make_blocks with an additional argument. - Adjust size of varray 'basic_block_info' after building CFG. - (make_blocks): Add new argument prev_chain_p. - Update all callers and callees. - Create sub-graphs for statement-expressions. - Update prev_chain_p when accessing the next tree in the chain. - (make_for_stmt_blocks): Add new argument prev_chain_p. - Update all callers and callees. - Update flags for control header blocks with BB_CONTROL_ENTRY and/or - BB_CONTROL_EXPR. - (make_while_stmt_blocks): Ditto. - (make_do_stmt_blocks): Ditto. - (make_if_stmt_blocks): Ditto. - (make_switch_stmt_blocks): Ditto. - (create_maximal_bb): Add new argument prev_chain_p. - Update all callers and callees. - (create_bb): Add new argument prev_chain_p. - Push basic block 0 the first time into the binding scope stack. - Associate the new basic block to the binding scope at the top of - the binding stack. - Push new binding scopes when a SCOPE_BEGIN statement is found. - Pop the top binding scope when a SCOPE_END statement is found. - (make_edges): Handle statement expressions. - Handle case labels preceded by scope statements in switch - statements. - (make_for_stmt_edges): Use FOR_INIT_STMT_BB, FOR_COND_BB and - FOR_EXPR_BB to access the header basic blocks. - (delete_unreachable_blocks): Call delete_bb instead of - delete_block. - (delete_block): Rename to delete_bb. - (block_invalidates_loop): Use data references to find calls to - non-pure functions. - (is_ctrl_stmt): Reformat. - (loop_body): New function. - (set_loop_body): New function. - (stmt_starts_bb_p): Statement expression trees also start a new - basic block. - (delete_cfg): Call VARRAY_FREE to delete all the references in each - basic block. - (latch_block): Use FOR_EXPR_BB, WHILE_COND_BB and DO_COND_BB to - find out the latch block for the loop. - (last_exec_stmt): New function. - (is_exec_stmt): Scope statements that begin a scope are also - considered executables. - (is_statement_expression): New function. - (first_non_decl_stmt): New function. - (first_decl_stmt): New function. - (first_non_label_in_bb): New function. - (insert_stmt_tree_before): New function. - (insert_before_ctrl_stmt): New function. - (insert_before_normal_stmt): New function. - (insert_stmt_tree_after): New function. - (insert_after_ctrl_stmt): New function. - (insert_after_normal_stmt): New function. - (insert_after_loop_body): New function. - (replace_expr_in_tree): New function. - (find_expr_in_tree): New function. - (insert_bb_before): New function. - (tree_dump_bb): Display the contents of BB_PREV_CHAIN_P. - * tree-dfa.c (tree_find_varrefs): Use accessor macros for array - 'referenced_symbols'. - (find_refs_in_stmt): Do not process error_mark_node trees. - Handle statement-expression nodes as any other statement tree. - Do not call find_refs_in_stmt_expr. - (find_refs_in_stmt_expr): Remove. - (add_ref_to_sym): Remove. - (add_ref_to_bb): Remove. - (find_refs_in_expr): Do not process error_mark_node trees. - ADDR_EXPR trees are not variable references except if used in a - CALL_EXPR node. - Handle EXPR_WITH_FILE_LOCATION nodes. - (create_varref): Remove variable 'is_new'. - Initialize data-flow arrays VARDEF_IMM_USES, VARDEF_RUSES, - VARDEF_PHI_CHAIN and VARUSE_RDEFS. - Do not call add_ref_to_sym and add_ref_to_bb. - (add_ref_symbol): Use accessor macros for varray - 'referenced_symbols'. - (function_may_recurse_p): New function. - (get_fcalls): New function. - (find_declaration): New function. - (dump_varref): Handle NULL values of VARREF_EXPR. - Use VARDEF_PHI_CHAIN instead of VARPHI_CHAIN. - (dump_varref_list): Check if the list is NULL before traversing it. - * tree-flow.h (struct vardef): Add fields 'ruses', 'marked' and - 'phi_chain'. - (VARDEF_RUSES): Define. - (VARDEF_MARKED): Define. - (VARDEF_PHI_CHAIN): Define. - (VARPHI_CHAIN): Remove. - (struct varphi): Remove. - (struct varuse): Add field 'rdefs'. - (VARUSE_RDEFS): Define. - (union varref_def): Remove field 'phi'. - (IS_GHOST_DEF): Define. - (IS_ARTIFICIAL_REF): Define. - (struct bb_ann_def): Add fields 'prev_chain_p' and 'binding_scope'. - (BB_PREV_CHAIN_P): Define. - (BB_BINDING_SCOPE): Define. - (FOR_INIT_STMT_BB): Define. - (FOR_COND_BB): Define. - (FOR_EXPR_BB): Define. - (WHILE_COND_BB): Define. - (DO_COND_BB): Define. - (IF_COND_BB): Define. - (CASE_COND_BB): Define. - (NREF_SYMBOLS): Define. - (REF_SYMBOL): Define. - (ADD_REF_SYMBOL): Define. - (FCALL_NON_PURE): Define. - (FCALL_PURE): Define. - (FCALL_BUILT_IN): Define. - (loop_body): Declare. - (set_loop_body): Declare. - (last_exec_stmt): Declare. - (is_statement_expression): Declare. - (first_non_decl_stmt): Declare. - (first_decl_stmt): Declare. - (first_non_label_in_bb): Declare. - (insert_stmt_tree_before): Declare. - (insert_stmt_tree_after): Declare. - (replace_expr_in_tree): Declare. - (find_expr_in_tree): Declare. - (insert_bb_before): Declare. - (function_may_recurse_p): Declare. - (get_fcalls): Declare. - (find_declaration): Declare. - (tree_compute_rdefs): Declare. - (analyze_rdefs): Declare. - (is_upward_exposed): Declare. - * tree-optimize.c (optimize_tree): Update name for varray - referenced_symbols. - Free varray referenced_symbols and call delete_ssa on exit. - * tree-ssa.c: Include flags.h, diagnostic.h and toplev.h. - (tree_build_ssa): Create ghost definitions before building FUD - chains. - (insert_phi_terms): Use accessor macros for 'referenced_symbols'. - Ignore ghost definitions when placing PHI terms. - (build_fud_chains): Call get_tree_ann to create an annotation for - the symbol if it doesn't already have one. - (search_fud_chains): Reformat comments. - Do not initialize varray VARDEF_IMM_USES. - If a successor basic block does not have references, continue on to - the next one, do not stop. - Do not initialize varray VARDEF_PHI_CHAIN. - (delete_ssa): New function. - (delete_refs): New function. - (tree_compute_rdefs): New function. - (analyze_rdefs): New function. - (follow_chain): New function. - (is_upward_exposed): New function. - -2001-09-14 Diego Novillo - - * tree-cfg.c (tree_find_basic_blocks): Remove call to - mark_critical_edges. - (create_maximal_bb): Do not create annotations for non-executable - statements. - (map_stmt_to_bb): Rename basic_block_ann with bb_ann. - (delete_cfg): Ditto. - (is_exec_stmt): Reformat. - (create_bb_ann): New function. - * tree-dfa.c (create_node): Remove. - (ref_symbols_list): Remove. - (create_tree_ann): Declare. - (referenced_symbols): Declare. - (tree_find_varrefs): Replace usage of linked lists with variable - arrays. - (create_varref): Remove second argument from call to - add_ref_symbol. - Update comments. - (add_ref_to_sym): Replace usage of linked lists with variable - arrays. - Declare static. - (add_ref_to_bb): Ditto. - (add_ref_symbol): Ditto. - (dump_varref_list): Ditto. - (debug_varref_list): Ditto. - (create_varref_list): Remove. - (push_ref): Remove. - (create_node): Remove. - (delete_varref_list): Remove. - (get_tree_ann): Call create_tree_ann if the tree doesn't have an - annotation already. - (create_tree_ann): New function. - * tree-flow.h (varref_list_def): Remove. - (vardef): Change type of field 'imm_uses' to 'varray_type'. - (varphi): Change type of field 'phi_chain' to 'varray_type'. - (varref_node_def): Remove. - (varref_node): Remove. - (VARREF_NODE_ELEM): Remove. - (VARREF_NODE_NEXT): Remove. - (VARREF_NODE_PREV): Remove. - (varref_list_def): Remove. - (varref_list): Remove. - (VARREF_LIST_FIRST): Remove. - (VARREF_LIST_LAST): Remove. - (tree_ann_def): Change type of field 'refs' to 'varray_type'. - (basic_block_ann_def): Rename to 'bb_ann_def'. - Change type of field 'refs' to 'varray_type'. - (basic_block_ann): Rename to 'bb_ann'. - (ref_symbols_list): Remove. - (referenced_symbols): Declare. - (add_ref_to_sym): Remove. - (add_ref_to_bb): Remove. - (add_ref_symbol): Remove. - (remove_ann_from_sym): Remove. - (create_varref_list): Remove. - (push_ref): Remove. - (delete_varref_list): Remove. - (debug_varref_list): Update argument type to be 'varray_type'. - (dump_varref_list): Ditto. - * tree-optimize.c: Include 'basic-block.h'. - (optimize_tree): Replace references to 'ref_symbols_list' with - 'referenced_symbols'. - Remove call to delete_varref_list. - * tree-ssa.c (insert_phi_terms): Rename 'work_list' to - 'work_stack'. - Use VARRAY_PUSH and VARRAY_TOP to access 'work_stack' instead of - maintaining the stack pointer in 'work_list_top'. - Remove code to grow 'work_stack'. - Remove references to 'work_list_top'. - Replace references to 'ref_symbols_list' with 'referenced_symbols'. - (build_fud_chains): Replace references to 'ref_symbols_list' with - 'referenced_symbols'. - (search_fud_chains): If there are no variable references in the - basic block, return early. - Change usage of linked lists with variable arrays. - -2001-09-07 Diego Novillo - - * tree-cfg.c (tree_find_basic_blocks): Document how to traverse - trees inside a basic block. - (make_for_stmt_blocks): Make sure that there is always a block for - FOR_EXPR, even if the loop does not have an expression. - Create a separate block for FOR_INIT_STMT. - (make_while_stmt_blocks): Always create an "end_while" block. - (make_if_stmt_blocks): Do not store IF_COND in the header block of - an IF statement. - (make_for_stmt_edges): Create an edge from the block header to the - block for FOR_INIT_STMT. - Determine the first block of the loop body calling BB_FOR_STMT on - the first executable statement in the body. - Remove the special case for missing FOR_EXPR trees. - (make_while_stmt_edges): Create a back edge from the end_while - block to the header block. - Determine the first block of the loop body calling BB_FOR_STMT on - the first executable statement in the body. - (make_do_stmt_edges): Determine the first block of the loop body - calling BB_FOR_STMT on the first executable statement in the body. - (condition_block): Rename to latch_block. Return the latch - block for the given loop header. - (make_continue_stmt_edges): Rename condition_block to - latch_block. - (successor_block): Ditto. - * tree-flow.h (condition_block): Rename to latch_block. - -2001-09-06 Diego Novillo - - * tree-dfa.c (tree_find_varrefs): Use TDF_REFS instead of TDF_VARREF. - * tree-flow.h (TDF_VARREF): Remove. - -2001-09-04 Nathan Sidwell - - * c-common.h (tree_dump_index): Add more comments. - (TDF_REFS): New dump flag. - * c-dump.c (dump_files): Name flags `tree' rather than `ast'. - (dump_option_value_info): New struct. - (dump_options): New array. - (dump_switch_p): Parse switch options symbolically. - * doc/invoke.texi (-fdump-ast): Rename to ... - (-fdump-tree): ... here. Document options are symbolic, and - not all are applicable. Combine ssa related flags into the other - tree dump flags. - -2001-08-27 Diego Novillo - - * Makefile.in (tree-ssa.o): Update dependencies. - (tree-cfg.o): Ditto. - (tree-dfa.o): Ditto. - (tree-optimize.o): Ditto. - -2001-08-26 Diego Novillo - - * Makefile.in (C_AND_OBJC_OBJS): Replace tree-opt.o with - tree-optimize.o. - (c-decl.o): Ditto. - (tree-ssa.o): Ditto. - (tree-cfg.o): Ditto. - (tree-dfa.o): Ditto. - (tree-opt.o): Ditto. - * c-decl.c: Replace tree-opt.h with tree-optimize.h. - (c_expand_body): Remove call to init_tree_opt. - * flow.c (flow_loop_dump): Do not display insn UIDs if this is not - an RTL basic block. - * tree-cfg.c: Replace tree-opt.h with tree-optimize.h. - (block_invalidates_loop): New local function. - (validate_loops): New function. - (tree_dump_bb): Display the loop depth of the block. - * tree-dfa.c: Replace tree-opt.h with tree-optimize.h. - * tree-flow.h (validate_loops): Declare. - * tree-opt.c: Rename to tree-optimize.c. - * tree-opt.h: Rename to tree-optimize.h. - * tree-optimize.c: Rename from tree-opt.c. - * tree-optimize.h: Rename from tree-opt.h. - * tree-ssa.c: Replace tree-opt.h with tree-optimize.h. - (tree_build_ssa): Call tree_dump_bb instead of tree_debug_bb. - * cp/Make-lang.in: Replace tree-opt.h with tree-optimize.h. - -2001-08-20 Diego Novillo - - * basic-block.h (basic_block): Remove field 'reachable'. - Add new field 'flags'. - (BB_REACHABLE): Define. - * c-common.h (tree_dump_index): Add TDI_cfg, TDI_dot, TDI_ssa. - * c-decl.c (c_decode_option): Skip '-f' prefix before calling - dump_switch_p. - * c-dump.c (dump_file_info): Add entries for -fdump-tree-cfg, - -fdump-tree-graphviz and -fdump-tree-ssa. - * flow.c (find_unreachable_blocks): Use BB_REACHABLE bit in bb->flags - instead of bb->reachable. - (delete_unreachable_blocks): Ditto. - * tree-cfg.c: Minor formatting changes throughout the file. - (DEBUG_TREE_FLOW): Remove. - (debug_tree_flow): Remove. - (cfg_dump_file): New local variable. - (dot_dump_file): New local variable. - (cfg_dump_flags): New local variable. - (dot_dump_flags): New local variable. - (tree_find_basic_blocks): Remove unused arguments. - Add code to react to -fdump-tree-cfg and -fdump-tree-graphviz. - Remove uses of DEBUG_TREE_FLOW. - (delete_unreachable_blocks): Use BB_REACHABLE bit in bb->flags - instead of bb->reachable. - (tree_dump_cfg): New. - (tree_debug_cfg): Call tree_dump_cfg(). - (tree_cfg2dot): Accept a FILE pointer instead of a file name as - argument. - Name the graph with the current function name. - * tree-dfa.c: Minor formatting changes throughout the file. - (DEBUG_TREE_DFA): Remove. - (debug_tree_dfa): Remove. - (dump_file): New local variable. - (dump_flags): New local variable. - (tree_find_varrefs): Add code to react to -fdump-tree-ssa. - Remove uses of DEBUG_TREE_DFA. - (find_refs_in_expr): Remove uses of DEBUG_TREE_DFA. - (create_varref): Replace VARREF_BLOCK with VARREF_BB. - * tree-flow.h: Minor formatting changes throughout the file. - (VARREF_BLOCK): Rename to VARREF_BB. - (VARREF_NEXT): Remove. - (VARREF_PREV): Remove. - (TDF_VARREF): Define. - (tree_find_basic_blocks): Remove unused arguments. - (tree_dump_cfg): Declare. - (tree_cfg2dot): Change argument to FILE *. - * tree-opt.c: Minor formatting changes throughout the file. - (optimize_tree): Remove unused arguments in call to - tree_find_basic_blocks(). - * tree-opt.h: Ditto. - * tree-ssa.c: Minor formatting changes throughout the file. - (DEBUG_TREE_SSA): Remove. - (debug_tree_ssa): Remove. - (dump_file): New local variable. - (dump_flags): New local variable. - (tree_build_ssa): Add code to react to -fdump-tree-ssa. - Remove uses of DEBUG_TREE_SSA. - (insert_phi_terms): Remove uses of DEBUG_TREE_SSA. - * doc/invoke.texi: Add documentation for -fdump-tree-cfg, - -fdump-tree-graphviz and -fdump-tree-ssa. - Replace existing references to -fdump-tree with -fdump-ast. - -2001-08-10 Diego Novillo - - * basic-block.h (basic_block): Add new field 'reachable'. - (expunge_block): Declare. - * flow.c (ENTRY_BLOCK_PTR): Initialize field 'reachable'. - (EXIT_BLOCK_PTR): Ditto. - (expunge_block): Remove static declaration. - (cleanup_cfg): Clear bb->aux on every basic block. - (find_unreachable_blocks): Use field 'reachable' when computing - reachability. - (delete_unreachable_blocks): Use field 'reachable'. - - * tree-cfg.c: Rename all instance of 'node' with 'block. - (get_successor_block): Rename to successor_block. - (make_compound_stmt_edges): Remove. - (make_switch_stmt_edges): Remove. - (delete_unreachable_blocks): New. - (delete_block): New. - (make_blocks): Add new argument 'compound_stmt'. Do not include - COMPOUND_STMT trees in the flowgraph. - (make_for_stmt_blocks): Include FOR_INIT_STMT in the entry block of - the loop. - If FOR_COND does not exist, create a tree holding the constant 1. - Add new argument 'compound_stmt'. - (make_while_stmt_blocks): Include WHILE_COND in the entry block of - the loop. - Add new argument 'compound_stmt'. - (make_do_stmt_blocks): Add new argument 'compound_stmt'. - (make_if_stmt_blocks): Add new argument 'compound_stmt'. - Include IF_COND in the IF header block. - (make_switch_stmt_blocks): Add new argument 'compound_stmt'. - Include SWITCH_COND in the SWITCH header block. - (create_maximal_bb): Remove argument 'is_loop_header'. - Add new argument 'compound_stmt'. - Update all callers. - Return the newly created basic block instead of its last statement. - Update comments. - Do not store control flow altering statements in bb->exit_stmt. - Only add executable statements to the block. - Annotate with 'compound_stmt' each tree added to the block. - (create_bb): Do not update annotation 'is_loop_header'. - (make_edges): Remove naive reachability analysis. - When a label node is found, add an edge from the immediately - enclosing switch statement. - Call delete_unreachable_blocks() after adding all the edges. - (make_ctrl_stmt_edges): Do not consider COMPOUND_STMT trees. - Do nothing for SWITCH_STMT trees. - (make_exit_edges): Use bb->end_tree instead of BB_EXIT_STMT. - (make_for_stmt_edges): Remove code that added edges for the block - holding FOR_INIT_STMT. - Update comments. - Do not consider the case where FOR_COND is NULL. - Call first_exec_stmt() to determine if FOR_BODY is empty. - Only create an edge from expr_bb to cond_bb if FOR_EXPR is - non-null. - (make_while_stmt_edges): Remove code that added edges for the block - holding WHILE_COND. - Update comments. - Call first_exec_stmt() to determine if WHILE_BODY is empty. - (make_do_stmt_edges): Call first_exec_stmt() to determine if - DO_BODY is empty. - (make_if_stmt_edges): Remove code that added edges for the block - holding IF_COND. - Call first_exec_stmt() to determine if THEN_CLAUSE or ELSE_CLAUSE - are empty. - (make_switch_stmt_edges): Remove. - (make_goto_stmt_edges): Use bb->end_tree instead of BB_EXIT_STMT. - (make_break_stmt_edges): Use bb->end_tree instead of BB_EXIT_STMT. - Call switch_parent() and loop_parent() to determine if the - statement is inside an appropriate control structure. - (make_continue_stmt_edges): Use bb->end_tree instead of - BB_EXIT_STMT. - (make_return_stmt_edges): Ditto. - (get_successor_block): Rename to successor_block. - Call first_exec_stmt() to find the first executable statement in - TREE_CHAIN. - (is_ctrl_stmt): Do not consider COMPOUND_STMT trees. - (stmt_starts_bb_p): Ditto. - (stmt_ends_bb_p): Reformat comments. - (delete_cfg): Reformat comments. - (find_loop_parent): Rename to loop_parent. - (get_condition_block): Rename to condition_block. - Update to use new index numbers for control structure header - blocks. - (switch_parent): New. - (first_exec_stmt): New. - (is_exec_stmt): New. - (tree_cfg2dot): Reformat comments. - * tree-dfa.c (find_refs): Remove. - (find_refs_in_stmt): New - (find_refs_in_stmt_expr): New. - (tree_find_varrefs): Look for variables doing a CFG traversal - instead of the trees. Remove both arguments. - (find_refs_in_expr): Add new argument 'bb'. - Update all recursive calls. - (create_varref): Abort if the basic block 'bb' is NULL. - (add_ref_to_sym): Reformat comments. - (add_ref_symbol): Ditto. - (delete_varref_list): Ditto. - * tree-flow.h (struct tree_ann_def): Add 'compound_stmt'. - (TREE_COMPOUND_STMT): New macro. - (struct basic_block_ann_def): Remove 'exit_stmt' and - 'is_loop_header'. - (BB_EXIT_STMT): Remove. - (BB_IS_LOOP_HEADER): Remove. - * tree-opt.c (optimize_tree): Call tree_find_varrefs() with no - arguments. - Only build DFA and SSA information if n_basic_blocks is greater - than zero. - * tree-ssa.c: Rename all instances of 'node' with 'block'. - (tree_build_ssa): Reformat comments. - (insert_phi_terms): Ditto. - -2001-08-01 Diego Novillo - - * tree-cfg.c (USE_TREE_IL): Remove. - (make_back_edges): Remove. - (make_fallthru_edge): Remove. - (get_outermost_scope_block): Remove. - (is_last_block_of_loop): Remove. - (tree_find_basic_blocks): Do not return early if 'errorcount' is set. - (make_edges): Do not treat back edges as a separate case. - Do not call make_fallthru_edge to create fall-through edges. - Do not emit a warning for unreachable blocks containing a single - closing brace. - (make_do_stmt_edges): Update comment. - (make_goto_stmt_edges): Do not call get_outermost_scope_block(). - (make_break_stmt_edges): Do not call get_outermost_scope_block(). - Do not call make_back_edges(). - (make_continue_stmt_edges): Call find_loop_parent(). Emit an error - if the 'continue' statement is not inside a loop. Call - get_condition_block() to find the target node. - (make_return_stmt_edges): Do not call get_outermost_scope_block(). - (get_successor_block): Return EXIT_BLOCK_PTR if 'bb' is the last - block in the graph. - Return the condition node of the loop if 'bb' doesn't have a - natural successor and its parent is a loop header. - (tree_cfg2dot): Output fake edges with dotted lines. - * tree-dfa.c (USE_TREE_IL): Remove. - * tree-opt.c (USE_TREE_IL): Remove. - * tree-ssa.c (USE_TREE_IL): Remove. - * tree-flow.h (is_last_block_of_loop): Remove. - -2001-07-23 Diego Novillo - - * Makefile.in (C_AND_OBJC_OBJS): Add tree-cfg.o, tree-dfa.o, - tree-ssa.o and tree-opt.o. - (c-decl.o): Add dependency on tree-opt.h - (tree-ssa.o): New rule. - (tree-cfg.o): New rule. - (tree-dfa.o): New rule. - (tree-opt.o): New rule. - * c-decl.c: Include tree-opt.h. - (c_expand_body): Call optimize_tree() when the -ftree-ssa flag is - given. - * flags.h (flag_tree_ssa): Declare. - * toplev.c (flag_tree_ssa): Define. - (lang_independent_options): Add -ftree-ssa. - * tree-cfg.c: New file. - * tree-dfa.c: New file. - * tree-flow.h: New file. - * tree-opt.c: New file. - * tree-opt.h: New file. - * tree-ssa.c: New file. - * cp/Make-lang.in (CXX_C_OBJS): Add tree-cfg.o, tree-dfa.o, - tree-opt.o and tree-ssa.o. - * doc/invoke.texi: Add documentation for -ftree-ssa. - -2001-07-23 Nathan Sidwell - - * Makefile.in (calls.o): Depend on intl.h. - * calls.c: Include intl.h. - (ECF_NEED_STACK_FRAME, ECF_NEED_ARG_FRAME): New flags. - (special_function_p): Detect when we need a stack or arg - frame. Don't optimize on length. - (setjmp_call_p): Remove. - (uninlinable_call_p): New function. - * tree.h (setjmp_call_p): Remove. - (uninlinable_call_p): Declare. - -2001-07-22 Nathan Sidwell - - * params.def (PARAM_MAX_INLINE_AST): New parameter. - (PARAM_ARG_INLINE_AST): New parameter. - * doc/invoke.texi (max-inline-ast, arg-inline-ast): Document - parameters. - -Local Variables: -mode: change-log -change-log-default-name: "ChangeLog.tree-ssa" -End: - - -Copyright (C) 2001-2004 Free Software Foundation, Inc. - -Copying and distribution of this file, with or without modification, -are permitted in any medium without royalty provided the copyright -notice and this notice are preserved. -- cgit v1.2.3