using gcc-4.3 and 4.4, with -O1 -fschedule-insns, leads to an ICE. gcc-4.2 compiles the code fine:
Source/server/scsynth_main.cpp: In function 'int main(int, char**)': Source/server/scsynth_main.cpp:364: error: unable to find a register to spill in class 'SIREG' Source/server/scsynth_main.cpp:364: error: this is the insn: (insn 593 590 595 85 Source/server/scsynth_main.cpp:236 (parallel [ (set (reg:CC 17 flags) (compare:CC (mem:BLK (reg/f:DI 1 dx [orig:191 iftmp.58 ] [191]) [0 A8]) (mem/s/j:BLK (reg/f:DI 236) [0 A8]))) (use (reg:DI 237)) (use (const_int 1 [0x1])) (clobber (reg/f:DI 1 dx [orig:191 iftmp.58 ] [191])) (clobber (reg/f:DI 5 di [192])) (clobber (reg:DI 2 cx [193])) ]) 861 {*cmpstrnqi_nz_rex_1} (expr_list:REG_DEAD (reg/f:DI 1 dx [orig:191 iftmp.58 ] [191]) (expr_list:REG_UNUSED (reg:DI 2 cx [193]) (expr_list:REG_UNUSED (reg/f:DI 5 di [192]) (expr_list:REG_UNUSED (reg/f:DI 1 dx [orig:191 iftmp.58 ] [191]) (nil)))))) Source/server/scsynth_main.cpp:364: internal compiler error: in spill_failure, at reload1.c:2093 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. g++ -v: Using built-in specs. Target: x86_64-linux-gnu Configured with: ../gcc.git/configure -v --enable-languages=c,c++ --prefix=/usr/local/lib/gcc-snapshot --enable-shared --with-system-zlib --disable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-gtk-cairo --disable-plugin --enable-objc-gc --enable-mpfr --disable-werror --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu Thread model: posix gcc version 4.4.0 20090106 (experimental) (GCC) -- Summary: [4.3/4.4 regression] ICE with -fschedule-insns -O1 Product: gcc Version: 4.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: other AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: tim at klingt dot org GCC build triplet: x86_64-linux-gnu GCC host triplet: x86_64-linux-gnu GCC target triplet: x86_64-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38779