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: unassig...@gcc.gnu.org ReportedBy: raj.k...@gmail.com 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(); } }