From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5478 invoked by alias); 25 Mar 2008 20:44:40 -0000 Received: (qmail 4455 invoked by alias); 25 Mar 2008 20:43:57 -0000 Date: Tue, 25 Mar 2008 20:44:00 -0000 Message-ID: <20080325204357.4454.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug rtl-optimization/35232] [4.3/4.4 regression] ICE in fp-int-convert-double.c at -O2 In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rsandifo at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2008-03/txt/msg02005.txt.bz2 ------- Comment #4 from rsandifo at gcc dot gnu dot org 2008-03-25 20:43 ------- Subject: Bug 35232 Author: rsandifo Date: Tue Mar 25 20:43:06 2008 New Revision: 133531 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=133531 Log: gcc/ PR rtl-optimization/35232 * reload1.c (reg_reloaded_call_part_clobbered): Clarify comment. (forget_old_reloads_1, forget_marked_reloads): Don't clear reg_reloaded_call_part_clobbered here. (reload_regs_reach_end_p): New function. (reload_reg_rtx_for_input): New variable. (reload_reg_rtx_for_output): Likewise. (emit_input_reload_insns): Use reloadreg rather than rl->reg_rtx when reassigning a pseudo register. Load reloadreg from reload_reg_rtx_for_input, moving the mode and register calculation to... (do_input_reload): ...here. Use the mode-adjusted reg_rtx instead of the original when deciding whether an input reload would be a no-op or whether an output reload can be deleted. (emit_output_reload_insns): Use the mode-adjusted reg_rtx when setting up new_spill_reg_store. Load it from reload_reg_rtx_for_output, moving the mode and register calculation to... (do_output_reload): ...here. Use the mode-adjusted reg_rtx instead of the original when deciding whether an output reload would be a no-op. Do the same when modifying insn notes. Use rtx_equal_p instead of == to compare the registers. (inherit_piecemeal_p): Take a mode and two register numbers as argument. (emit_reload_insns): Clear new_spill_reg_store for every hard register in the reload register. Remove spill registers from reg_reloaded_valid before considering whether to record inheritance information for them. Use reload_reg_rtx_for_output instead of reg_rtx when recording output reloads. Use reload_reg_rtx_for_input instead of reg_rtx when recording input reloads. Set or clear reg_reloaded_call_part_clobbered at the same time as setting reg_reloaded_valid. (delete_output_reload): Add a new_reload_reg parameter and use it instead of rld[j].reg_rtx. (emit_input_reload_insns, do_input_reload, do_output_reload): Adjust calls accordingly. gcc/testsuite/ PR rtl-optimization/35232 * gcc.target/mips/pr35232.c: New test. Added: trunk/gcc/testsuite/gcc.target/mips/pr35232.c Modified: trunk/gcc/ChangeLog trunk/gcc/reload1.c trunk/gcc/testsuite/ChangeLog -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35232