[Bug tree-optimization/26854] Inordinate compile times on large routines
--- Comment #15 from amacleod at redhat dot com 2006-04-27 20:22 --- Subject: Bug 26854 Author: amacleod Date: Thu Apr 27 20:22:17 2006 New Revision: 113321 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113321 Log: Implement new immediate use iterators. 2006-04-27 Andrew MacLeod <[EMAIL PROTECTED]> PR tree-optimization/26854 * tree-vrp.c (remove_range_assertions): Use new Immuse iterator. * doc/tree-ssa.texi: Update immuse iterator documentation. * tree-ssa-math-opts.c (execute_cse_reciprocals_1): Use new iterator. * tree-ssa-dom.c (propagate_rhs_into_lhs): Use new iterator. * tree-flow-inline.h (end_safe_imm_use_traverse, end_safe_imm_use_p, first_safe_imm_use, next_safe_imm_use): Remove. (end_imm_use_stmt_p): New. Check for end of immuse stmt traversal. (end_imm_use_stmt_traverse): New. Terminate immuse stmt traversal. (move_use_after_head): New. Helper function to sort immuses in a stmt. (link_use_stmts_after): New. Link all immuses in a stmt consescutively. (first_imm_use_stmt): New. Get first stmt in an immuse list. (next_imm_use_stmt): New. Get next stmt in an immuse list. (first_imm_use_on_stmt): New. Get first immuse on a stmt. (end_imm_use_on_stmt_p): New. Check for end of immuses on a stmt. (next_imm_use_on_stmt): New. Move to next immuse on a stmt. * tree-ssa-forwprop.c (forward_propagate_addr_expr): Use new iterator. * lambda-code.c (lambda_loopnest_to_gcc_loopnest): Use new iterator. (perfect_nestify): Use new iterator. * tree-vect-transform.c (vect_create_epilog_for_reduction): Use new iterator. * tree-flow.h (struct immediate_use_iterator_d): Add comments. (next_imm_name): New field in struct immediate_use_iterator_d. (FOR_EACH_IMM_USE_SAFE, BREAK_FROM_SAFE_IMM_USE): Remove. (FOR_EACH_IMM_USE_STMT, BREAK_FROM_IMM_USE_STMT, FOR_EACH_IMM_USE_ON_STMT): New immediate use iterator macros. * tree-cfg.c (replace_uses_by): Use new iterator. * tree-ssa-threadedge.c (lhs_of_dominating_assert): Use new iterator. * tree-ssa-operands.c (correct_use_link): Remove. (finalize_ssa_use_ops): No longer call correct_use_link. Modified: trunk/gcc/ChangeLog trunk/gcc/doc/tree-ssa.texi trunk/gcc/lambda-code.c trunk/gcc/tree-cfg.c trunk/gcc/tree-flow-inline.h trunk/gcc/tree-flow.h trunk/gcc/tree-ssa-dom.c trunk/gcc/tree-ssa-forwprop.c trunk/gcc/tree-ssa-math-opts.c trunk/gcc/tree-ssa-operands.c trunk/gcc/tree-ssa-threadedge.c trunk/gcc/tree-vect-transform.c trunk/gcc/tree-vrp.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854
[Bug tree-optimization/27381] [4.2 Regression] ice on valid code with -O
--- Comment #7 from amacleod at redhat dot com 2006-05-03 17:13 --- Subject: Bug 27381 Author: amacleod Date: Wed May 3 17:13:37 2006 New Revision: 113499 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113499 Log: 2006-05-02 Andrew MacLeod <[EMAIL PROTECTED]> PR tree-optimization/27381 * tree-phinodes.c (remove_phi_arg_num): When moving a phi argument, maintain the same immediate_use links. * tree-ssa-operands.c (dump_immediate_uses_for): Show iteration marker node rather than segfaulting. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-phinodes.c trunk/gcc/tree-ssa-operands.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27381
[Bug c++/26757] [4.1/4.2 regression] C++ front-end producing two DECLs with the same UID
--- Comment #23 from amacleod at redhat dot com 2006-05-16 20:51 --- Subject: Bug 26757 Author: amacleod Date: Tue May 16 20:51:14 2006 New Revision: 113829 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=113829 Log: Remove redundant hash table lookup when finding referenced vars. 2006-05-16 Andrew MacLeod <[EMAIL PROTECTED]> PR c++/26757 * tree-dfa.c (struct walk_state): Remove. (add_referenced_var): Change Parameters. (find_referenced_vars): Done use a walk_state. (find_vars_r): Unused parameter and change parms to add_referenced_var. (referenced_var_insert): Assert same UID has not been inserted. (add_referenced_var): Check if var exists via referenced_var table. (get_virtual_var): Call add_referenced_var with new parameter. Modified: branches/gcc-4_1-branch/gcc/ChangeLog branches/gcc-4_1-branch/gcc/tree-dfa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26757
[Bug c++/26757] [4.2 regression] C++ front-end producing two DECLs with the same UID
--- Comment #25 from amacleod at redhat dot com 2006-05-23 14:07 --- Subject: Bug 26757 Author: amacleod Date: Tue May 23 14:07:21 2006 New Revision: 114018 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114018 Log: 2006-05-23 Andrew MacLeod <[EMAIL PROTECTED]> PR c++/26757 * tree-ssa-loop-im.c (determine_invariantness_stmt): Use add_referenced_var instead of add_referenced_tmp_var. * tree-complex.c (create_one_component_var): Use add_referenced_var. * tree-ssa-loop-manip.c (create_iv, tree_unroll_loop): Use add_referenced_var. * tree-tailcall.c (adjust_accumulator_values, adjust_return_value, tree_optimize_tail_calls_1): Use add_referenced_var. * tree-ssa-loop-ivopts.c (create_new_iv): Use add_referenced_var. * tree-ssa-alias.c (create_memory_tag, create_global_var, create_sft): Use add_referenced_var. * tree-if-conv.c (ifc_temp_var): Use add_referenced_var. * gimplify.c (force_gimple_operand): Use add_referenced_var. * tree-ssa-phiopt.c (conditional_replacement, abs_replacement): Use add_referenced_var. * tree-dfa.c (struct walk_state): Remove. (find_referenced_vars): Remove walk state and vars_found hash table. (make_rename_temp): Use add_referenced_var. (find_vars_r): Pass less parameters to add_referenced_var. (referenced_var_p): New. Is var in referenced_var hash table. (referenced_var_insert): Assert var isn't already in hash table. (add_referenced_var): Don't need walk_state parameter. Add var if it isn't already in the hash table. (add_referenced_tmp_var): Remove. (find_new_referenced_vars_1): Use add_referenced_var. * tree-ssa-pre.c (create_expression_by_pieces, insert_into_preds_of_block, insert_extra_phis, realify_fake_stores): Use add_referenced_var. * tree-vect-patterns.c (vect_pattern_recog_1): Use add_referenced_var. * lambda-code.c (lbv_to_gcc_expression, lle_to_gcc_expression, lambda_loopnest_to_gcc_loopnest, perfect_nestify): Use add_referenced_var. * tree-vect-transform.c (vect_create_addr_base_for_vector_ref, vect_create_data_ref_ptr, vect_create_destination_var, vect_init_vector, vect_build_loop_niters, vect_generate_tmps_on_preheader, vect_update_ivs_after_vectorizer, vect_gen_niters_for_prolog_loop, vect_create_cond_for_align_checks): Use add_referenced_var. * tree-outof-ssa.c (create_temp): Use add_referenced_var. * tree-flow.h (add_referenced_tmp_var): Remove prototype (add_referenced_var): Add prototype. * tree-ssa-structalias.c (get_constraint_for, intra_create_variable_infos): Use add_referenced_var. Modified: trunk/gcc/ChangeLog trunk/gcc/gimplify.c trunk/gcc/lambda-code.c trunk/gcc/tree-complex.c trunk/gcc/tree-dfa.c trunk/gcc/tree-flow.h trunk/gcc/tree-if-conv.c trunk/gcc/tree-outof-ssa.c trunk/gcc/tree-ssa-alias.c trunk/gcc/tree-ssa-loop-im.c trunk/gcc/tree-ssa-loop-ivopts.c trunk/gcc/tree-ssa-loop-manip.c trunk/gcc/tree-ssa-phiopt.c trunk/gcc/tree-ssa-pre.c trunk/gcc/tree-ssa-structalias.c trunk/gcc/tree-tailcall.c trunk/gcc/tree-vect-patterns.c trunk/gcc/tree-vect-transform.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26757
[Bug middle-end/27793] [4.1 Regression] num_ssa_names inconsistent or immediate use iterator wrong
--- Comment #17 from amacleod at redhat dot com 2006-06-07 00:51 --- Subject: Bug 27793 Author: amacleod Date: Wed Jun 7 00:51:27 2006 New Revision: 114458 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114458 Log: 2006-06-06 Andrew MacLeod <[EMAIL PROTECTED]> PR middle-end/27793 * tree-dfa.c (referenced_vars_dup_list): New. List of duplicate referenced_variables with matching DECL_UID's. (find_referenced_vars): Make sure duplicate list is empty to start. (add_referenced_var): Add var to duplicate list if required. * tree-ssa.c (delete_tree_ssa): Clear var_ann's on duplicates. * tree-flow.h (referenced_vars_dup_list): External declaration. Modified: branches/gcc-4_1-branch/gcc/ChangeLog branches/gcc-4_1-branch/gcc/tree-dfa.c branches/gcc-4_1-branch/gcc/tree-flow.h branches/gcc-4_1-branch/gcc/tree-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27793
[Bug middle-end/27793] [4.1 Regression] num_ssa_names inconsistent or immediate use iterator wrong
--- Comment #18 from amacleod at redhat dot com 2006-06-08 01:18 --- Subject: Bug 27793 Author: amacleod Date: Thu Jun 8 01:18:16 2006 New Revision: 114480 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114480 Log: 2006-06-07 Andrew MacLeod <[EMAIL PROTECTED]> PR middle-end/27793 * tree-dfa.c (referenced_vars_dup_list): New. List of duplicate referenced_variables with matching DECL_UID's. (find_referenced_vars): Make sure duplicate list is empty to start. (referenced_var_p): Remove. (referenced_var_check_and_insert): Renamed from referenced_var_insert. Check if var is in the list, and add if needed. Update the duplicate list if a different var is in the list with the same DECL_UID. (add_referenced_var): Call routine to check and insert. * tree-ssa.c (delete_tree_ssa): Clear var_ann's on duplicates. * tree-flow.h (referenced_vars_dup_list): External declaration. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-dfa.c trunk/gcc/tree-flow.h trunk/gcc/tree-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27793
[Bug middle-end/27793] [4.1 Regression] num_ssa_names inconsistent or immediate use iterator wrong
--- Comment #21 from amacleod at redhat dot com 2006-06-15 13:30 --- Subject: Bug 27793 Author: amacleod Date: Thu Jun 15 13:30:17 2006 New Revision: 114678 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=114678 Log: 2006-06-15 Andrew MacLeod <[EMAIL PROTECTED]> PR middle-end/27793 * tree-dfa.c (referenced_vars_dup_list): Remove. (find_referenced_vars): Remove assert. (referenced_var_check_and_insert): Replace dup list with assert. * tree-ssa.c (delete_tree_ssa): Remove dup list processing. * tree-flow.h (referenced_vars_dup_list): Remove extern decl. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-dfa.c trunk/gcc/tree-flow.h trunk/gcc/tree-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27793
[Bug tree-optimization/24709] [4.1 Regression] 4.1.0 HEAD crashes with enable-checking on huge switch statement
--- Comment #6 from amacleod at redhat dot com 2005-11-14 15:18 --- Subject: Bug 24709 Author: amacleod Revision: 106865 Modified property: svn:log Modified: svn:log at Mon Nov 14 15:18:46 2005 -- --- svn:log (original) +++ svn:log Mon Nov 14 15:18:46 2005 @@ -1,24 +1,4 @@ - -In an attempt to prevent an infinite loop when verifying the immediate use links, an arbitrary limit was checked which is higher than one would ever expect to see. Unfortunately, the limit was set too low. the original value of 30,000 uses -was exceeded by this test case (It peaked at about 32,000+). The new limit should never be reached - + PR tree-optimization/24709 * tree-ssa-operands.c (verify_imm_links): Increase limit for infinite loop check. - - -Index: tree-ssa-operands.c -=== tree-ssa-operands.c(revision 106272) -+++ tree-ssa-operands.c(working copy) -@@ -2012,8 +2012,8 @@ - - prev = ptr; - ptr = ptr->next; -- /* Avoid infinite loops. */ -- if (count++ > 3) -+ /* Avoid infinite loops. 50,000,000 uses probably indicates a problem. */ -+ if (count++ > 5000) - goto error; - } - -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24709
[Bug tree-optimization/24709] [4.1 Regression] 4.1.0 HEAD crashes with enable-checking on huge switch statement
--- Comment #7 from amacleod at redhat dot com 2005-11-14 16:01 --- Subject: Bug 24709 Author: amacleod Date: Sun Nov 13 16:09:14 2005 New Revision: 106865 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=106865 Log: PR tree-optimization/24709 * tree-ssa-operands.c (verify_imm_links): Increase limit for infinite loop check. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-operands.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24709
[Bug middle-end/28071] [4.1/4.2 regression] A file that can not be compiled in reasonable time/space
--- Comment #50 from amacleod at redhat dot com 2006-08-28 17:18 --- Subject: Bug 28071 Author: amacleod Date: Mon Aug 28 17:18:33 2006 New Revision: 116511 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116511 Log: revert 116257 which is the rewrite_liverange_info patch, so be replaced with the two patches I created for bug 28071. Modified: branches/out-of-ssa-the-sequel/gcc/ChangeLog branches/out-of-ssa-the-sequel/gcc/tree-outof-ssa.c branches/out-of-ssa-the-sequel/gcc/tree-ssa-live.c branches/out-of-ssa-the-sequel/gcc/tree-ssa-live.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28071
[Bug tree-optimization/29877] [4.0/4.1/4.2 Regression] out of SSA (TER) extends variable life of variable beyond original declared
--- Comment #7 from amacleod at redhat dot com 2007-03-09 18:11 --- Subject: Bug 29877 Author: amacleod Date: Fri Mar 9 18:11:40 2007 New Revision: 122754 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=122754 Log: 2006-03-09 Mark Shinwell <[EMAIL PROTECTED]> Andrew MacLeod <[EMAIL PROTECTED]> PR tree-optimization/29877 * tree-outof-ssa.c (check_replaceable): Don't allow TER to replace an expression if the RHS is a register variable. testsuite * gcc.dg/pr16194.c: Skip test entirely if we don't know the name of a hard register for the target concerned. Modified: branches/gcc-4_2-branch/gcc/ChangeLog branches/gcc-4_2-branch/gcc/testsuite/ChangeLog branches/gcc-4_2-branch/gcc/testsuite/gcc.dg/pr16194.c branches/gcc-4_2-branch/gcc/tree-outof-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29877
[Bug tree-optimization/37102] [4.3/4.4 Regression] out-of-SSA is broken
--- Comment #18 from amacleod at redhat dot com 2008-09-18 14:00 --- Subject: Bug 37102 Author: amacleod Date: Thu Sep 18 13:58:55 2008 New Revision: 140455 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140455 Log: fix PR 37102 by having out of ssa remove dead PHI nodes. Added: trunk/gcc/testsuite/gcc.c-torture/execute/pr37102.c Modified: trunk/gcc/ChangeLog trunk/gcc/testsuite/ChangeLog trunk/gcc/tree-outof-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37102
[Bug middle-end/37567] tree SSA to normal checking takes abnormally long time
--- Comment #10 from amacleod at redhat dot com 2008-09-19 17:38 --- Subject: Bug 37567 Author: amacleod Date: Fri Sep 19 17:37:13 2008 New Revision: 140494 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=140494 Log: PR middle-end/37567 * tree-ssa-ter.c (free_temp_expr_table): Make sure fields are actually empty before freeing them. (find_replaceable_exprs): Move asserts to free_temp_expr_table. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-ter.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37567
[Bug tree-optimization/37102] [4.3 Regression] out-of-SSA is broken
--- Comment #23 from amacleod at redhat dot com 2008-10-17 17:37 --- Subject: Bug 37102 Author: amacleod Date: Fri Oct 17 17:35:58 2008 New Revision: 141195 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=141195 Log: fix PR tree-optimization/37102 2008-10-17 Andrew MacLeod <[EMAIL PROTECTED]> PR tree-optimization/37102 * tree-outof-ssa.c (remove_gimple_phi_args): Remove all the PHI args from a node. Check to see if another PHI is dead. (eliminate_useless_phis): Rename from eliminate_virtual_phis and remove real PHIs which have no uses. (rewrite_out_of_ssa): Call eliminate_useless_phis. 2008-10-17 Andrew MacLeod <[EMAIL PROTECTED]> PR tree-optimization/37102 * gcc.c-torture/execute/pr37102.c: New Test. Added: branches/gcc-4_3-branch/gcc/testsuite/gcc.c-torture/execute/pr37102.c Modified: branches/gcc-4_3-branch/gcc/ChangeLog branches/gcc-4_3-branch/gcc/testsuite/ChangeLog branches/gcc-4_3-branch/gcc/tree-outof-ssa.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37102
[Bug rtl-optimization/19097] [3.4/4.0/4.1 regression] Quadratic behavior with many sets for the same register in gcse CPROP
--- Comment #25 from amacleod at redhat dot com 2005-10-31 15:19 --- Subject: Bug 19097 Author: amacleod Date: Mon Oct 31 13:38:05 2005 New Revision: 106272 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=106272 Log: 2005-10-31 Andrew MacLeod <[EMAIL PROTECTED]> PR tree-optimization/19097 * tree-ssa-operands.c (correct_use_link): Don't look for modified stmts. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-operands.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19097
[Bug tree-optimization/30159] [4.3 Regression] gcc.c-torture/execute/20010422-1.c is miscompiled
--- Comment #4 from amacleod at redhat dot com 2006-12-12 15:50 --- Subject: Bug 30159 Author: amacleod Date: Tue Dec 12 15:50:06 2006 New Revision: 119792 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=119792 Log: 2006-12-12 Andrew Macleod <[EMAIL PROTECTED]> PR tree-optimization/30159 * tree-ssa-coalesce.c (coalesce_ssa_name): Process single ssa_name functions in case a default_def coalesce is required. Modified: trunk/gcc/ChangeLog trunk/gcc/tree-ssa-coalesce.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30159