http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39423
--- Comment #29 from Oleg Endo <olegendo at gcc dot gnu.org> 2012-08-10 13:26:52 UTC --- (In reply to comment #28) > > This ICE does happen on trunk (rev190294). I have a testcase for it that I'm > reducing. There was a second ICE introduced by 190259 as well. > > /home/ryan/ice2.i:9312:1: error: unrecognizable insn: > } > ^ > (insn 780 647 781 28 (set (reg:SI 530) > (ashift:SI (reg:SI 147 t) > (const_int 1 [0x1]))) /home/ryan/ice2.i:9270 -1 > (nil)) > /home/ryan/ice2.i:9312:1: internal compiler error: in extract_insn, at > recog.c:2125 > > Should I attach the testcases to this PR or open a new PR? This left shift ICE looks like a problem I introduced with changes in PR 54089. Please post the testcase for this in PR 54089. BTW, I've confirmed my guess in comment #27 that the following function int test00 (int tab[], int i) { return tab[i * 8192 + 4]; } will currently ICE when compiled for -m2 and will produce potentially wrong code around the T_REG for -m2a and -m3. Checking it out...