This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug middle-end/37535] [4.4 Regression] gcc/libgcc2.c:404: internal compiler error: Floating point exception
- From: "vmakarov at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 16 Sep 2008 16:47:19 -0000
- Subject: [Bug middle-end/37535] [4.4 Regression] gcc/libgcc2.c:404: internal compiler error: Floating point exception
- References: <bug-37535-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #6 from vmakarov at redhat dot com 2008-09-16 16:47 -------
John, thanks for detail analysis. IRA uses 25 for p171 because there is no
recorded conflicts for p171 and hard register 25. The problem was introduced
by recent patch
2008-09-04 Richard Sandiford <rdsandiford@googlemail.com>
PR middle-end/37243
* ira-build.c (form_loop_tree): Reverse BB walk.
(create_bb_allocnos): Likewise.
* ira-lives.c (make_regno_born_and_dead, regs_set): Delete.
(mark_reg_store): Rename to...
(mark_ref_live): ...this and take a df_ref argument instead of
note_stores arguments. Assert that we have a register.
(mark_reg_clobber): Delete.
(def_conflicts_with_inputs_p): New function.
(mark_reg_conflicts): Delete.
(mark_reg_death): Rename to...
(mark_ref_dead): ...this and take a df_ref argument instead of
a register. Assert that we have a register.
(process_bb_node_lives): Hoist frequency calculation out of
instruction walk. Convert from a forwards scan to a backwards scan.
Use DF_REF_USES and DF_REF_DEFS instead of register notes and
note_stores. Remove EH_RETURN_DATA_REGNO and regs_set handling.
(create_allocno_live_ranges): Don't create regs_set.
I'll work on a fix. Unfortunately using DF for building conflicts became more
complicated that it was before based on REG notes. So it will take some time.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37535