[Bug other/45587] the processor(s) that read the .texi files mess up.
--- Comment #4 from zadeck at gcc dot gnu dot org 2010-09-08 03:38 --- Subject: Bug 45587 Author: zadeck Date: Wed Sep 8 03:38:40 2010 New Revision: 163987 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=163987 Log: 2010-09-08 Kenneth Zadeck zad...@naturalbridge.com PR doc/45587 * doc/md.texi: Fixed modes on several standard pattern names. Modified: trunk/gcc/ChangeLog trunk/gcc/doc/md.texi -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45587
[Bug middle-end/35854] [4.3/4.4 Regression] life passes dump option still documented
--- Comment #6 from zadeck at gcc dot gnu dot org 2009-01-29 14:35 --- Subject: Bug 35854 Author: zadeck Date: Thu Jan 29 14:34:55 2009 New Revision: 143756 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=143756 Log: 2009-01-29 Kenneth Zadeck zad...@naturalbridge.com PR middle-end/35854 * doc/invoke.texi (rtl debug options): Complete rewrite. * auto-inc-dec.c (pass_inc_dec): Rename pass from auto-inc-dec to auto_inc_dec. * mode-switching.c (pass_mode_switching): Rename pass from mode-sw to mode_sw. * except.c (pass_convert_to_eh_ranges): Rename pass from eh-ranges to eh_ranges. * lower-subreg.c (pass_lower_subreg): Renamed pass from subreg to subreg1. 2009-01-29 Kenneth Zadeck zad...@naturalbridge.com PR middle-end/35854 * gcc.dg/lower-subreg-1.c: Renamed dump pass from subreg to subreg1 Modified: trunk/gcc/ChangeLog trunk/gcc/auto-inc-dec.c trunk/gcc/doc/invoke.texi trunk/gcc/except.c trunk/gcc/lower-subreg.c trunk/gcc/mode-switching.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/lower-subreg-1.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35854
[Bug c++/37922] [4.3/4.4 Regression] code generation error
--- Comment #19 from zadeck at gcc dot gnu dot org 2008-12-18 13:40 --- Subject: Bug 37922 Author: zadeck Date: Thu Dec 18 13:38:39 2008 New Revision: 142809 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=142809 Log: 2008-12-18 Kenneth Zadeck zad...@naturalbridge.com PR rtl-optimization/37922 * dse.c (bb_info): Added regs_live field. (look_for_hardregs): New function. (replace_read): Added regs_live parameter and code to check that shift sequence does not clobber live hardregs. (check_mem_read_rtx): Added parameter to replace_read. (dse_step1): Added regs_live bitmap and initialize it. (rest_of_handle_dse): Added DF_NOTES problem and earlier call to df_analyze. * df-problems.c Renamed to df_simulate_initialize_backwards. (df_simulate_one_insn): Renamed to df_simulate_one_insn_backwards. (df_simulate_artificial_refs_at_top): Renamed to df_simulate_finalize_backwards. (df_simulate_initialized_forwards, df_simulate_one_insn_forwards, df_simulate_finalize_backwards): New functions. * df.h (df_simulate_artificial_refs_at_end): Renamed to df_simulate_initialize_backwards. (df_simulate_one_insn): Renamed to df_simulate_one_insn_backwards. (df_simulate_artificial_refs_at_top): Renamed to df_simulate_finalize_backwards. (df_simulate_initialized_forwards, df_simulate_one_insn_forwards, df_simulate_finalize_backwards): New functions. * ra-conflict.c (global_conflicts): Renamed df_simulate_artificial_refs_at_end to df_simulate_initialize_backwards. * sel-sched.c (propagate_lv_set): Renamed df_simulate_one_insn to df_simulate_one_insn_backwards. * ifcvt.c (dead_or_predicable): Renamed df_simulate_artificial_refs_at_end to df_simulate_initialize_backwards. Renamed df_simulate_one_insn to df_simulate_one_insn_backwards. * recog.c (peephole2_optimize): Ditto. * rtl-factoring (collect_pattern_seqs, clear_regs_live_in_seq): Ditto. 2008-12-18 Kenneth Zadeck zad...@naturalbridge.com PR rtl-optimization/37922 * g++.dg/torture/pr37922.C: New test. Added: trunk/gcc/testsuite/g++.dg/torture/pr37922.C Modified: trunk/gcc/ChangeLog trunk/gcc/dce.c trunk/gcc/df-problems.c trunk/gcc/df.h trunk/gcc/dse.c trunk/gcc/ifcvt.c trunk/gcc/ra-conflict.c trunk/gcc/recog.c trunk/gcc/rtl-factoring.c trunk/gcc/sel-sched.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37922
[Bug target/37808] [4.4 Regression]: Revision 141067 breaks Linux/x86
--- Comment #10 from zadeck at gcc dot gnu dot org 2008-10-12 21:18 --- Subject: Bug 37808 Author: zadeck Date: Sun Oct 12 21:16:57 2008 New Revision: 141078 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=141078 Log: 2008-10-12 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/37808 * df-scan.c (df_ref_change_reg_with_loc_1): Added test to make sure that ref has valid bb. Modified: trunk/gcc/ChangeLog trunk/gcc/df-scan.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37808
[Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
--- Comment #26 from zadeck at gcc dot gnu dot org 2008-10-11 23:40 --- Subject: Bug 37448 Author: zadeck Date: Sat Oct 11 23:39:21 2008 New Revision: 141067 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=141067 Log: 2008-10-11 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/37448 * df.h: (df_ref_class): New enum. (DF_REF_TYPE_NAMES, df_ref_extract): Removed. (struct df_ref): Replaced with union df_ref_d. (df_base_ref, df_artificial_ref, df_regular_ref, df_extract_ref): New members of df_ref_d union. (DF_REF_REAL_REG, DF_REF_REGNO, DF_REF_REAL_LOC, DF_REF_REG, DF_REF_LOC, DF_REF_BB, DF_REF_INSN_INFO, DF_REF_INSN, DF_REF_CLASS, DF_REF_TYPE, DF_REF_CHAIN, DF_REF_ID, DF_REF_FLAGS, DF_REF_ORDER, DF_REF_IS_ARTIFICIAL, DF_REF_NEXT_REG, DF_REF_PREV_REG, DF_REF_EXTRACT_WIDTH, DF_REF_EXTRACT_OFFSET, DF_REF_EXTRACT_MODE): Replaced definition to access union df_ref_d. (DF_MWS_REG_DEF_P, DF_MWS_REG_USE_P, DF_MWS_TYPE): New macros. (df_scan_bb_info, df_bb_regno_first_def_find, df_bb_regno_last_def_find, df_find_def, df_find_use, df_refs_chain_dump, df_regs_chain_dump, df_ref_debug, debug_df_ref, df_chain_create, df_chain_unlink, df_chain_copy, df_ref_create, df_ref_remove, df_compute_accessed_bytes, df_get_artificial_defs, df_get_artificial_uses, union_defs) Replaced struct df_ref * with df_ref. * df-scan.c (df_collection_rec, df_null_ref_rec, df_ref_chain_delete_du_chain, df_ref_chain_delete, df_install_ref, df_grow_ref_info, df_ref_create, df_reg_chain_unlink, df_ref_compress_rec, df_ref_remove, df_ref_chain_delete_du_chain, df_ref_chain_delete, df_free_collection_rec, df_insn_rescan, df_reorganize_refs_by_reg_by_reg, df_reorganize_refs_by_reg_by_insn, df_reorganize_refs_by_reg, df_ref_change_reg_with_loc_1, df_notes_rescan, df_swap_refs, df_sort_and_compress_refs, df_install_ref, df_install_refs, df_ref_record, df_get_conditional_uses, df_get_call_refs, df_bb_refs_record, df_exit_block_uses_collect, df_record_exit_block_uses, df_reg_chain_mark, df_reg_chain_verify_unmarked, df_refs_verify): Replaced struct df_ref * with df_ref. (df_ref_record, df_uses_record, df_ref_create_structure): Added df_ref_class parameter. (df_scan_problem_data): Added new pools for different types of refs. (df_scan_free_internal, df_scan_alloc, df_free_ref, df_ref_create_structure): Processed new ref pools. (df_scan_start_dump): Added counts of refs and insns. (df_ref_create, df_notes_rescan, df_def_record_1, df_uses_record, df_get_call_refs, df_insn_refs_collect, df_bb_refs_collect, df_entry_block_defs_collect, df_exit_block_uses_collect): Added code to pass df_ref_class down to ref creation functions. (df_reg_chain_unlink, df_ref_remove, df_ref_change_reg_with_loc_1, df_reg_chain_mark): Use macros to hide references to df_refs. (df_ref_chain_change_bb): Removed. (df_insn_change_bb): Remove calls to df_ref_insn_change_bb. (df_ref_equal_p, df_ref_compare, df_ref_create_structure): Enhanced to understand df_ref union structure. * fwprop.c (local_ref_killed_between_p, use_killed_between, all_uses_available_at, update_df, try_fwprop_subst, forward_propagate_subreg, forward_propagate_and_simplify, forward_propagate_into, fwprop, fwprop_addr): Replaced struct df_ref * with df_ref. (use_killed_between, all_uses_available_at): Use macros to hide references to df_refs. * regstat.c (regstat_bb_compute_ri, regstat_bb_compute_calls_crossed): Replaced struct df_ref * with df_ref. * see.c (see_handle_relevant_defs, see_handle_relevant_uses, see_handle_relevant_refs, see_analyze_one_def, see_update_relevancy, see_propagate_extensions_to_uses): Replaced struct df_ref * with df_ref. * ra-conflict.c (record_one_conflict, clear_reg_in_live, global_conflicts): Replaced struct df_ref * with df_ref. * ddg.c (create_ddg_dep_from_intra_loop_link, add_cross_iteration_register_deps, build_inter_loop_deps): Replaced struct df_ref * with df_ref. (create_ddg_dep_from_intra_loop_link, add_cross_iteration_register_deps): Use macros to hide references to df_refs. * auto-inc-dec.c (find_inc, merge_in_block): Replaced struct df_ref * with df_ref. * df-core.c (df_bb_regno_first_def_find, df_bb_regno_last_def_find, df_find_def, df_find_use, df_refs_chain_dump, df_regs_chain_dump, df_ref_debug, debug_df_ref): Replaced struct df_ref * with df_ref. (df_mws_dump, df_ref_debug): Use macros to hide references
[Bug middle-end/37448] [4.3 Regression] gcc 4.3.1 cannot compile big function
--- Comment #24 from zadeck at gcc dot gnu dot org 2008-10-08 02:53 --- Subject: Bug 37448 Author: zadeck Date: Wed Oct 8 02:52:28 2008 New Revision: 140960 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=140960 Log: 2008-10-07 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/37448 alloc_pool_desc (elt_size): New field. alloc_pool_desc (created, allocated, current, peak): Make unsigned long. output_info (count): Renamed total_created and made unsigned long. output_info (size): Renamed total_allocated and made unsigned long. alloc-pool.c (create_alloc_pool, empty_alloc_pool, pool_alloc, pool_free): Properly keep track of desc-size. (print_statistics, dump_alloc_pool_statistics): Enhance the printing of statistics to print the number of elements and to use unsigned longs. Modified: trunk/gcc/ChangeLog trunk/gcc/alloc-pool.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37448
[Bug middle-end/34744] Memory leaks in compiler with empty program
--- Comment #3 from zadeck at gcc dot gnu dot org 2008-07-01 13:57 --- Subject: Bug 34744 Author: zadeck Date: Tue Jul 1 13:56:28 2008 New Revision: 137318 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=137318 Log: Marked changelog entry with PR rtl-optimization/34744 Modified: trunk/gcc/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34744
[Bug middle-end/34744] Memory leaks in compiler with empty program
--- Comment #4 from zadeck at gcc dot gnu dot org 2008-07-01 14:06 --- Subject: Bug 34744 Author: zadeck Date: Tue Jul 1 14:05:13 2008 New Revision: 137319 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=137319 Log: 2008-07-01 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/34744 * df-scan.c (df_scan_free_ref_vec, df_scan_free_mws_vec): New macros. (df_scan_free_internal): Free data structures not allocated in storage pools. (df_mw_hardreg_chain_delete_eq_uses): Use df_scan_free_mws_vec. (df_refs_add_to_chains): Use df_scan_free_ref_vec and df_scan_free_mws_vec. * dse.c (dse_step6): Free offset_map_p and offset_map_n unconditionally. * ifcvt.c (cond_move_process_if_block): Free vectors on false return. Modified: branches/gcc-4_3-branch/gcc/ChangeLog branches/gcc-4_3-branch/gcc/df-scan.c branches/gcc-4_3-branch/gcc/dse.c branches/gcc-4_3-branch/gcc/ifcvt.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34744
[Bug c++/36185] [4.4 Regression] wrong code with -O2 -fgcse-sm
--- Comment #4 from zadeck at gcc dot gnu dot org 2008-05-10 20:29 --- Subject: Bug 36185 Author: zadeck Date: Sat May 10 20:28:19 2008 New Revision: 135159 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=135159 Log: 2008-05-10 Kenneth Zadeck [EMAIL PROTECTED] * gcse.c (store_killed_in_insn): Negated call to RTL_CONST_CALL_P. 2008-05-10 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/36185 * g++.dg/opt/pr36185.C Added: trunk/gcc/testsuite/g++.dg/opt/pr36185.C Modified: trunk/gcc/ChangeLog trunk/gcc/gcse.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36185
[Bug fortran/36117] Use MPFR for bessel function (optimization, rejects valid F2008)
--- Comment #5 from zadeck at gcc dot gnu dot org 2008-05-09 12:15 --- Subject: Bug 36117 Author: zadeck Date: Fri May 9 12:14:57 2008 New Revision: 135113 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=135113 Log: 2008-05-08 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/36117 * dce.c (deletable_insn_p): Do not delete calls if df_in_progress. (delete_unmarked_insns): When deleting a call, call delete_unreachable_blocks. * rtl.texi (RTL_CONST_CALL_P, RTL_PURE_CALL_P, RTL_CONST_OR_PURE_CALL_P, RTL_LOOPING_CONST_OR_PURE_CALL_P): Fixed doc. Modified: trunk/gcc/ChangeLog trunk/gcc/dce.c trunk/gcc/doc/rtl.texi -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36117
[Bug middle-end/36003] [4.4 Regression] df-byte-scan.c changes broke cris-elf compiling libgcc
--- Comment #2 from zadeck at gcc dot gnu dot org 2008-04-22 13:44 --- Subject: Bug 36003 Author: zadeck Date: Tue Apr 22 13:43:47 2008 New Revision: 134559 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=134559 Log: 2008-04-22 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/36003 * passes.c (init_optimization_passes): Remove pass_fast_rtl_byte_dce. Modified: trunk/gcc/ChangeLog trunk/gcc/passes.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36003
[Bug tree-optimization/26854] Inordinate compile times on large routines
--- Comment #60 from zadeck at gcc dot gnu dot org 2008-01-22 13:57 --- Subject: Bug 26854 Author: zadeck Date: Tue Jan 22 13:57:01 2008 New Revision: 131719 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131719 Log: 2008-01-22 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 PR rtl-optimization/34884 * ddg.c (create_ddg_dep_from_intra_loop_link): Use DF_RD-gen. * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted (df_rd_bb_info.expanded_lr_out): Deleted * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag. * loop_iv.c (iv_analysis_loop_init): Ditto. * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n, df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free): Removed code to allocate, initialize or free expanded_lr_out. (df_rd_bb_local_compute_process_def): Restructured to make more understandable. (df_rd_confluence_n): Removed code to no apply invalidate_by_call sets if the sets are being trimmed. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/df.h trunk/gcc/loop-invariant.c trunk/gcc/loop-iv.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854
[Bug middle-end/34884] [4.3 Regression] gfortran.dg/array_constructor_9.f90
--- Comment #29 from zadeck at gcc dot gnu dot org 2008-01-22 13:57 --- Subject: Bug 34884 Author: zadeck Date: Tue Jan 22 13:57:01 2008 New Revision: 131719 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131719 Log: 2008-01-22 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 PR rtl-optimization/34884 * ddg.c (create_ddg_dep_from_intra_loop_link): Use DF_RD-gen. * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted (df_rd_bb_info.expanded_lr_out): Deleted * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag. * loop_iv.c (iv_analysis_loop_init): Ditto. * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n, df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free): Removed code to allocate, initialize or free expanded_lr_out. (df_rd_bb_local_compute_process_def): Restructured to make more understandable. (df_rd_confluence_n): Removed code to no apply invalidate_by_call sets if the sets are being trimmed. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/df.h trunk/gcc/loop-invariant.c trunk/gcc/loop-iv.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34884
[Bug middle-end/34400] [4.3 regression] bad interaction between DF and SJLJ exceptions
--- Comment #59 from zadeck at gcc dot gnu dot org 2008-01-22 13:57 --- Subject: Bug 34400 Author: zadeck Date: Tue Jan 22 13:57:01 2008 New Revision: 131719 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131719 Log: 2008-01-22 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 PR rtl-optimization/34884 * ddg.c (create_ddg_dep_from_intra_loop_link): Use DF_RD-gen. * df.h (df_changeable_flags.DF_RD_NO_TRIM): Deleted (df_rd_bb_info.expanded_lr_out): Deleted * loop_invariant.c (find_defs): Deleted DF_RD_NO_TRIM flag. * loop_iv.c (iv_analysis_loop_init): Ditto. * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n, df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free): Removed code to allocate, initialize or free expanded_lr_out. (df_rd_bb_local_compute_process_def): Restructured to make more understandable. (df_rd_confluence_n): Removed code to no apply invalidate_by_call sets if the sets are being trimmed. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/df.h trunk/gcc/loop-invariant.c trunk/gcc/loop-iv.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34400
[Bug middle-end/34400] [4.3 regression] bad interaction between DF and SJLJ exceptions
--- Comment #57 from zadeck at gcc dot gnu dot org 2008-01-20 01:49 --- Subject: Bug 34400 Author: zadeck Date: Sun Jan 20 01:48:25 2008 New Revision: 131670 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131670 Log: 2008-01-19 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use DF_RD-gen. * df.h (df_changeable_flags.DF_RD_NO_TRIM): New. (df_rd_bb_info.expanded_lr_out): New. * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag. * loop_iv.c (iv_analysis_loop_init): Ditto. * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n, df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free): Added code to allocate, initialize or free expanded_lr_out. (df_rd_bb_local_compute_process_def): Restructured to make more understandable. (df_rd_confluence_n): Add code to do nothing with fake edges and code to no apply invalidate_by_call sets if the sets are being trimmed. (df_lr_local_finalize): Renamed to df_lr_finalize. (df_live_local_finalize): Renamed to df_live_finalize. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/df.h trunk/gcc/loop-invariant.c trunk/gcc/loop-iv.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34400
[Bug tree-optimization/26854] Inordinate compile times on large routines
--- Comment #59 from zadeck at gcc dot gnu dot org 2008-01-20 01:49 --- Subject: Bug 26854 Author: zadeck Date: Sun Jan 20 01:48:25 2008 New Revision: 131670 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131670 Log: 2008-01-19 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 * ddg.c (create_ddg_dep_from_intra_loop_link): Do not use DF_RD-gen. * df.h (df_changeable_flags.DF_RD_NO_TRIM): New. (df_rd_bb_info.expanded_lr_out): New. * loop_invariant.c (find_defs): Added DF_RD_NO_TRIM flag. * loop_iv.c (iv_analysis_loop_init): Ditto. * df-problems.c (df_rd_free_bb_info, df_rd_alloc, df_rd_confluence_n, df_rd_bb_local_compute, df_rd_transfer_function, df_rd_free): Added code to allocate, initialize or free expanded_lr_out. (df_rd_bb_local_compute_process_def): Restructured to make more understandable. (df_rd_confluence_n): Add code to do nothing with fake edges and code to no apply invalidate_by_call sets if the sets are being trimmed. (df_lr_local_finalize): Renamed to df_lr_finalize. (df_live_local_finalize): Renamed to df_live_finalize. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/df.h trunk/gcc/loop-invariant.c trunk/gcc/loop-iv.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854
[Bug middle-end/34400] [4.3 regression] bad interaction between DF and SJLJ exceptions
--- Comment #54 from zadeck at gcc dot gnu dot org 2008-01-19 00:39 --- Subject: Bug 34400 Author: zadeck Date: Sat Jan 19 00:38:34 2008 New Revision: 131649 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131649 Log: 2008-01-18 Kenneth Zadeck [EMAIL PROTECTED] Steven Bosscher [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 * df-problems.c (df_live_scratch): New scratch bitmap. (df_live_alloc): Allocate df_live_scratch when doing df_live. (df_live_reset): Clear the proper bitmaps. (df_live_bb_local_compute): Only process the artificial defs once since the order is not important. (df_live_init): Init the df_live sets only with the variables found live by df_lr. (df_live_transfer_function): Use the df_lr sets to prune the df_live sets as they are being computed. (df_live_free): Free df_live_scratch. Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34400
[Bug tree-optimization/26854] Inordinate compile times on large routines
--- Comment #58 from zadeck at gcc dot gnu dot org 2008-01-19 00:39 --- Subject: Bug 26854 Author: zadeck Date: Sat Jan 19 00:38:34 2008 New Revision: 131649 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=131649 Log: 2008-01-18 Kenneth Zadeck [EMAIL PROTECTED] Steven Bosscher [EMAIL PROTECTED] PR rtl-optimization/26854 PR rtl-optimization/34400 * df-problems.c (df_live_scratch): New scratch bitmap. (df_live_alloc): Allocate df_live_scratch when doing df_live. (df_live_reset): Clear the proper bitmaps. (df_live_bb_local_compute): Only process the artificial defs once since the order is not important. (df_live_init): Init the df_live sets only with the variables found live by df_lr. (df_live_transfer_function): Use the df_lr sets to prune the df_live sets as they are being computed. (df_live_free): Free df_live_scratch. Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26854
[Bug rtl-optimization/34302] [4.3 regression] Invalid code reordering
--- Comment #13 from zadeck at gcc dot gnu dot org 2007-12-10 21:32 --- Subject: Bug 34302 Author: zadeck Date: Mon Dec 10 21:31:59 2007 New Revision: 130751 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=130751 Log: 2007-12-10 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/34302 * auto-inc-dec.c (attempt_change): Change place where move is inserted. 2007-12-10 Jakub Jelinek [EMAIL PROTECTED] PR rtl-optimization/34302 * gcc.c-torture/execute/20071210-1.c: New test. Added: trunk/gcc/testsuite/gcc.c-torture/execute/20071210-1.c Modified: trunk/gcc/ChangeLog trunk/gcc/auto-inc-dec.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=34302
[Bug tree-optimization/33826] [4.1/4.2/4.3 Regression] GCC generates wrong code for infinitely recursive functions
--- Comment #13 from zadeck at gcc dot gnu dot org 2007-11-08 16:46 --- Subject: Bug 33826 Author: zadeck Date: Thu Nov 8 16:45:53 2007 New Revision: 130006 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=130006 Log: 2007-11-07 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/33826 * ipa-pure-const (static_execute): Added code to keep recursive functions from being marked as pure or const. * ipa-utils (searchc): Fixed comment. 2007-11-08 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/33826 * gcc.dg/pr33826.c: New. * gcc.dg/tree-ssa/20030714-1.c: Removed two tests that depend on recursive functions being marked pure or const. Added: trunk/gcc/testsuite/gcc.dg/pr33826.c Modified: trunk/gcc/ChangeLog trunk/gcc/ipa-pure-const.c trunk/gcc/ipa-utils.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/tree-ssa/20030714-1.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33826
[Bug rtl-optimization/33676] libgfortran bootstrap failure: selected_int_kind.f90:22: Segmentation fault, wrong code with -fomit-frame-pointer
--- Comment #19 from zadeck at gcc dot gnu dot org 2007-10-11 22:32 --- Subject: Bug 33676 Author: zadeck Date: Thu Oct 11 22:31:55 2007 New Revision: 129244 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=129244 Log: 2007-10-11 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/33676 * global.c (build_insn_chain): Include insn that occur between basic blocks. 2007-10-11 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/33676 * gcc.dg/torture/pr33676.c: New. Added: trunk/gcc/testsuite/gcc.dg/torture/pr33676.c Modified: trunk/gcc/ChangeLog trunk/gcc/global.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33676
[Bug rtl-optimization/33669] [4.3 Regression] Revision 128957 miscompiles 481.wrf
--- Comment #17 from zadeck at gcc dot gnu dot org 2007-10-10 03:32 --- Subject: Bug 33669 Author: zadeck Date: Wed Oct 10 03:32:43 2007 New Revision: 129193 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=129193 Log: 2007-10-07 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/33669 * ra-conflict.c (record_one_conflict_between_regnos, set_conflicts_for_earlyclobber, global_conflicts): Improved logging. (global_conflicts): Enhanced incorrect check. Modified: trunk/gcc/ChangeLog trunk/gcc/ra-conflict.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33669
[Bug middle-end/32749] [4.3 regression]: gfortran.dg/auto_array_1.f90
--- Comment #24 from zadeck at gcc dot gnu dot org 2007-07-27 17:22 --- Subject: Bug 32749 Author: zadeck Date: Fri Jul 27 17:22:14 2007 New Revision: 126987 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=126987 Log: 2007-07-26 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/32749 * df-problems.c (df_create_unused_note): Removed do_not_gen parm and the updating of the live and do_not_gen sets. (df_note_bb_compute): Added updating of live and do_not_gen sets for regular defs so that the case of clobber inside conditional call is processed correctly. Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32749
[Bug target/32437] [4.3 Regression] MIPS: FAIL in gcc.dg/cleanup-[8|9|10|11].c
--- Comment #11 from zadeck at gcc dot gnu dot org 2007-06-23 16:21 --- Subject: Bug 32437 Author: zadeck Date: Sat Jun 23 16:21:43 2007 New Revision: 125972 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125972 Log: 2007-06-23 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/32437 *dce.c (deletable_insn_p): Add extra parameter and recurse if insn is a PARALLEL. (prescan_insns_for_dce): Add extra parameter. Modified: trunk/gcc/ChangeLog trunk/gcc/dce.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32437
[Bug rtl-optimization/32355] [4.3 Regression] ICE in df_lr_verify_transfer_functions, at df-problems.c:1924
--- Comment #3 from zadeck at gcc dot gnu dot org 2007-06-18 16:47 --- Subject: Bug 32355 Author: zadeck Date: Mon Jun 18 16:47:05 2007 New Revision: 125812 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125812 Log: 2007-06-18 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/32355 * gcse (rest_of_handle_gcse): Add call to df_finish_pass after cse_main. * df-problems.c (df_note_bb_compute): Fix dumping info. 2007-06-18 Kenneth Zadeck [EMAIL PROTECTED] * gcc.c-torture/compile/pr32355.c: New testcase. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr32355.c Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c trunk/gcc/gcse.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32355
[Bug middle-end/32349] [4.3 Regression] ICE in df_refs_verify with -O2 -fmodulo-sched for spec tests
--- Comment #4 from zadeck at gcc dot gnu dot org 2007-06-17 17:51 --- Subject: Bug 32349 Author: zadeck Date: Sun Jun 17 17:51:25 2007 New Revision: 125776 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=125776 Log: 2007-06-17 Kenneth Zadeck [EMAIL PROTECTED] PR middle-end/32349 * modulo-sched (generate_reg_moves): Added rescan parameter and if this is true, rescan insn being modified. (sms_schedule): Added rescan parameter. (rest_of_handle_sms): Moved freeing of dominance info to before getting out of cfg_layout. 2007-06-17 Kenneth Zadeck [EMAIL PROTECTED] * gcc.c-torture/compile/pr32349.c: New testcase. Added: trunk/gcc/testsuite/gcc.c-torture/compile/pr32349.c Modified: trunk/gcc/ChangeLog trunk/gcc/modulo-sched.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32349
[Bug rtl-optimization/26855] [4.2 Regression] ICE in add_deps_for_def with -fmodulo-sched -maltivec
--- Comment #12 from zadeck at gcc dot gnu dot org 2006-05-23 01:18 --- Subject: Bug 26855 Author: zadeck Date: Tue May 23 01:17:29 2006 New Revision: 114010 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114010 Log: 2006-05-22 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26375 PR rtl-optimization/26855 * df-problems (df_ru_bb_local_compute_process_def): Removed update to gen set. (df_ru_bb_local_compute): Reversed statements and removed bogus comment explaining why they should be in wrong order. (df_ru_dump, df_rd_dump): Enhanced debug info. * modulo-sched.c (sms_schedule, tree_opt_pass pass_sms): Enhanced debug info. * ddg.c (add_deps_for_def): Converted use of reaching defs to reaching uses and fixed space problem. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/modulo-sched.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26855
[Bug rtl-optimization/26375] [4.2 Regression] Swing modulo scheduling results in ICE
--- Comment #8 from zadeck at gcc dot gnu dot org 2006-05-23 01:18 --- Subject: Bug 26375 Author: zadeck Date: Tue May 23 01:17:29 2006 New Revision: 114010 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=114010 Log: 2006-05-22 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26375 PR rtl-optimization/26855 * df-problems (df_ru_bb_local_compute_process_def): Removed update to gen set. (df_ru_bb_local_compute): Reversed statements and removed bogus comment explaining why they should be in wrong order. (df_ru_dump, df_rd_dump): Enhanced debug info. * modulo-sched.c (sms_schedule, tree_opt_pass pass_sms): Enhanced debug info. * ddg.c (add_deps_for_def): Converted use of reaching defs to reaching uses and fixed space problem. Modified: trunk/gcc/ChangeLog trunk/gcc/ddg.c trunk/gcc/df-problems.c trunk/gcc/modulo-sched.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26375
[Bug rtl-optimization/26855] [4.2 Regression] ICE in add_deps_for_def with -fmodulo-sched -maltivec
--- Comment #9 from zadeck at gcc dot gnu dot org 2006-05-19 21:18 --- Subject: Bug 26855 Author: zadeck Date: Fri May 19 21:18:23 2006 New Revision: 113915 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=113915 Log: 2006-05-19 Daniel Berlin [EMAIL PROTECTED] Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/26855 * df-scan.c (mw_reg_pool, mw_link_pool): New allocation pools for multiword refs. (df_scan_alloc): Added code to properly handle multiword hard registers and add all_blocks parameter. (df_scan_free_internal, df_insn_refs_delete, df_ref_record): Added code to properly handle multiword hard registers. (df_rescan_blocks): Added code to remove deleted blocks from bitmap. (df_ref_create_structure, df_ref_record): Added code to properly handle subregs. (df_ref_record_1): Changed DF_REF_CLOBBER into DF_REF_MUST_CLOBBER and set DF_REF_PARTIAL. (df_defs_record): Changed DF_REF_CLOBBER into DF_REF_MUST_CLOBBER. (df_uses_record): Added DF_REF_PARTIAL for subreg. (df_scan_add_problem): Added flags parameter. (df_ref_create_structure): Changed switching structure. (df_bb_refs_record): Fixed case where duplicate artificial refs were created. Changed location of flags. (df_record_entry_block_defs): Added code to make stack pointer live in entry block. Refined cases where frame pointer is needed. Changed location of flags. (df_record_exit_block_uses, df_insn_refs_record): Changed location of flags. (df_set_state): Removed function. (df_grow_reg_info, df_reg_chain_unlink, df_ref_remove, df_insn_create_insn_record, df_insn_refs_delete, df_ref_create_structure): Formatting changes. * df-core.c (df_mvs_dump, df_set_flags, df_clear_flags, df_delete_basic_block): New function. (df_init): Changed location of flags. (df_add_problem): Added flags parameter and the way flags are processed. (df_insn_uid_debug, df_ref_debug, debug_df_defno, debug_df_ref, debug_df_chain): Improved debugging output. (df_insn_debug, df_insn_uid_debug): Added multiword reg support. (df_refs_chain_dump): Removed df parameter. (df_iterative_dataflow): Added consistency check. (df_prune_to_subcfg): Made public. (df_analyze_problem): Added blocks_to_init parameter and made public. (df_ref_record, df_bb_refs_record, df_mark_reg, df_record_exit_block_uses): Whitespace changes. (df_dump): Whitespace changes. * df.h: Some reordering to remove forward references. (df_ref_flags.DF_REF_MW_HARDREG, DF_REF_PARTIAL, DF_REF_MUST_CLOBBER, DF_REF_MAY_CLOBBER): New fields. (df_ref_flags.DF_REF_CLOBBER): Deleted field. (dataflow.flags): New field. (df.flag): Deleted field. (df_alloc_function): Added additional bitmap parameter. (df_dependent_problem_function): New type. (df_problem.changeable_flags): New field. (df_ref_flags.DF_REF_DIES_AFTER_THIS_USE, DF_SCAN_INITIAL, DF_SCAN_GLOBAL, DF_SCAN_POST_ALLOC, df_state): Removed. (df_mw_hardreg): New struct. (DF_INSN_UID_MWS): New macro. (df_refs_chain_dump, df_ref_debug, df_chain_dump): Removed df parameter. (df_add_problem, df_ru_add_problem, df_rd_add_problem, df_lr_add_problem, df_ur_add_problem, df_urec_add_problem, df_ri_add_problem, df_scan_add_problem): Added flags parameter. (df_set_state): Removed function. (df_set_flags, df_clear_flags, df_delete_basic_block) New functions. * df-problems.c (df_chain_dump): Removed df parameter. (df_ru_alloc, df_rd_alloc, df_lr_alloc, df_ur_alloc, df_urec_alloc, df_chain_alloc, df_ri_alloc): Added all blocks parameter. (df_ru_alloc, df_rd_alloc): Now resets all blocks. (df_rd_bb_local_compute_process_def, df_ur_bb_local_compute, df_chain_create_bb, df_create_unused_note, df_ri_bb_compute): Split DF_REF_CLOBBER into DF_REF_MAY_CLOBBER and DF_REF_MUST_CLOBBER cases. (df_ru_bb_local_compute_process_def, df_rd_bb_local_compute_process_def, df_lr_bb_local_compute, df_lr_bb_local_compute, df_ur_bb_local_compute, df_chain_create_bb): Made subreg aware. (df_ru_bb_local_compute, df_rd_bb_local_compute, df_lr_bb_local_compute, df_lr_bb_local_compute, df_chain_create_bb): Cleanup to use proper macros. (df_ur_local_finalize, df_urec_local_finalize): Removed unnecessary code to fixup bitvectors. (df_ri_alloc): Cleared lifetime. (df_ignore_stack_reg, df_kill_notes, df_set_notes_for_mw, df_create_unused_note): New function. (df_ri_bb_compute, df_ri_compute): Added code to create
[Bug rtl-optimization/24762] [killloop-branch] code motion of non-invariant expressions with hard registers.
--- Comment #18 from zadeck at gcc dot gnu dot org 2006-01-27 22:23 --- Subject: Bug 24762 Author: zadeck Date: Fri Jan 27 22:23:32 2006 New Revision: 110312 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=110312 Log: 2006-01-27 Daniel Berlin [EMAIL PROTECTED] Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/24762 * doc/tm.texi: Added TARGET_EXTRA_LIVE_ON_ENTRY. * targhooks.c (hook_void_bitmap): New hook prototype. * targhoohs.h (hook_void_bitmap): Ditto. * bitmap.h (bitmap_head_def): Moved to coretypes.h. * coretypes.h (bitmap_head_def): Moved from bitmap.h. * target.h (live_on_entry): New function pointer. * df-scan.c (df_all_hard_regs): Removed. (df_scan_dump, df_hard_reg_init): Removed df_all_hard_regs. (df_scan_free_internal): Added df-entry_block_defs. (df_scan_alloc): Ditto. (df_scan_dump): Ditto. (df_uses_record): Plumbed flag field properly thru calls. Record EH_RETURN_DATA_REGNO in eh blocks unconditionally. This part fixes PR24762. (df_bb_refs_record): Added code to make the frame and arg pointers live in EH blocks. (df_refs_record): Added call to df_record_entry_block_defs. (df_record_entry_block_defs): New function. * df-core.c: Added comments to describe new artifical defs. * df.h (DF_REF_DIES_AFTER_THIS_USE): New flag in enum df_ref_flags. (entry_block_defs): New field in struct df. (df_all_hard_regs): Deleted. * target-def.h: Added TARGET_EXTRA_LIVE_ON_ENTRY. * df-problems.c (df_ru_bb_local_compute_process_def): Added code to handle artifical defs in the entry to a function. (df_ru_bb_local_compute): Ditto. (df_rd_bb_local_compute_process_def): Ditto. (df_rd_bb_local_compute): Ditto. (df_lr_bb_local_compute): Ditto. (df_ur_bb_local_compute): Ditto. (df_urec_bb_local_compute): Ditto. (df_chain_create_bb): Ditto. (df_ur_local_finalize): Removed entry. (df_urec_init): Ditto. (df_urec_local_finalize): Ditto. (df_ri_bb_compute): Added detection of last use of pseudos. * Makefile.in (df-scan.o): Updated dependencies. * config/mips/mips-protos.h (mips_set_live_on_entry): Added. * config/mips/mips.c (mips_set_live_on_entry): Added. * config/mips/mips.c (TARGET_EXTRA_LIVE_ON_ENTRY): Added value for target hook. * dce.c (marked_insn_p): Added code to handle artifical defs. Modified: trunk/gcc/ChangeLog trunk/gcc/Makefile.in trunk/gcc/bitmap.h trunk/gcc/config/mips/mips-protos.h trunk/gcc/config/mips/mips.c trunk/gcc/coretypes.h trunk/gcc/df-core.c trunk/gcc/df-problems.c trunk/gcc/df-scan.c trunk/gcc/df.h trunk/gcc/doc/tm.texi trunk/gcc/target-def.h trunk/gcc/target.h trunk/gcc/targhooks.c trunk/gcc/targhooks.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24762
[Bug rtl-optimization/25799] [4.2 Regression] cc1 stalled with -O1 -fmodulo-sched
--- Comment #6 from zadeck at gcc dot gnu dot org 2006-01-20 01:24 --- Subject: Bug 25799 Author: zadeck Date: Fri Jan 20 01:24:00 2006 New Revision: 110007 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=110007 Log: 2005-01-19 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/25799 * df-problems.c (df_ru_confluence_n, df_rd_confluence_n): Corrected confluence operator to remove bits from op2 before oring with op1 rather than removing bits from op1. * (df_ru_transfer_function): Corrected test on wrong bitmap which caused infinite loop. Both of these problems were introduced in the dataflow rewrite. Modified: trunk/gcc/ChangeLog trunk/gcc/df-problems.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25799
[Bug rtl-optimization/25799] [4.2 Regression] cc1 stalled with -O1 -fmodulo-sched
--- Comment #7 from zadeck at gcc dot gnu dot org 2006-01-20 01:28 --- Subject: Bug 25799 Author: zadeck Date: Fri Jan 20 01:28:34 2006 New Revision: 110008 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=110008 Log: 2005-01-19 Kenneth Zadeck [EMAIL PROTECTED] PR rtl-optimization/25799 * df-problems.c (df_ru_confluence_n, df_rd_confluence_n): Corrected confluence operator to remove bits from op2 before oring with op1 rather than removing bits from op1. (df_ru_transfer_function): Corrected test on wrong bitmap which caused infinite loop. Both of these problems were introduced in the dataflow rewrite. Modified: trunk/gcc/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25799
[Bug rtl-optimization/25799] [4.2 Regression] cc1 stalled with -O1 -fmodulo-sched
--- Comment #5 from zadeck at gcc dot gnu dot org 2006-01-17 14:34 --- Subject: Bug 25799 Author: zadeck Date: Tue Jan 17 14:34:50 2006 New Revision: 109818 URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=109818 Log: 2005-01-17 Kenneth Zadeck [EMAIL PROTECTED] PR dataflow/25799 * df-problems.c (df_ru_confluence_n, df_rd_confluence_n): Corrected confluence operator to remove bits from op2 before oring with op1 rather than removing bits from op1. * (df_ru_transfer_function): Corrected test on wrong bitmap which caused infinite loop. Modified: branches/dataflow-branch/gcc/ChangeLog.dataflow branches/dataflow-branch/gcc/df-problems.c -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25799