This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/67756] [6 Regression] ICE compiling Linux Kernel fs/namei.c on ARM
- From: "bernd.edlinger at hotmail dot de" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 01 Oct 2015 12:51:01 +0000
- Subject: [Bug target/67756] [6 Regression] ICE compiling Linux Kernel fs/namei.c on ARM
- Auto-submitted: auto-generated
- References: <bug-67756-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67756
--- Comment #11 from Bernd Edlinger <bernd.edlinger at hotmail dot de> ---
I must admit, that I don't know what I am doing here,
... but this (completely untested) patch seems to fix the ICE:
(and at least my linux kernel compiles without ICE now)
--- lra-assigns.c.jj 2015-07-16 17:26:35.000000000 +0200
+++ lra-assigns.c 2015-10-01 14:40:06.262300720 +0200
@@ -576,7 +576,7 @@ find_hard_regno_for_1 (int regno, int *c
/* Remember about multi-register pseudos. For example, 2 hard
register pseudos can start on the same hard register but can
not start on HR and HR+1/HR-1. */
- for (hr = conflict_hr + 1;
+ for (hr = conflict_hr;
hr < FIRST_PSEUDO_REGISTER && hr < conflict_hr + nregs;
hr++)
SET_HARD_REG_BIT (impossible_start_hard_regs, hr);
The problem starts when lra assigns r143 and r144 to r1
although both have obviously conflicting live ranges.