http://gcc.gnu.org/bugzilla/show_bug.cgi?id=46934
Summary: gcc ICE: error: unrecognizable insn: in extract_insn,
at recog.c:2109
Product: gcc
Version: 4.6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: target
AssignedTo: [email protected]
ReportedBy: [email protected]
Host: x86_64-linux
Target: arm-none-linux-gnueabi
Build: x86_64-linux
attached testcase reduced from samba when building for armvte/thumb with -Os
caused a gcc ICE with 4.6.0. Note that it works ok for arm mode and for other
opt levels than -Os
arm-none-linux-gnueabi-gcc-4.6.0 -mthumb -Os cli_reg.i -S
cli_reg.i: In function ‘caller’:
cli_reg.i:20:1: error: unrecognizable insn:
(insn 6 5 7 3 (set (reg:SI 137)
(plus:SI (reg/v:SI 136 [ reg_type ])
(const_int 2147483648 [0x80000000]))) cli_reg.i:4 -1
(nil))
cli_reg.i:20:1: internal compiler error: in extract_insn, at recog.c:2109
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.
testcase
$ cat cli_reg.i
int caller(unsigned int reg_type)
{
switch (reg_type)
{
case 0x80000000:
return (int)foo();
case 0x80000003:
return (int) bar();
case 0x80000001:
return (int) baz();
case 0x80000004:
return (int) fooz();
}
}