The following testcase works on PPC with gcc-3.4, but fails with >=4.0. __extension__ typedef unsigned long long guint64; typedef int gint; typedef gint gboolean;
typedef struct { guint64 rte; } mainwindow; mainwindow *mainw; static int bg_gen_to_start; gboolean weed_playback_gen_start (void) { bg_gen_to_start = -1; if (mainw->rte & (((guint64) 1) << bg_gen_to_start)) mainw->rte ^= (((guint64) 1) << bg_gen_to_start); } The error with mainline (only reproducible with atleast -O): test.c: In function 'weed_playback_gen_start': test.c:18: error: unrecognizable insn: (insn 37 36 39 2 (set (subreg:SI (reg:DI 119 [ D.1305 ]) 4) (ashift:SI (const_int 1 [0x1]) (const_int -1 [0xffffffffffffffff]))) -1 (nil) (nil)) test.c:18: internal compiler error: in extract_insn, at recog.c:2084 -- Summary: [4.0/4.1/4.2 Regression] Unrecognizable insn with -O on PPC Product: gcc Version: 4.0.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: halcy0n at gentoo dot org GCC build triplet: powerpc-unknown-linux-gnu GCC host triplet: powerpc-unknown-linux-gnu GCC target triplet: powerpc-unknown-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25662