This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
- From: "ebotcazou at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 8 Sep 2008 15:25:44 -0000
- Subject: [Bug rtl-optimization/37377] [4.4 Regression] Bootstrap failure compiling libgcc
- References: <bug-37377-226@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #12 from ebotcazou at gcc dot gnu dot org 2008-09-08 15:25 -------
> Eric, thanks a lot for your analysis. It was very helpful.
You're welcome!
> IRA uses live ranges to find conflicts for spill slots during reload. Live
> ranges for r376 were wrong after IR flattening. We have the following loop
> structure for the case
>
> l8->l7->l0
> ^
> l24->l22-|
>
> and we remove mem<-reg coping allocno values from l8 to l0 because allocnos
> corresponding to r376 are not modified in the loops. Allocno for r376 in l0
> got live ranges only from l8 and l7 but not from l22 ... Therefore IRA does
> not find conflicts with another allocno (r90) in l22 and l24.
Yes, my understanding was that the flattening code currently assumes that the
moves are always generated at the borders.
> I'll send a patch to solve the problem today. Just removing the optimization
> (removing unnecessary mem<-reg) is not wise because it has significant impact
> on the generated code performance.
OK, thanks for the explanation.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37377