| 2004-05-11 Diego Novillo <dnovillo@redhat.com> | |
| * tree-cfg.c (delete_tree_cfg): Update call to | |
| free_basic_block_vars. | |
| 2004-05-10 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa-live.h: Fix typo in #include guard. | |
| 2004-05-08 Jeff Sturm <jsturm@one-point.com> | |
| * tree-eh.c (lower_catch): Lower catch body in context of | |
| catch_region. | |
| 2004-05-07 Richard Henderson <rth@redhat.com> | |
| * tree-eh.c (tree_could_trap_p): Use get_base_address on references. | |
| 2004-05-07 Diego Novillo <dnovillo@redhat.com> | |
| * doc/invoke.texi: Remove documentation for -ftree-copyprop. | |
| Update documentation for -ftree-pre. | |
| 2004-05-06 Richard Henderson <rth@redhat.com> | |
| * 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 <zack@codesourcery.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * gimplify.c (create_tmp_var): Disallow variable sized objects. | |
| (gimplify_modify_expr): Don't memcpy for VA_ARG_EXPR. | |
| 2004-05-05 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| PR c/15062 | |
| * c-typeck.c (build_asm_expr): Mark the output operands | |
| to an asm addressable, if necessary. | |
| 2004-05-05 Steven Bosscher <stevenb@suse.de> | |
| * Makefile.in (GTFILES): Remove duplicate basic-block.h. | |
| 2004-05-04 Richard Henderson <rth@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| * 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 <rth@redhat.com> | |
| * c-simplify.c (gimplify_if_stmt): Loop for else-if. | |
| 2004-05-03 Andrew Pinski <pinskia@physics.uc.edu> | |
| PR optimization/15245 | |
| * tree-ssa-phiopt.c (conditional_replacement): Use fold_convert | |
| instead of convert. | |
| 2004-05-03 Diego Novillo <dnovillo@redhat.com> | |
| * gimplify.c (gimplify_compound_lval): Gimplify non-constant | |
| array indices into a temporary variable. | |
| 2004-04-30 Richard Henderson <rth@redhat.com> | |
| * builtins.c (validate_arglist): Don't reject side effects. | |
| (simplify_builtin_strcpy): Do reject side effects in length. | |
| 2004-04-30 Jeff Law <law@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <per@bothner.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| * c-simplify.c (gimplify_decl_stmt) [TYPE_DECL]: | |
| Do not check the type. | |
| 2004-04-22 Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| PR middle-end/14978 | |
| * tree-nested.c (convert_nonlocal_reference): Set val_only when | |
| processing any otherwise unhandled expression. | |
| 2004-04-21 Jeff Law <law@redhat.com> | |
| * 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 <bje@au.ibm.com> | |
| PR middle-end/14730 | |
| * expr.c (expand_expr_real_1) <SWITCH_EXPR>: 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * doc/passes.texi: Add blurb about PRE. | |
| 2004-04-19 Andrew Pinski <pinskia@physics.uc.edu> | |
| * tree-ssa-phiopt.c (conditional_replacement): | |
| Catch some more non-gimple. | |
| 2004-04-19 Jan Hubicka <jh@suse.cz> | |
| * predict.c (combine_predictions_for_bb): Fix pasto. | |
| 2004-04-18 Jan Hubicka <jh@suse.cz> | |
| * tree-inline.c (estimate_num_insn_1): Deal properly with | |
| builtin_constant_p and builtin_expect. | |
| 2004-04-17 Andrew MacLeod <amacleod@redhat.com> | |
| * doc/invoke.texi (tree-ter, tree-lrs): Document options. | |
| 2004-04-17 Paul Brook <paul@codesourcery.com> | |
| * Makefile.in: Set GMPLIBS and GMPINC. | |
| * configure.ac: Add GMPLIBS and GMPINC. | |
| * configure: Regenerate. | |
| 2004-04-16 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| * 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 <paul@codesourcery.com> | |
| * Makefile.in (GMPLIBS, GMPINC): Don't set. | |
| * configure.ac: Remove checks for GMP. | |
| * configure: Regenerate. | |
| 2004-04-13 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * tree-ssa-dom.c: Revert all changes from 2004-04-12. | |
| 2004-04-12 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * flags.h (flag_tree_loop): Remove. Update all users. | |
| * opts.c (common_handle_option) <OPT_ftree_loop_optimize>: 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 <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <bbooth@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * doc/tree-ssa.texi: Add documentation for the dominator | |
| walker. | |
| 2004-04-07 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * gimplify.c (gimplify_call_expr): Don't use POST_P when | |
| gimplifying CALL_EXPR arguments. | |
| 2004-04-06 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <bje@au.ibm.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| * tree-ssa-ccp.c (fold_stmt_r): Fix whitespace formatting. | |
| (set_rhs): Likewise. | |
| 2004-04-03 Paolo Bonzini <bonzini@gnu.org> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fjahanian@apple.com> | |
| * c-convert.c (convert): Make convert work when converting | |
| to compatible types across translation unit. | |
| 2004-04-02 Andrew Pinski <pinskia@physics.uc.edu> | |
| * 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 <kazu@cs.umass.edu> | |
| * tree-ssa-forwprop.c: Add a comment about forward propagation | |
| of TRUTH_NOT_EXPR. | |
| 2004-04-01 Diego Novillo <dnovillo@redhat.com> | |
| * tree-optimize.c (tree_rest_of_compilation): Fix typo in | |
| setting of in_gimple_form. | |
| 2004-04-01 Jeff Law <law@redhat.com> | |
| * 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 <bbooth@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * configure.ac: Emit confirmation messages for libbanshee. | |
| * configure: Regenerate. | |
| 2004-03-29 Jan Hubicka <jh@suse.cz> | |
| PR 14756 | |
| * cgraphunit.c (cgraph_decide_inlining): Rewrite handling of | |
| always_inline functions. | |
| 2004-03-28 Jan Hubicka <jh@suse.cz> | |
| * tree-inline.c (expand_call_inline): Remove fixme introduced by | |
| nested function patch. | |
| 2004-03-26 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * passes.c (rest_of_compilation): Re-enable .01.rtl | |
| dumps. | |
| 2004-03-25 Diego Novillo <dnovillo@redhat.com> | |
| * tree-pretty-print.c (dump_generic_node) <WITH_RECORD_EXPR>: Remove. | |
| * tree-inline.c (estimate_num_insns_1) <WITH_RECORD_EXPR>: 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa-alias.c (struct alias_info): Change type of field | |
| 'num_references' to varray_type. Update all users. | |
| 2004-03-24 Jeff Law <law@redhat.com> | |
| * c-mudflap (mflang_flush_calls): Use push_scope/pop_scope instead | |
| of pushlevel and poplevel. | |
| 2004-03-23 Richard Henderson <rth@redhat.com> | |
| PR middle-end/14694 | |
| * c-common.c (handle_alias_attribute): Mark aliased variables | |
| to be TREE_STATIC. | |
| 2004-03-23 Jeff Law <law@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-ssa-dce.c (find_obviously_necessary_stmts, | |
| perform_tree_ssa_dce): Do not remove loops. | |
| 2004-03-19 Diego Novillo <dnovillo@redhat.com> | |
| 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 <kazu@cs.umass.edu> | |
| * fold-const.c (fold_relational_const): Remove dead code. | |
| 2004-03-19 Dale Johannesen <dalej@apple.com> | |
| * tree-ssa-dse.c (dse_optimize_stmt): Redirect uses feeding into | |
| a deleted store correctly. | |
| 2004-03-19 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dpatel@apple.com> | |
| * 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 <law@redhat.com> | |
| * tree-tailcall.c (find_tail_calls): Tighten test for tail recursion. | |
| 2004-03-17 Diego Novillo <dnovillo@redhat.com> | |
| 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 <jh@suse.cz> | |
| * tree-ssa.c (rewrite_into_ssa, compute_global_livein): Fix. | |
| 2004-03-17 Paolo Bonzini <bonzini@gnu.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dalej@apple.com> | |
| * 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 <dalej@apple.com> | |
| 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 <dberlin@dberlin.org> | |
| 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 <dnovillo@redhat.com> | |
| PR optimization/14553 | |
| * tree-ssa.c (replace_immediate_uses): Call propagate_value to | |
| update operands. | |
| 2004-03-12 Diego Novillo <dnovillo@redhat.com> | |
| * tree-alias-common.c (create_alias_vars): Add #if | |
| HAVE_BANSHEE around test for PTA_ANDERSEN. | |
| 2004-03-11 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| PR 14204 | |
| * tree-ssa.c (warn_uninit): Don't warn for hard register variables. | |
| 2004-03-10 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-nested.c (convert_nonlocal_reference): Clear TREE_INVARIANT | |
| on modified ADDR_EXPRs. | |
| 2004-03-10 Andrew Pinski <apinski@apple.com | |
| PR c/14475 | |
| * c-decl.c (check_bitfield_type_and_width): Check for null | |
| lang_type_specific when check the precision of an enum. | |
| 2004-03-09 Andrew Pinski <apinski@apple.com> | |
| * Makefile.in (tree-ssa-forwprop.o): Fix the dependences. | |
| 2004-03-09 Jeff Law <law@redhat.com> | |
| * tree-flow-inline.h (may_propagate_copy): Do not allow propagation of | |
| a constant for a virtual operand. | |
| 2004-03-08 Richard Henderson <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <uweigand@de.ibm.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-ssa-loop-live.c (coalesce_tpa_members): Update the root | |
| variable of the partition. | |
| 2004-03-04 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * cgraphunit.c (cgraph_optimize): Do not do memory release | |
| check if there have been errors. | |
| 2004-03-03 Jeff Law <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| PR optimization/14266 | |
| * tree-ssa-alias.c (create_global_var): Mark GLOBAL_VAR for | |
| renaming. | |
| 2004-03-01 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * doc/passes.texi: Add information about mudflap. | |
| 2004-03-01 Andrew Pinski <pinskia@physics.uc.edu> | |
| PR middle-end/13066 | |
| * fold-const (fold): Call fold_convert when building | |
| a TRUTH_*_EXPR tree. | |
| 2004-03-01 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <edelsohn@gnu.org> | |
| * doloop.c (doloop_optimize): Increment n_iterations if loop->top | |
| present. | |
| 2004-02-29 Diego Novillo <dnovillo@redhat.com> | |
| * gimple-low.c (pass_remove_useless_vars): Add TODO_dump_func. | |
| 2004-02-27 Richard Henderson <rth@redhat.com> | |
| PR middle-end/14310 | |
| * explow.c (emit_stack_save): Remove savearea mode check. | |
| 2004-02-27 Richard Henderson <rth@redhat.com> | |
| * 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 <dalej@apple.com> | |
| * tree-cfg.c (cleanup_control_expr_graph): Prevent edge | |
| probability from overflowing due to roundoff errors. | |
| 2004-02-27 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-cfg.c (tree_redirect_edge_and_branch_1): Allow to redirect | |
| RETURN_EXPR branches. | |
| 2004-02-26 Jeff Law <law@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| * 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 <amacleod@redhat.com> | |
| * tree-ssa.c (find_replaceable_in_bb): Don't repalce expressions in | |
| volatile statements. | |
| 2004-02-25 Richard Henderson <rth@redhat.com> | |
| 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 <kazu@cs.umass.edu> | |
| * doc/invoke.texi: Replace -fdump-tree-all-ssa with | |
| -fdump-tree-all. | |
| 2004-02-24 Kazu Hirata <kazu@cs.umass.edu> | |
| 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * doc/tree-ssa.texi: Fix formatting mark ups. | |
| 2004-02-24 Jeff Law <law@redhat.com> | |
| * 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 <sebastian.pop@cri.ensmp.fr> | |
| * 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 <rth@redhat.com> | |
| * doc/passes.texi: Rewrite. | |
| 2004-02-23 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dalej@apple.com> | |
| * 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 <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-ssa-loop.c (do_while_loop_p): New function. | |
| (copy_loop_headers): Do not peel do-while loops. | |
| 2004-02-21 Jan Hubicka <jh@suse.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| 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 <rth@redhat.com> | |
| PR opt/14194 | |
| * tree-ssa-ccp.c (substitute_and_fold): Also mark new vars | |
| if fold_stmt was successful. | |
| 2004-02-20 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <edelsohn@gnu.org> | |
| * config/rs6000/aix.h (MFWRAP_SPEC): Define. | |
| (MFLIB_SPEC): Define. | |
| 2004-02-19 Jeff Law <law@redhat.com> | |
| * tree-ssa-phiopt.c (tree_ssa_phiopt): TRUTH_NOT_EXPR is valid | |
| gimple code. | |
| 2004-02-19 Steven Bosscher <stevenb@suse.de> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <bbooth@redhat.com> | |
| * tree-ssa-ccp.c (substitute_and_fold): Update stmt after | |
| calling fold_stmt. | |
| 2004-02-16 Andrew Pinski <pinskia@physics.uc.edu> | |
| * config/rs6000/rs6000.c (output_function_profiler): Check | |
| cfun->static_chain_decl instead of current_function_needs_context. | |
| 2004-02-16 Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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) <LABEL_DECL>: Don't force_label_rtx. | |
| <COND_EXPR>: Ignore the possibility of non-local labels. | |
| <ADDR_EXPR>: 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 <stevenb@suse.de> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-phinodes.c (resize_phi_node): Do not use ggc_realloc to | |
| allocate a new PHI node. | |
| 2004-02-12 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dalej@apple.com> | |
| * 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 <law@redhat.com> | |
| * 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 <stevenb@suse.de> | |
| * doc/cfg.texi: New file. | |
| * doc/ggcint.texi: Include it. Add a new chapter. | |
| 2004-02-11 Jeff Law <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * tree-ssa.c (rewrite_out_of_ssa): Don't use coalesce list until new | |
| bug resolved. | |
| 2004-02-11 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-sra.c (lookup_scalar): Handle unnamed fields. | |
| 2004-02-10 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| Revert: | |
| 2004-02-06 Richard Henderson <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| 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 <rth@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-ssa-dom.c (simplify_rhs_and_lookup_avail_expr): Allow | |
| mixing PLUS and MINUS when folding operations. | |
| 2004-02-05 Andrew Macleod <amacleod@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * builtins.c (fold_builtin_expect): New. | |
| (fold_builtin_1): Call it. | |
| 2004-02-04 Jeff Law <law@redhat.com> | |
| * 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 <bbooth@redhat.com> | |
| PR opt/13755 | |
| * tree-dfa.c (compute_alias_sets): set rename flag for variables | |
| aliased by GLOBAL_VAR. | |
| 2004-02-04 Richard Henderson <rth@redhat.com> | |
| * tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): New. | |
| (eliminate_redundant_computations): Call it. | |
| 2004-02-03 Richard Henderson <rth@redhat.com> | |
| 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 <rth@redhat.com> | |
| 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 <stevenb@suse.de> | |
| * 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 <jh@suse.cz> | |
| * cgraphunit.c (cgraph_mark_inline_edge): Fix insertion to | |
| cgraph_inline_hash. | |
| 2004-01-30 Frank Ch. Eigler <fche@redhat.com> | |
| * 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 <ian@wasabisystems.com> | |
| * gengtype-yacc.y (bitfieldlen): Add empty action. | |
| 2004-01-30 Diego Novillo <dnovillo@redhat.com> | |
| * configure.ac: Move configuration for libbanshee and | |
| libgmp from configure.in. | |
| 2004-01-30 Richard Henderson <rth@redhat.com> | |
| 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 <jason@redhat.com> | |
| PR c++/13865 | |
| * c-simplify.c (gimplify_for_stmt): Reorganize to fix cleanups. | |
| 2004-01-29 Richard Henderson <rth@redhat.com> | |
| PR c++/13543 | |
| * tree-inline.c (initialize_inlined_parameters): Register the | |
| substitute reference also. | |
| 2004-01-29 Richard Henderson <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * cfg.c (unlink_block): Reset prev_bb and next_bb. | |
| 2004-01-29 Jeff Law <law@redhat.com> | |
| Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dalej@apple.com> | |
| * Makefile.in (OBJS-common): Move tree-nomudflap.o... | |
| (OBJS-archive): ...to here, and remove duplicate tree-optimize.o. | |
| 2004-01-28 Richard Henderson <rth@redhat.com> | |
| 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 <rth@redhat.com> | |
| 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 <fche@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (rename_1): Add some more comments. | |
| 2004-01-25 Andrew Pinski <pinskia@physics.uc.edu> | |
| 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 <rth@redhat.com> | |
| 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 <rth@redhat.com> | |
| 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 <stevenb@suse.de> | |
| PR opt/13767 | |
| * tree-cfg.c (simple_goto_p): Remove NONLOCAL_LABEL check. | |
| 2004-01-21 Dale Johannesen <dalej@apple.com> | |
| * tree-dfa.c: Fix comment. | |
| 2004-01-21 Richard Henderson <rth@redhat.com> | |
| 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 <dalej@apple.com> | |
| * tree-ssa-dom.c (cprop_into_stmt): Add convert call | |
| to prevent type mismatches. | |
| 2004-01-21 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <roger@eyesopen.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rth@redhat.com> | |
| * tree-sra.c (get_scalar_for_field): Validate field. | |
| (create_scalar_copies): Iterate over rhs fields too. | |
| 2004-01-19 Dale Johannesen <dalej@apple.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mf_build_check_statement_for): Tolerate | |
| incoming locus NULL pointer. | |
| 2004-01-18 Richard Henderson <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-cfg.c (dump_function_to_file): Move ";; Function" header ... | |
| * tree-optimize.c (execute_one_pass): ... here. | |
| 2004-01-17 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-complex.c (expand_complex_operations_1): Fix RETURN_EXPR | |
| thinko in last change. | |
| 2004-01-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| * tree-cfg.c (verify_expr): Tidy. Check COND_EXPR for boolean | |
| condition. | |
| 2004-01-17 Jan Hubicka <jh@suse.cz> | |
| 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 <rth@redhat.com> | |
| PR opt/13718 | |
| * tree-complex.c (expand_complex_comparison): Handle COND_EXPR. | |
| (expand_complex_operations_1): Likewise. | |
| 2004-01-17 Richard Henderson <rth@redhat.com> | |
| * tree-sra.c (scalarize_tree_list): Take bitmap argument to | |
| avoid emitting duplicates. Update all callers. | |
| 2004-01-17 Richard Henderson <rth@redhat.com> | |
| 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 <dberlin@dberlin.org> | |
| * 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 <stevenb@suse.de> | |
| * tree-optimize.c (init_tree_optimization_passes): Run DCE | |
| before the first dominator optimization pass. | |
| 2004-01-15 Brian Booth <bbooth@redhat.com> | |
| Richard Henderson <rth@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mf_xform_derefs): Accept void return statements. | |
| 2004-01-15 Andrew MacLeod <amacleod@redhat.com> | |
| Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * cfghooks.c (predicted_by_p): Add missing return. | |
| 2004-01-15 Richard Henderson <rth@redhat.com> | |
| * tree-ssa-dom.c (optimize_stmt): Dump new statement if | |
| folding succeeded. | |
| 2004-01-15 Kazu Hirata <kazu@cs.umass.edu> | |
| * 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 <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-cfg.c (tree_make_forwarder_block): Fix. | |
| 2004-01-14 Richard Henderson <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mf_xform_derefs): Restore instrumentation of | |
| RETURN_EXPRs. | |
| 2004-01-11 Jan Hubicka <jh@suse.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <stevenb@suse.de> | |
| PR optimization/13599 | |
| * tree-cfg.c (remove_useless_stmts_cond): Clear last-goto | |
| before returning. | |
| 2004-01-09 Richard Henderson <rth@redhat.com> | |
| * gimplify.c (gimplify_asm_expr): Fix ordering of ASM_INPUTS. | |
| 2004-01-09 Jan Hubicka <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * tree-inline.c (estimate_num_insns_1): Fix. | |
| 2004-01-09 Richard Henderson <rth@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * tree-ssa-dce.c (find_useful_stmts): Do not consider PHIs for | |
| virtual operands inherently necessary. | |
| 2004-01-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * expr.c (string_constant): Recognize array_ref. | |
| 2004-01-06 Richard Henderson <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * fold-const.c (fold): Do not rebuild comparison when nothing | |
| changed. | |
| 2004-01-05 Jan Hubicka <jh@suse.cz> | |
| * tree-ssa-ccp.c (ccp_fold_builtin): Return early for builtins | |
| taking no arugment. | |
| 2004-01-05 Steven Bosscher <steven@gcc.gnu.org> | |
| * 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 <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <pinskia@physics.uc.edu> | |
| * config.gcc (powerpc-*-darwin*): Make libbanshee rebuild | |
| on PPC darwin. | |
| 2004-01-05 Richard Henderson <rth@redhat.com> | |
| * gimplify.c (gimplify_expr): Move check for error_mark inside | |
| the main loop. | |
| 2004-01-04 Jan Hubicka <jh@suse.cz> | |
| * 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 <aj@suse.de> | |
| * common.opt: Re-order some options in ASCII collating orders. | |
| 2004-01-03 Richard Henderson <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <toon@moene.indiv.nluug.nl> | |
| * 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 <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <kazu@cs.umass.edu> | |
| * 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 <jason@redhat.com> | |
| 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * stmt.c (expand_start_loop, expand_loop_continue_here, | |
| expand_end_loop): Don't create loop notes. | |
| 2003-12-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| Jeff Law <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * tree-inline.c (estimate_num_insns_1): Check that all nodes are | |
| known; add missing nodes; fix MODIFY_EXPR | |
| 2003-12-16 Jason Merrill <jason@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * cgraphunit.c (cgraph_remove_unreachable_nodes): Fix typo; | |
| improve comments; cleanup linked list mantenance. | |
| 2003-12-15 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-optimize.c (optimize_function_tree): Call BITMAP_XFREE. | |
| 2003-12-15 Diego Novillo <dnovillo@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| 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 <aj@suse.de> | |
| * config/rs6000/rs6000.c (rs6000_output_function_epilogue): Handle | |
| GNU F95. | |
| 2003-12-14 Jan Hubicka <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * cgraphunit.c (cgraph_optimize): Do not decide inlining when not | |
| inlining | |
| 2003-12-11 Jan Hubicka <jh@suse.cz> | |
| * tree-inline.c (initialize_inlined_parameters): Disable | |
| constant propagation for non-gimple-min-invariant when | |
| preserving gimple form. | |
| 2003-12-11 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dalej@apple.com> | |
| * tree-dfa.c (compute_alias_sets): Don't try to make | |
| GLOBAL_VAR alias itself. | |
| 2003-12-08 Steven Bosscher <stevenb@suse.de> | |
| * 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 <jh@suse.cz> | |
| * cgraph.c (cgraph_function_possibly_inlined_p): Fix syntax error on | |
| gcc-2.95. | |
| 2003-12-10 Diego Novillo <dnovillo@redhat.com> | |
| Revert | |
| 2003-12-07 Richard Henderson <rth@redhat.com> | |
| * c-common.c (c_address_looks_like_offsetof): New. | |
| * c-common.h (c_address_looks_like_offsetof): Declare. | |
| * c-typeck.c (build_unary_op) <ADDR_EXPR>: 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) <ADDR_EXPR>: Use | |
| handled_component_p and look inside references. | |
| <MINUS_EXPR>: Always look past widening casts. | |
| 2003-12-09 Jan Hubicka <jh@suse.cz> | |
| * 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 <stevenb@suse.de> | |
| * tree-optimize.c (optimize_function_tree): Move verify_ssa calls | |
| into conditionals. | |
| 2003-12-08 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-alias-ander.c (andersen_same_points_to_set): Fix memory leak. | |
| 2003-12-08 Jeff Law <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * tree-dump.c (dump_files): Fix ordering of tail call pass. | |
| * tree.h (tree_dump_index): Likewise. | |
| 2003-12-08 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <stevenb@suse.de> | |
| Jan Hubicka <jh@suse.de> | |
| * 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 <rth@redhat.com> | |
| * c-common.c (c_address_looks_like_offsetof): New. | |
| * c-common.h (c_address_looks_like_offsetof): Declare. | |
| * c-typeck.c (build_unary_op) <ADDR_EXPR>: 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) <ADDR_EXPR>: Use | |
| handled_component_p and look inside references. | |
| <MINUS_EXPR>: Always look past widening casts. | |
| 2003-12-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-cfg.c (compute_dominance_frontiers): Don't assume that | |
| the first block has index 0. | |
| 2003-12-07 Jan Hubicka <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * tree-eh.c (tree_could_trap_p): Fix warning. | |
| * expr.c (expand_expr): Fix warning on uninitialized last. | |
| 2003-12-04 Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (opf_none, opf_is_def, opf_no_vops): Change to #define. | |
| 2003-12-04 Canqun Yang <canqun@nudt.edu.cn> | |
| * stor-layout.c (update_alignment_for_field): Export. | |
| * tree.h (update_alignment_for_field): Declare. | |
| 2003-12-03 Andrew Haley <aph@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-dfa.c (get_expr_operands): Don't record VUSEs for invariant | |
| adresses. | |
| 2003-12-03 Brian Booth <bbooth@redhat.com> | |
| * tree-pretty-print.c (dump_phi_nodes): Removed superfluous ampersand. | |
| 2003-12-03 Jeff Law <law@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <bbooth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * tree-optimize.c (optimize_function_tree): Invoke ggc_collect in | |
| between optimization passes. | |
| 2003-12-02 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <paul@nowt.org> | |
| * Makefile.in (GTFILES): Remove stray '\'. | |
| 2003-11-30 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <jh@suse.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * gimple-low.c (lower_function_body): Call lower_bind_expr | |
| to handle the outermost BIND_EXPR. | |
| 2003-11-28 Jan Hubicka <jh@suse.cz> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dnovillo@redhat.com> | |
| Revert | |
| 2003-11-25 Jeff law <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * tree-mustalias.c (promote_var): Do not clear | |
| may_point_to_global_mem. | |
| 2003-11-25 Jeff law <law@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| PR 13174, PR 13143 | |
| * gimplify.c (cpt_same_type): Allow different ARRAY_TYPEs with | |
| the same base type. | |
| 2003-11-24 Daniel Berlin <dberlin@dberlin.org> | |
| 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * fold-const.c (fold): Do not return early when | |
| optimizing COMPONENT_REF and constant. | |
| 2003-11-24 Richard Henderson <rth@redhat.com> | |
| * objc/objc-act.c (build_protocol_expr): Use convert instead of | |
| smashing TREE_TYPE. | |
| 2003-11-23 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * tree-cfg.c (tree_verify_flow_info): Check that ENTRY/EXIT block | |
| has no instructions associated with it. | |
| 2003-11-22 Jeff Law <law@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-pretty-print.c (dump_generic_node): Remove superfluous ';'. | |
| 2003-11-22 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (build_dfs_id_array_1): > should be >= | |
| (build_dfn_array): Ditto. | |
| 2003-11-21 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| Revert: | |
| 2003-11-21 Jan Hubicka <jh@suse.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * parser.c (cp_parser_postfix_expression): Initialize 's' to | |
| NULL_TREE. | |
| 2003-11-20 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-dfa.c (get_expr_operands): Remove handling of PLUS_EXPR | |
| inside INDIRECT_REF. | |
| 2003-11-20 Diego Novillo <dnovillo@redhat.com> | |
| * tree-nomudflap.c (nogo): Fix prototype. | |
| 2003-11-20 Richard Henderson <rth@redhat.com> | |
| * 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 <fche@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| 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 <amacleod@redhat.com> | |
| * tree-ssa.c (check_replaceable): Return false if the LHS is a | |
| DECL_HARD_REGISTER. | |
| 2003-11-20 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (set_rhs): Replace with an empty statement when | |
| the replacement has no side effects. | |
| 2003-11-20 Jeff Law <law@redhat.com> | |
| * 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 <stevenb@suse.de> | |
| * tree-ssanames.c (ssanames_print_statistics): Use ISO function | |
| declaration. Print unsigned ints, not usinged longs. | |
| 2003-11-18 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (insert_one_operand): Handle self-referential | |
| ephi's properly. | |
| 2003-11-19 Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-cfg.c (dump_function_to_file): Mind when cfun is null. | |
| 2003-11-18 Diego Novillo <dnovillo@redhat.com> | |
| Revert | |
| 2003-11-18 Jan Hubicka <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-optimize.c (optimize_function_tree): Disable tail | |
| call optimizations. | |
| 2003-11-18 Jan Hubicka <jh@suse.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-ssa.c (tree_ssa_useless_type_conversion): Use TYPE_MAIN_VARIANT | |
| when compariing pointer types too. | |
| 2003-11-18 Jan Hubicka <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| 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 <rth@redhat.com> | |
| * tree-pretty-print.c (dump_generic_node): Use %u not %x for | |
| printing DECL_UID. | |
| 2003-11-16 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| 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 <jason@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-ssa-pre.c (split_critical_edges): Reimplement. Call | |
| tree_split_edge directly. | |
| 2003-11-14 Jason Merrill <jason@redhat.com> | |
| * tree-eh.c (do_return_redirection): Assign directly to the | |
| RESULT_DECL of a function which returns in memory. | |
| 2003-11-14 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <aj@suse.de> | |
| * c-semantics.c (find_reachable_label): Use C90 function | |
| declaration. | |
| 2003-11-14 Jason Merrill <jason@redhat.com> | |
| 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) <ASM_EXPR>: 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 <rth@redhat.com> | |
| 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 <rth@redhat.com> | |
| * 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 <stevenb@suse.de> | |
| * 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 <law@redhat.com> | |
| * 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 <stevenb@suse.de> | |
| PR middle-end/11514 | |
| * tree-inline.c (walk_tree): Handle PLACEHOLDER_EXPR. | |
| 2003-11-13 Richard Henderson <rth@redhat.com> | |
| * tree-cfg.c (cfg_remove_useless_stmts_bb): Initialize stmt. | |
| 2003-11-13 Jan Hubicka <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| (declare_inlined_vars): New local function. | |
| (initialize_inlined_parameters): Call it. | |
| (expand_call_inline): Call it. | |
| 2003-11-13 Steven Bosscher <stevenb@suse.de> | |
| 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * gimplify.c (gimplify_addr_expr): Clear, not copy, TREE_SIDE_EFFECTS. | |
| 2003-11-11 Richard Henderson <rth@redhat.com> | |
| 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| 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 <rth@redhat.com> | |
| * 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 <stevenb@suse.de> | |
| * toplev.c (rest_of_decl_compilation): Use the location of the | |
| declaration for error messages. | |
| 2003-11-10 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * c-common.c (c_warn_unused_result): Restructure to use iterator | |
| on COMPOUND_EXPR only. | |
| 2003-11-09 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-cfg.c (tree_verify_flow_info): Fix checking of order of basic | |
| blocks over code. | |
| 2003-11-09 Richard Henderson <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * fold.c (nondestructive_fold_binary_to_constant): Fix typo. | |
| * fold-const.c (fold_relational_const): Check for side effects. | |
| 2003-11-07 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <jh@suse.cz> | |
| * tree-cfg.c (tree_block_label): Cleanup. | |
| 2003-11-06 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <stevenb@suse.de> | |
| * tree-cfg.c (STRIP_CONTAINERS): Remove. | |
| 2003-11-06 Jan Hubicka <jh@suse.cz> | |
| * tree-cfg.c (cleanup_cond_expr_graph): Clean edge flags. | |
| 2003-11-06 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-dump.c (dump_options): Remove TDF_LINENO from all setting. | |
| 2003-11-06 Jan Hubicka <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * tree-cfg.c (tree_try_redirect_by_replacing_jump): Do not use | |
| succesor_block. | |
| 2003-11-03 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-inline.c (walk_tree): Tail recursion optimized for | |
| COMPOUND_EXPRs. | |
| * tree-eh.c (collect_finally_tree): Ditto. | |
| 2003-11-02 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-optimize.c (optimize_function_tree): Fix comment | |
| describing SSA pass after DOM2. | |
| 2003-10-31 Diego Novillo <dnovillo@redhat.com> | |
| Fix PR optimization/12825 | |
| * tree-optimize.c (optimize_function_tree): Run SSA renamer after | |
| second DOM pass. | |
| 2003-10-30 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-cfg.c (thread_jumps): Allow SWITCH_EXPR. | |
| (thread_edge): Handle it. Tidy surrounding code. | |
| 2003-10-30 Richard Henderson <rth@redhat.com> | |
| * domwalk.c (walk_dominator_tree): Pass any final is_ctrl_stmt | |
| down the recursive walk. | |
| 2003-10-30 Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * cppcharset.c (one_utf8_to_utf32): Initialize 's' to silence warning. | |
| 2003-10-25 Jan Hubicka <jh@suse.cz> | |
| * fold-const.c (nondestructive_fold_binary_to_constant): Realize that | |
| (plus (address) (const_int)) is a constant. | |
| 2003-10-25 Jan Hubicka <jh@suse.cz> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-flow-inline.h (add_dom_child): XMALLOC, not GGC_ALLOC, | |
| the bitmap. | |
| (clear_dom_children): XFREE the bitmap. | |
| 2003-10-22 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * gimplify.c: Sort functions into use order, and all gimplification | |
| functions to the end. | |
| 2003-10-22 Jeff Law <law@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| 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) <TRUTH_NOT_EXPR>: Don't rewrite to an | |
| EQ_EXPR. | |
| 2003-10-21 Jan Hubicka <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| 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 <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-cfg.c (bsi_prev): Also copy the context from the previous | |
| iterator. | |
| 2003-10-18 Richard Henderson <rth@redhat.com> | |
| * builtins.c (simplify_builtin): Handle BUILT_IN_CONSTANT_P. | |
| 2003-10-18 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jh@suse.cz> | |
| * tree-ssa-copyprop.c (move_var_to_scope): Do not clear abstract | |
| origin for static variables. | |
| 2003-10-18 Jan Hubicka <jh@suse.cz> | |
| * integrate.c (copy_decl_for_inlinig): Fix copying of copies. | |
| 2003-10-18 Jan Hubicka <jh@suse.cz> | |
| * cgraphunit.c (cgraph_analyze_function): Fix call of estimate_num_insns. | |
| 2003-10-17 Kazu Hirata <kazu@cs.umass.edu> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <jh@suse.cz> | |
| * tree-cfg.c (remove_useless_stmts_and_vars_bind): Fix handling of | |
| static variables. | |
| 2003-10-16 Richard Henderson <rth@redhat.com> | |
| * 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 <roger@eyesopen.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * expr.c (expand_expr): Break out EXPR_LOCUS code from ... | |
| (expand_expr_1): ... here, renamed from expand_expr. | |
| 2003-10-13 Richard Henderson <rth@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| java/12211 | |
| * gimplify.c (gimplify_save_expr): Tolerate void-typed saved | |
| expressions. | |
| 2003-10-09 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| PR optimization/12525 | |
| * tree-dfa.c (note_addressable): New fn, split out from... | |
| (add_stmt_operands): Here. | |
| (get_stmt_operands) <ASM_EXPR>: 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 <dnovillo@redhat.com> | |
| 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 <jason@redhat.com> | |
| 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 <rth@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * tree-cfg.c (tree_split_edge): Mark edge as FALLTHRU when splitting. | |
| 2003-10-03 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rth@redhat.com> | |
| * c-decl.c (set_decl_nonlocal): New. | |
| (store_parm_decls): Use it via walk_tree. | |
| 2003-10-01 Jeff Law <law@redhat.com> | |
| * tree-ssa-dom.c (cprop_into_stmt): New function extracted from | |
| optimize_stmt. | |
| (optimize_stmt): Use cprop_into_stmt. | |
| 2003-09-30 Richard Henderson <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <paul@nowt.org> | |
| * Makefile.in: Add rules for check-gfortran. | |
| 2003-09-29 Richard Henderson <rth@redhat.com> | |
| * gimplify.c (gimplify_cond_expr): Fix both arms dead return value. | |
| 2003-09-29 Jeff Law <law@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <graham.stott@btinternet.com> | |
| * expr.c (expand_expr)[CATCH_EXPR]: Fix bogus return value. | |
| 2003-09-26 Andrew MacLeod <amacloeod@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-alias-ander.c: Fixup comment spacing. | |
| (andersen_op_assign): Handle >2 operands case. | |
| 2003-09-24 Steven Bosscher <steven@gcc.gnu.org> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <schwab@suse.de> | |
| * 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 <jason@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * tree-ssa-dom.c (optimize_block): Ignore "useless" type | |
| conversions in SWITCH_COND when creating equivalenecs at | |
| case labels. | |
| 2003-09-22 Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-cfg.c (dump_tree_bb): Remove superlfuous newlines. | |
| 2003-09-21 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-eh.c (lower_try_finally_dup_block): New. | |
| (honor_protect_cleanup_actions, lower_try_finally_copy): Use it. | |
| 2003-09-18 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-pretty-print.c (dump_generic_node): Don't double indent asms. | |
| 2003-09-18 Richard Henderson <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * Makefile.in (tree-eh.o): Add dependency on errors.h | |
| * tree-eh.c: Include errors.h | |
| 2003-09-17 Richard Henderson <rth@redhat.com> | |
| * tree-cfg.c (remove_useless_stmts_and_vars): Revert last change. | |
| * tree-flow.h, tree-ssa.c: Likewise. | |
| 2003-09-17 Richard Henderson <rth@redhat.com> | |
| * tree-eh.c (decide_copy_try_finally): Remove forgotten debug code. | |
| 2003-09-17 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (pick_ssa_name): New function. | |
| (code_motion): Use it. | |
| 2003-09-17 Richard Henderson <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * tree-inline.c (debug_find_tree_1, debug_find_tree): New. | |
| 2003-09-17 Richard Henderson <rth@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| Fix PR optimization/12268 | |
| * tree-dfa.c (add_referenced_var): Call-clobbered pointers may | |
| point to global memory. | |
| 2003-09-13 Jason Merrill <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-optimize.c (tree_rest_of_compilation): Set TREE_ASM_WRITTEN | |
| for functions that have errors. | |
| 2003-09-12 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa-pre.c (graph_dump_file, graph_dump_flags): Remove | |
| unused variables. | |
| 2003-09-11 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| 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 <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <paul@nowt.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-pretty-print.c (dump_generic_node): Change string used to | |
| display _DECL nodes with no DECL_NAME. | |
| 2003-09-10 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| Jeff Law <law@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * c-tree.h: Don't declare c_genericize, it's already | |
| declared in c-common.h. | |
| 2003-09-07 Steven Bosscher <steven@gcc.gnu.org> | |
| Fix PR optimization/12198 | |
| * tree-cfg.c (value_matches_some_label): Handle integer | |
| case ranges. | |
| 2003-09-06 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (find_referenced_vars): Re-enable .GLOBAL_VAR | |
| optimization. | |
| 2003-09-05 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <paul@nowt.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (find_referenced_vars): Temporarily disable | |
| .GLOBAL_VAR optimization. | |
| 2003-09-04 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-optimize.c (tree_rest_of_compilation): Return if errorcount | |
| or sorrycount are non-zero. | |
| 2003-09-04 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * gimplify.c (gimplify_switch_expr): Leave the outermost cast | |
| as part of the switch condition. | |
| 2003-09-02 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * opts.c (decode_options): Turn on SSAPRE by default. | |
| 2003-08-29 Jason Merrill <jason@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (add_vdef): Check for duplicate voperands first. | |
| Handle SSA_NAME in voperands. | |
| (add_vuse): Likewise. | |
| 2003-08-27 Diego Novillo <dnovillo@redhat.com> | |
| * tree-flow.h (var_ann_d): Convert is_in_va_arg_expr into a | |
| bitfield. | |
| 2003-08-27 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-ssa-pre.c: Update comments to reflect reality. | |
| (insert_one_operand): Remove #if'0d code. | |
| 2003-08-27 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * gcov.c (typedef struct arc_info): New field cs_count. | |
| (accumulate_line_counts): Find cycles correctly. | |
| 2003-08-27 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (compute_du_info): Move #if ENABLE_CHECKING up one | |
| line. | |
| 2003-08-27 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-ssa.c (build_dominator_tree): Use FOR_EACH_BB. | |
| 2003-08-26 Jason Merrill <jason@redhat.com> | |
| * tree-simple.c (is_gimple_val): Also disallow memory vars. | |
| 2003-08-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * integrate.c (copy_decl_for_inlining): Reset DECL_TOO_LATE. | |
| 2003-08-25 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jason@redhat.com> | |
| * 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) <CONSTRUCTOR>: 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (get_expr_operands): Don't create shared operands when | |
| folding *&VAR expressions. | |
| 2003-08-24 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-cfg.c (bsi_next_in_bb): Work correctly when the block ends | |
| with start of BIND_EXPR. | |
| 2003-08-23 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-alias-ander.c (andersen_op_assign): Fix to join the operands, | |
| the assign to the lhs. | |
| 2003-08-23 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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. | |
| <COMPONENT_REF>: Use gimplify_compound_lval. | |
| <REALPART_EXPR, IMAGPART_EXPR>: Likewise. | |
| <INDIRECT_REF>: Use is_gimple_reg predicate. | |
| <MIN_EXPR, MAX_EXPR>: Use new gimplify_minimax_expr. | |
| <TREE_LIST>: 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 <pinskia@physics.uc.edu> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dump.c (dequeue_and_dump): Handle 'r' and 's' code classes. | |
| 2003-08-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * c-pretty-print.c (print_c_tree): Create new pp object. | |
| 2003-08-21 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jason@redhat.com> | |
| * tree-inline.c (copy_body_r): Don't convert when stripping &*. | |
| Fix thinko in stripping *&. | |
| 2003-08-21 Diego Novillo <dnovillo@redhat.com> | |
| Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-cfg.c (stmt_starts_bb_p): Nonlocal and computed GOTO targets | |
| always start a new block. | |
| 2003-08-20 Jason Merrill <jason@redhat.com> | |
| * tree-pretty-print.c (dump_generic_node): Just print "<retval>" | |
| 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 <dnovillo@redhat.com> | |
| * 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 <roger@eyesopen.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <jason@redhat.com> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * cfg.c (dump_edge_info): Add name for EDGE_LOOP_EXIT flag. | |
| 2003-08-19 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree.c (resize_phi_node): Initialize new entries. | |
| 2003-08-17 Jeff Law <law@redhat.com> | |
| * 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 <pinskia@physics.uc.edu> | |
| * objc/objc-lang.c (LANG_HOOKS_GIMPLIFY_EXPR): Define | |
| as the c gimplifier. | |
| 2003-08-15 Jeff Law <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * tree-ssa-dom.c (optimize_stmt): Call get_stmt_operands. | |
| 2003-08-12 Jeff Law <law@redhat.com> | |
| * tree-ssa-dom.c (optimize_stmt): Record equivalences created | |
| by memory stores. | |
| 2003-08-12 Diego Novillo <dnovillo@redhat.com> | |
| * tree-cfg.c (find_insert_location): Handle other control | |
| statements that may be at the end of the block. | |
| 2003-08-12 Zdenek Dvorak <rakdver@atrey.karlin.mff.cuni.cz> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * tree-alias-common.h (struct tree_alias_ops): Add a semicolon, fix | |
| bootstrap. | |
| 2003-08-10 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <paul@nowt.org> | |
| * doc/install.texi: Mention --enable-languages=f95. | |
| 2003-08-09 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-pretty-print.c (dump_vops): check bb->tree_annotations, not | |
| bb->aux. | |
| 2003-08-08 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <law@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <rakdver@atrey.karlin.mff.cuni.cz> | |
| * Makefile.in (c-pretty-print.o): Add TREE_H and C_TREE_H dependencies. | |
| 2003-08-01 Paul Brook <paul@nowt.org> | |
| * 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 <steven@gcc.gnu.org> | |
| * tree-inline.c (expand_calls_inline): Fix comments. | |
| 2003-07-31 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| 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 <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-dump.c (dump_option_value_in): "all" is now everything but | |
| TDF_RAW and TDF_SLIM. | |
| 2003-07-30 Diego Novillo <dnovillo@redhat.com> | |
| * tree-simple.c (is_gimple_const): Accept CONST + CONST expressions | |
| as GIMPLE constants. | |
| 2003-07-30 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * tree-ssa-dom.c (optimize_stmt): Propagate copies into VUSEs and | |
| the RHS of VDEFs. | |
| 2003-07-29 Andrew MacLeod <amacleod@redhat.com> | |
| * tree-ssa.c (insert_copy_on_edge): Only set used bit on DECL nodes. | |
| 2003-07-29 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * tree-cfg.c (handle_switch_fallthru): Use bsi_link_after if stmt is | |
| in a basic block. | |
| 2003-07-28 Diego Novillo <dnovillo@redhat.com> | |
| * opts.c (decode_options): Disable must-alias optimization. | |
| 2003-07-28 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <aj@suse.de> | |
| * 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 <paul@nowt.org> | |
| * 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 <law@redhat.com> | |
| * tree-ssa-dom.c (optimize_block): Use may_propagate_copy. | |
| 2003-07-25 Diego Novillo <dnovillo@redhat.com> | |
| * opts.c (decode_options): Re-enable must-alias optimizations. | |
| 2003-07-25 Daniel Berlin <dberlin@dberlin.org> | |
| * configure.in: Update BANSHEEREBUILD for PWD change. | |
| * configure: regen | |
| 2003-07-25 Andreas Jaeger <aj@suse.de> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (cleanup_operand_arrays): New local function. Remove | |
| superfluous VUSE operands. | |
| (get_stmt_operands): Call it. | |
| 2003-07-24 Jason Merrill <jason@redhat.com> | |
| * gimplify.c (gimple_boolify): New fn. | |
| (gimplify_expr) <TRUTH_NOT_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 <jason@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * c-common.h (DECL_C_HARD_REGISTER): Replace ... | |
| * tree.h (DECL_HARD_REGISTER): ... with this. Update all users. | |
| 2003-07-23 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * gcc.c (MFWRAP_SPEC): Also wrap pthread_join and pthread_exit. | |
| 2003-07-23 Steven Bosscher <steven@gcc.gnu.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree.h (DECL_ESTIMATED_INSNS): Move from c-common.h. | |
| 2003-07-23 Steven Bosscher <steven@gcc.gnu.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (finalize_1): Change to not use bsi_last. | |
| 2003-07-22 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-cfg.c (remove_stmt): Revert 07-15 change. Turns out the bug is in | |
| the reverse iterator. | |
| 2003-07-22 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (visit_phi_node): Assume default value of CONSTANT | |
| if the PHI value was already constant. | |
| 2003-07-22 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (get_stmt_operands): Remove FIXME note | |
| regarding virtual operands for ASM_EXPRs. | |
| 2003-07-21 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mx_xfn_indirect_ref): Correct source locations | |
| for tracked expressions by ignoring incidental decl source loci. | |
| 2003-07-16 Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * c-decl.c (store_parm_decls): Also strip NON_LVALUE_EXPRs and | |
| CONVERT_EXPRs when setting DECL_NONLOCAL. | |
| 2003-07-15 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <aj@suse.de> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (tree_perform_ssapre): Fix dom_children after DCE | |
| breaks them. | |
| 2003-07-14 Diego Novillo <dnovillo@redhat.com> | |
| * tree-dfa.c (add_vdef): Initialize variable 'vdef'. | |
| (add_vuse): Initialize variable 'vuse'. | |
| 2003-07-14 Diego Novillo <dnovillo@redhat.com> | |
| 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (defs_match_p): Check for copies of the same version. | |
| 2003-07-03 Frank Ch. Eigler <fche@redhat.com> | |
| * tree-nomudflap.c (mf_marked_p, mf_mark): New dummy functions. | |
| 2003-07-03 Jeff Law <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * varasm.c (build_constant_desc): Propagate mudflap marked-ness | |
| across constant copying. | |
| 2003-07-02 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree.h (struct tree_eref_common): Add injured flag. | |
| Add EREF_INJURED macro. | |
| 2003-07-01 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <jsturm@one-point.com> | |
| * fold-const.c (fold): Don't save_expr unless TREE_SIDE_EFFECTS. | |
| 2003-06-26 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * tree-simple.c (is_gimple_stmt): Complete. | |
| 2003-06-24 Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * tree-cfg.c (find_insert_location): Default case should insert after | |
| the last stmt in the block. | |
| 2003-06-22 Jeff Sturm <jsturm@one-point.com> | |
| * Makefile.in (old-tree-inline.o): Remove rule. | |
| * old-tree-inline.c: Remove. | |
| 2003-06-19 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * doc/invoke.texi: Add documentation for -ftree-dominator-opts | |
| that was missing from an earlier patch. | |
| 2003-06-19 Jeff Sturm <jsturm@one-point.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <steven@gcc.gnu.org> | |
| * timevar.def (TV_TREE_BUILD_FUD_CHAINS): Remove. | |
| 2003-06-16 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mf_mark): Use GC-compatible htab_create_ggc. | |
| 2003-06-15 Jeff Law <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| * 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 <kazu@cs.umass.edu> | |
| * tree-ssa-pre.c: Fix a comment typo. | |
| 2003-06-13 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-simplify.c: Fix typo in previous change. | |
| 2003-06-13 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <aph@redhat.com> | |
| * c-simplify.c (c_simplify_stmt): case ASM_STMT: Ensure qualifiers | |
| come from input statement. | |
| 2003-06-09 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-cfg.c (bsi_commit_edge_inserts): Fix computation of | |
| new_blocks. | |
| 2003-06-08 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jsturm@one-point.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * c-mudflap.c (mflang_register_call): Give the synthetic decl | |
| undefined (not zero) size. | |
| 2003-06-05 Frank Ch. Eigler <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (add_stmt_operand): Always consider non-scalar types | |
| virtual operands. | |
| 2003-06-04 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-parse.in: Fix botched merge. | |
| 2003-06-03 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * gimplify.c (simplify_cond_expr): Call truthvalue_conversion | |
| before invert_truthvalue. | |
| 2003-06-02 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * gimplify.c (simplify_expr): Only allow a cast from a 'val'. | |
| * tree-simple.c (is_simple_cast): Likewise. | |
| 2003-06-02 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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) <COND_EXPR>: Use the if-statement code if | |
| it's void. | |
| 2003-06-01 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mudflap_c_function, enqueue_constant, enqueue_decl): | |
| Rework dumping logic. | |
| 2003-05-27 Jason Merrill <jason@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * gimplify.c (shortcut_cond_expr): Avoid jumps to jumps. | |
| 2003-05-26 Jason Merrill <jason@redhat.com> | |
| * c-simplify.c (simplify_switch_stmt): A SWITCH_EXPR also gets the | |
| source location of its first line. | |
| 2003-05-24 Diego Novillo <dnovillo@redhat.com> | |
| 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 <law@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (set_rhs): Fix typo in handling of | |
| RETURN_EXPR nodes. | |
| 2003-05-19 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-alias-common.c (alias_get_name): Handle unnamed variables once | |
| and for all. | |
| 2003-05-19 Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-pretty-print.c (MASK_POINTER): Parameter is P, not node. | |
| 2003-05-17 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-alias-common.c (ptr_may_alias_var): Fix DECL_CONTEXT | |
| checking. | |
| 2003-05-16 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dave.anglin@nrc-cnrc.gc.ca> | |
| * Makefile.in (regmove.o-warn): Change to -Wno-error. | |
| 2003-05-15 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa.c (rewrite_out_of_ssa): Undo previous patch. | |
| 2003-05-15 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa.c (rewrite_out_of_ssa): Don't dump the optimized | |
| function after the SSA->normal pass. | |
| 2003-05-14 Toon Moene <toon@moene.indiv.nluug.nl> | |
| * Makefile.in: Add additional -Wno-error targets for Alpha. | |
| 2003-05-13 Jason Merrill <jason@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-simplify.c (simplify_if_stmt): Replace calls to | |
| warning_with_file_and_line with warning. | |
| 2003-05-12 Frank Ch. Eigler <fche@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * gimplify.c (simplify_expr): Replace CONST_DECL with its DECL_INITIAL. | |
| 2003-05-09 Sebastian Pop <s.pop@laposte.net> | |
| * tree-optimize.c (optimize_function_tree): Clarify the use of the | |
| loop analyzer. | |
| 2003-05-09 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-pretty-print.c (dump_generic_node): CONSTRUCTOR | |
| nodes have only one operand now. | |
| 2003-05-08 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * version.c (version_string): Change format to show daily | |
| datestamp and merged date. | |
| 2003-05-07 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <steven@gcc.gnu.org> | |
| * ggc-page.c (TREE_EXP_SIZE): Define. | |
| (extra_order_size_table): New entry for expr trees with | |
| two operands. | |
| 2003-05-06 Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * tree-inline.c (expand_call_inline): Avoid creating naked | |
| _DECL nodes for inlined functions which had NRV optimizations | |
| applied. | |
| 2003-05-02 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-simplify.c (build_bc_goto): If the target label couldn't be | |
| found, emit an error message. | |
| 2003-04-25 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * tree-optimize.c (optimize_function_tree): Simplify slightly. | |
| 2003-04-25 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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) <CASE_LABEL>: Create LABEL_DECL here. | |
| * expr.c (expand_expr) <CASE_LABEL_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 <amacleod@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <aj@suse.de> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree.c (copy_node): Never copy tree annotations. | |
| 2003-04-05 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (visit_cond_stmt): Don't short circuit evaluation | |
| of UNDEFINED conditional expressions. | |
| 2003-04-04 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * fold-const.c (fold_relational_hi_lo): Add missing comparison when | |
| folding comparisons to signed_max+1. | |
| 2003-04-02 Jason Merrill <jason@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * tree-inline.c (initialize_inlined_parameters): Cast argument | |
| types appropriately when emitting initialization assignments. | |
| 2003-04-01 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * gcc.c (MFLIB_SPEC): Remove -ld. | |
| (MFWRAP_SPEC): Remove dlopen wrapping. | |
| 2003-03-28 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-simple.c: Use tree codes to document grammar for relational | |
| operators &&, || and ^. | |
| 2003-03-25 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * tree-dfa.c: Revert vla changes from yesterday. | |
| (find_vla_decls_r): Do not look inside TYPE_DECLs. | |
| 2003-03-20 Jeff Law <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (likely_value): Don't assume CONSTANT if the | |
| statement has virtual uses. | |
| 2003-03-05 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * gcc.c (MFWRAP_SPEC): Remove most --wrap entries. | |
| 2003-03-03 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * doc/invoke.texi: Fix typo. | |
| 2003-02-28 Aldy Hernandez <aldyh@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mudflap_enqueue_decl): Ignore extern artificial | |
| variable declarations. | |
| 2003-02-27 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (ccp_fold): Fold builtins by replacing and | |
| restoring their arguments. | |
| 2003-02-27 Jeff Law <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * tree-cfg.c (bsi_init): Handle BIND_EXPR nodes inside a basic block. | |
| (bsi_next_in_bb): Likewise. | |
| 2003-02-25 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * Makefile.in (OBJS): Add tree-ssa-pre.o. | |
| 2003-02-13 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| Andreas Jaeger <aj@suse.de> | |
| * tree-flow.h: Add some garbage collector marks. | |
| 2003-02-12 Jeff Law <law@redhat.com> | |
| * 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 <aj@suse.de> | |
| * tree-dfa.c (dump_alias_info): Cast variable of size_t properly. | |
| 2003-02-12 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-dfa.c (find_may_aliases_for): Remove | |
| (compute_may_aliases): Always call compute_alias_sets. | |
| 2003-02-10 Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * config/rs6000/t-rs6000 (simplify-rtx.o): Compile with -Wno-error. | |
| 2003-02-08 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| Jeff Law <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-common.h (GOTO_DESTINATION): Remove. Fix botched | |
| merge. | |
| 2003-02-03 Diego Novillo <dnovillo@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * Makefile.in (tree-ssa-pre2.o): Remove accidental addition. | |
| 2003-01-31 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * gimplify.c (simplify_function_tree): Set TREE_SIDE_EFFECTS on | |
| the BIND_EXPR wrapper. | |
| 2003-01-30 Diego Novillo <dnovillo@redhat.com> | |
| * tree-dfa.c (call_may_clobber): New function. | |
| (get_expr_operands): Call it. | |
| (find_vars_r): Call it. | |
| 2003-01-30 Jeff Law <law@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <aj@suse.de> | |
| * 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 <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa-dce.c (remove_dead_stmt): Fix uninitialized use | |
| warning. | |
| 2003-01-28 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <law@redhat.com> | |
| * 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 <law@redhat.com> | |
| * c-simplify.c (simplify_decl_stmt): Fix comment typo. | |
| Use correct predicate when "simplifying" a static initializer. | |
| 2003-01-26 Andreas Jaeger <aj@suse.de> | |
| * Makefile.in (gt-dependence.h): New rule. | |
| 2003-01-23 Jeff Law <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mf_varname_tree): Check for non-NULL DECL_NAME | |
| before trying to cplus_demangle it. | |
| 2003-01-23 Jeff Law <law@redhat.com> | |
| * tree-cfg.c (make_exit_edges): Fix thinkos. | |
| 2003-01-22 Jeff Law <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <renau@uiuc.edu> | |
| * 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 <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dan@dberlin.org> | |
| * 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 <law@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <fche@redhat.com> | |
| 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 <s.bosscher@student.tudelft.nl> | |
| * Makefile.in (check-g95): New test target. | |
| (check-f95): Alias for check-g95. | |
| 2003-01-07 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <jason@redhat.com> | |
| * 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 <s.bosscher@student.tudelft.nl> | |
| * gimplify.c (create_tmp_var_noc): Remove unused function. | |
| * tree-simple.h: Kill prototype. | |
| 2002-12-30 Diego Novillo <dnovillo@redhat.com> | |
| * tree-flow.h (tree_find_loops): Remove unused declaration. | |
| 2002-12-29 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <s.bosscher@student.tudelft.nl> | |
| * tree-dfa.c: Add doxygen markers in comments. | |
| 2002-12-22 Diego Novillo <dnovillo@redhat.com> | |
| * gimplify.c: Undo the following change: | |
| 2002-12-11 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * tree-mudflap.c (mf_init_extern_trees): Rewrite last change | |
| without using statement-expressions. | |
| 2002-12-19 Diego Novillo <dnovillo@redhat.com> | |
| * tree-cfg.c (build_tree_cfg): Make sure that TV_TREE_CFG | |
| is popped properly. | |
| 2002-12-19 Frank Ch. Eigler <fche@redhat.com> | |
| * tree-mudflap.c (mf_init_extern_trees): Abort gracefully if | |
| <mf-runtime.h> was not included. | |
| (*): Correct some minor compiler warnings elsewhere. | |
| 2002-12-18 Diego Novillo <dnovillo@redhat.com> | |
| * configure: Regenerate with autoconf 2.13. | |
| 2002-12-17 Ben Elliston <bje@redhat.com> | |
| * tree-optimize.c (optimize_function_tree): Temporarily | |
| disable SSA optimizations if -fmudflap is present. | |
| 2002-12-16 Ben Elliston <bje@redhat.com> | |
| * tree-mudflap.c (mx_flag): Assert that the tree node is valid. | |
| 2002-12-14 Jason Merrill <jason@redhat.com> | |
| * 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 <bje@redhat.com> | |
| * tree-dfa.c (find_refs_in_expr): Terminate comment. | |
| 2002-12-12 Steven Bosscher <s.bosscher@student.tudelft.nl> | |
| * tree-cfg.c: Update doxygen documentation. | |
| * tree-dfa.c: Add doxygen documentation. | |
| 2002-12-11 Steven Bosscher <s.bosscher@student.tudelft.nl> | |
| * tree-cfg.c: Add doxygen markers in comments. | |
| * tree-optimize.c: Likewise. | |
| * tree-ssa.c: Likewise. | |
| 2002-12-11 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-dfa.c (may_alias_p): Fix global variables and points-to. | |
| 2002-12-03 Daniel Berlin <dberlin@dberlin.org> | |
| * tree-ssa.c (delete_tree_ssa): Move call to delete_alias_vars | |
| above resetting num_referenced_vars. | |
| 2002-12-03 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c: Undo this change that causes bootstrap | |
| failures: | |
| 2002-12-02 Diego Novillo <dnovillo@redhat.com> | |
| * tree-dfa.c (may_alias_p): Artificial variables | |
| can also be aliased. | |
| 2002-12-03 Andreas Jaeger <aj@suse.de> | |
| * tree-simple.c (right_assocify_expr): Remove unused variable. | |
| 2002-12-02 Andrew MacLeod <amacleod@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (dump_ref): Display '<nil>' for NULL references. | |
| (dump_phi_args): Handle NULL arguments. | |
| (may_alias_p): Artificial variables can also be aliased. | |
| 2002-12-02 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (find_refs_in_expr): Look for references in | |
| VA_ARG_EXPR nodes. | |
| 2002-12-01 Diego Novillo <dnovillo@redhat.com> | |
| * tree-optimize.c (optimize_function_tree): Undo | |
| inadvertent change in previous commit. | |
| 2002-12-01 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <aj@suse.de> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-alias-common.h: Start adding doxygen docs. | |
| * tree-alias-common.c: Ditto | |
| 2002-11-28 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <jason@redhat.com> | |
| 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <amacleod@redhat.com> | |
| * 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 <jason@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-cfg.c (remove_tree_bb): Don't walk beyond the end of the | |
| basic block. | |
| 2002-10-26 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-cfg.c (cleanup_tree_cfg): Uncomment call to | |
| compact_blocks. | |
| 2002-10-26 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * Makefile.in (OBJS): Move tree-mudflap.o ... | |
| (C_AND_OBJC_OBJS): ... here. | |
| 2002-10-21 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * toplev.c (parse_options_and_default_flags): Undo local | |
| hack that slipped in the previous commit. | |
| 2002-10-14 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <falk.hueffner@student.uni-tuebingen.de> | |
| * diagnostic.h (dump_c_tree, dump_c_node, | |
| print_declaration, print_function_decl, | |
| print_struct_decl): Fix argument types. | |
| 2002-10-10 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <s.bosscher@student.tudelft.nl> | |
| * 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 <rth@redhat.com> | |
| Jason Merrill <jason@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <jason@ariel.home> | |
| * 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 <fche@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <s.bosscher@student.tudelft.nl> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * c-pretty-print.c (dump_c_node): Fix call to REAL_VALUE_TO_DECIMAL. | |
| 2002-09-20 Diego Novillo <dnovillo@redhat.com> | |
| * tree-dfa.c (find_refs_in_stmt): Fix botched call to | |
| clobber_vars_r with CLEANUP_STMT nodes. | |
| 2002-09-20 Diego Novillo <dnovillo@redhat.com> | |
| * toplev.c (flag_tree_ssa): Remove. Update all users. | |
| 2002-09-20 Frank Ch. Eigler <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <rth@redhat.com> | |
| * 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 <law@redhat.com> | |
| * tree-dfa.c (find_refs_in_stmt): Search for references in the call | |
| address of a CALL_EXPR. | |
| 2002-09-19 Daniel Berlin <dberlin@dberlin.org> | |
| * toplev.c: tree-ssa-* -> tree-*. | |
| * doc/invoke.texi: Ditto. | |
| 2002-09-19 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-dump.c: Fix order of dump files | |
| 2002-09-17 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <bje@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <s.bosscher@student.tudelft.nl> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-ssa-pre.c (defs_match_p): Fix typo ( | -> || ). | |
| 2002-09-10 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa.c (analyze_rdefs): Disable uninitialized variable warnings. | |
| 2002-09-09 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * gcc.c (MFWRAP_SPEC): Add --wrap=alloca. | |
| 2002-09-01 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <graydon@redhat.com> | |
| * tree-mudflap.c (mx_register_decl): Mark declarations as | |
| TREE_ADDRESSABLE when mudflap decides to register them. | |
| 2002-08-29 Graydon Hoare <graydon@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <fche@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-simplify.c (mostly_copy_tree_r): Unshare STMT_EXPR | |
| nodes. | |
| 2002-08-25 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| 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 <dberlin@dberlin.org> | |
| * dominance.c: Cache immediate dominators. | |
| 2002-08-20 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| 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 <tree-mudflap.h>. | |
| 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (evaluate_expr_for): Fix thinko in | |
| 2002-08-17 patch. | |
| 2002-08-17 Diego Novillo <dnovillo@redhat.com> | |
| * tree-ssa-ccp.c (evaluate_expr_for): keep VARREF_SYM in a local | |
| variable. | |
| 2002-08-16 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-cfg.c (find_expr_in_tree_helper): Renamed from find_expr_in_tree. | |
| (find_expr_in_tree): Redone. | |
| 2002-08-15 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <fche@redhat.com> | |
| * gcc.c (LINK_COMMAND_SPEC): Tweak placement of %(mflib). | |
| 2002-08-14 Diego Novillo <dnovillo@redhat.com> | |
| * tree-simple.h (is_simple_decl_stmt): Declare. | |
| 2002-08-13 Frank Ch. Eigler <fche@redhat.com> | |
| * 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 <graydon@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-simple.c (is_simple_condexpr): Update comment. | |
| * tree-ssa-ccp.c (ssa_ccp_substitute_constants): Add debugging code. | |
| 2002-08-12 Jason Merrill <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| 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 <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-simplify.c (simplify_compound_lval): Use mostly_copy_tree_r. | |
| 2002-08-09 Jason Merrill <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-alias-ecr.c (ECR_new_with_type): Use correct number in mapping. | |
| 2002-07-23 Daniel Berlin <dberlin@dberlin.org> | |
| * c-simplify.c (simplify_for_stmt): Deep copy the result of the | |
| tail_expression, so it's unshared. | |
| 2002-07-23 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <aj@suse.de> | |
| * 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 <aj@suse.de> | |
| * 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 <aj@suse.de> | |
| * doc/invoke.texi (Option Summary): Fix syntax. | |
| 2002-07-19 Jason Merrill <jason@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <bje@redhat.com> | |
| * 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 <bje@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * tree-alias-ecr.c (ECR_union_pending_sets): Only clear bitmap if | |
| it's not NULL. | |
| 2002-07-16 Jason Merrill <jason@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| 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 <dnovillo@redhat.com> | |
| * tree-simple.c (is_simplifiable_builtin): Don't simplify target | |
| builtins. | |
| 2002-07-03 Diego Novillo <dnovillo@redhat.com> | |
| * c-simplify.c (simplify_decl_stmt): Unshare the | |
| initializer nodes before simplification. | |
| 2002-06-29 Aldy Hernandez <aldyh@quesejoda.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * c-simplify.c (simplify_stmt): Take a tree *. | |
| (various): Adjust. | |
| 2002-06-16 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <fche@redhat.com> | |
| * c-pretty-print.c (dump_c_node): Print more type qualifiers, | |
| especially for pointers. | |
| 2002-06-11 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * 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 <jason@redhat.com> | |
| * cppexp.c (num_equality_op): Use a temporary variable to work | |
| around gcc 3.0.4 bug. | |
| 2002-06-05 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * Makefile.in: Add -ftree-ssa to BOOT_CFLAGS. | |
| 2002-05-27 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * c-pretty-print.c (dump_c_node): Print "<unnamed whatever>" 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 <dberlin@dberlin.org> | |
| * 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 <dberlin@dberlin.org> | |
| 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * c-simplify.c (deep_copy_node): Don't copy DECL_STMT_DECL's. | |
| 2002-05-06 Daniel Berlin <dberlin@dberlin.org> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dberlin@dberlin.org> | |
| * c-simplify.c (simplify_call_expr): Don't try to simplify | |
| call_expr arglist if it's not there. | |
| 2002-04-27 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * c-pretty-print.c (dump_c_node): Don't print function | |
| bodies of FUNCTION_DECL nodes. | |
| 2002-04-19 Andreas Jaeger <aj@suse.de> | |
| * Makefile.in (c-call-graph.o): New. | |
| 2002-04-18 Sebastian Pop <s.pop@laposte.net> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <s.pop@laposte.net> | |
| * tree-dfa.c (find_refs_in_stmt): Changed if/else statements in | |
| a switch. | |
| 2002-02-28 Sebastian Pop <s.pop@laposte.net> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (find_refs_in_stmt): Fix capitalization in error | |
| message. | |
| (find_refs_in_expr): Ditto. | |
| 2002-01-20 Diego Novillo <dnovillo@redhat.com> | |
| Sebastian Pop <s.pop@laposte.net> | |
| * 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 <s.pop@laposte.net> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <nathan@codesourcery.com> | |
| Revert my patch of 2001-07-23 for the moment. | |
| 2001-10-15 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * Merge from mainline: | |
| Tue Sep 11 11:37:52 CEST 2001 Jan Hubicka <jh@suse.cz> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <grahams@redhat.com> | |
| * 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 <grahams@redhat.com> | |
| Diego Novillo <dnovillo@redhat.com> | |
| * tree-optimize.c (optimize_tree): Early return if the program has | |
| errors. | |
| 2001-09-30 Diego Novillo <dnovillo@redhat.com> | |
| * tree-optimize.c (optimize_tree): Compute reaching definitions | |
| after building SSA. | |
| 2001-09-30 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * tree-dfa.c (tree_find_varrefs): Use TDF_REFS instead of TDF_VARREF. | |
| * tree-flow.h (TDF_VARREF): Remove. | |
| 2001-09-04 Nathan Sidwell <nathan@codesourcery.com> | |
| * 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 <dnovillo@redhat.com> | |
| * Makefile.in (tree-ssa.o): Update dependencies. | |
| (tree-cfg.o): Ditto. | |
| (tree-dfa.o): Ditto. | |
| (tree-optimize.o): Ditto. | |
| 2001-08-26 Diego Novillo <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <dnovillo@redhat.com> | |
| * 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 <nathan@codesourcery.com> | |
| * 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 <nathan@codesourcery.com> | |
| * 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. |