The package I'm trying to compile with the latest snapshot of GCC is sudo. It compiles with -O2, but when running it, it does not work properly. Adding -fno-unit-at-a-time fixes the runtime issue. Also the program works fine if compiled with -O1. So I took all of the -O2 options and put them on the command line along with -O1. The program fails to compile now with the following error:
i686-pc-linux-gnu-gcc -c -I. -I. -O1 -pipe -fthread-jumps -fcrossjumping -foptimize-sibling-calls -fcse-follow-jumps -fcse-skip-blocks -fgcse -fgcse-lm -fexpensive-optimizations -fstrength-reduce -frerun-cse-after-loop -frerun-loop-opt -fcaller-saves -fforce-mem -fpeephole2 -fschedule-insns -fschedule-insns2 -fsched-interblock -fsched-spec -fregmove -fstrict-aliasing -fdelete-null-pointer-checks -freorder-blocks -freorder-functions -funit-at-a-time -falign-functions -falign-jumps -falign-loops -falign-labels -ftree-pre -D_PATH_SUDOERS=\"/etc/sudoers\" -D_PATH_SUDOERS_TMP=\"/etc/sudoers.tmp\" -DSUDOERS_UID=0 -DSUDOERS_GID=0 -DSUDOERS_MODE=0440 sudo.tab.c parse.yacc: In function 'append': parse.yacc:1132: error: unable to find a register to spill in class 'CREG' parse.yacc:1132: error: this is the insn: (insn:HI 18 5 23 0 (parallel [ (set (reg:SI 0 ax [70]) (unspec:SI [ (mem:BLK (reg/v/f:SI 64 [ src ]) [0 A8]) (reg:QI 74) (const_int 1 [0x1]) (reg:SI 73) ] 20)) (use (reg:SI 19 dirflag)) (clobber (reg/f:SI 5 di [orig:72 src ] [72])) (clobber (reg:CC 17 flags)) ]) 463 {*strlenqi_1} (insn_list:REG_DEP_TRUE 16 (insn_list:REG_DEP_TRUE 14 (insn_list:REG_DEP_TRUE 4 (insn_list:REG_DEP_TRUE 17 (nil))))) (expr_list:REG_DEAD (reg:SI 19 dirflag) (expr_list:REG_UNUSED (reg:CC 17 flags) (expr_list:REG_UNUSED (reg/f:SI 5 di [orig:72 src ] [72]) (expr_list:REG_EQUAL (unspec:SI [ (mem:BLK (reg/v/f:SI 64 [ src ]) [0 A8]) (reg:QI 74) (const_int 1 [0x1]) (reg:SI 73) ] 20) (nil)))))) parse.yacc:1132: confused by earlier errors, bailing out Taking -funit-at-a-time out allows it to compile fine. nest sudo-1.6.7p5 # gcc -v Using built-in specs. Target: i686-pc-linux-gnu Configured with: /mnt/ftp/temp/portage/gcc-4.0.0_beta20050319/work/gcc-4.0-20050319/configure --enable-version-specific-runtime-libs --prefix=/usr --bindir=/usr/i686-pc-linux-gnu/gcc-bin/4.0.0-beta20050319 --includedir=/usr/lib/gcc/i686-pc-linux-gnu/4.0.0-beta20050319/include --datadir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0.0-beta20050319 --mandir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0.0-beta20050319/man --infodir=/usr/share/gcc-data/i686-pc-linux-gnu/4.0.0-beta20050319/info --with-gxx-include-dir=/usr/lib/gcc/i686-pc-linux-gnu/4.0.0-beta20050319/include/g++-v4 --host=i686-pc-linux-gnu --disable-altivec --enable-nls --without-included-gettext --with-system-zlib --disable-checking --disable-werror --disable-libunwind-exceptions --disable-multilib --disable-libgcj --enable-languages=c,c++ --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu Thread model: posix gcc version 4.0.0-beta20050319 (Gentoo Linux 4.0.0_beta20050319) -- Summary: 4.0 regression - code fails to compile/code generation issue with -funit-at-a-time Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: halcy0n at gentoo dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20634