[3.3/mainline] Re: New ICE on i386
Jan Hubicka
jh@suse.cz
Sun Mar 9 10:50:00 GMT 2003
>
> On current hammer-branch I get this failure on i486 while building the
> package garlic.
>
> Please look into this,
> Andreas
>
>
> # gcc -c -ansi -pedantic -O -Wall -Wstrict-prototypes -g3 resize_complex.c -save-temps -v
> Reading specs from /usr/lib/gcc-lib/i486-suse-linux/3.3/specs
> Configured with: ../configure --enable-threads=posix --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib --enable-languages=c,c++,f77,objc,java,ada --disable-checking --enable-libgcj --with-gxx-include-dir=/usr/include/g++ --with-slibdir=/lib --with-system-zlib --enable-shared --enable-__cxa_atexit i486-suse-linux
> Thread model: posix
> gcc version 3.3 20030304 (prerelease) (SuSE Linux)
> /usr/lib/gcc-lib/i486-suse-linux/3.3/cc1 -E -quiet -v -D__GNUC__=3 -D__GNUC_MINOR__=3 -D__GNUC_PATCHLEVEL__=0 -dD resize_complex.c -ansi -pedantic -Wall -Wstrict-prototypes -O resize_complex.i
> #include "..." search starts here:
> #include <...> search starts here:
> /usr/local/include
> /usr/lib/gcc-lib/i486-suse-linux/3.3/include
> /usr/i486-suse-linux/include
> /usr/include
> End of search list.
> /usr/lib/gcc-lib/i486-suse-linux/3.3/cc1 -fpreprocessed resize_complex.i -quiet -dumpbase resize_complex.c -ansi -auxbase resize_complex -g3 -O -pedantic -Wall -Wstrict-prototypes -ansi -version -o resize_complex.s
> GNU C version 3.3 20030304 (prerelease) (SuSE Linux) (i486-suse-linux)
> compiled by GNU C version 3.3 20030304 (prerelease) (SuSE Linux).
> GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
> resize_complex.c: In function `ResizeComplex_':
> resize_complex.c:165: internal compiler error: in final_scan_insn, at final.c:2497
> Please submit a full bug report,
> with preprocessed source if appropriate.
> See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
Hi,
the problem is that splitting is done before post-reload copy
propagation. Copy propagation turns reg->mem move into load of imm->mem
that needs to be split. Since I've removed the other splittings as
redundant when reg-stack is present, this get caught in final.c. I am
re-enabling splitting on reg-stack compilation path. I didn't suceeded
to create simplified testcase - when I do remove something the problem
goes away...
Bootstrap on 3.3 branch in progress... OK if it passes?
Sun Mar 9 11:44:34 CET 2003 Jan Hubicka <jh@suse.cz>
* toplev.c (rest_of_compilation): re-enable insn splitting after
reg-stack.
Index: toplev.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/toplev.c,v
retrieving revision 1.732
diff -c -3 -p -r1.732 toplev.c
*** toplev.c 8 Mar 2003 01:38:27 -0000 1.732
--- toplev.c 9 Mar 2003 10:44:22 -0000
*************** rest_of_compilation (decl)
*** 3662,3668 ****
}
#endif
! #if defined (HAVE_ATTR_length) && !defined (STACK_REGS)
timevar_push (TV_SHORTEN_BRANCH);
split_all_insns_noflow ();
timevar_pop (TV_SHORTEN_BRANCH);
--- 3662,3668 ----
}
#endif
! #ifdef HAVE_ATTR_length
timevar_push (TV_SHORTEN_BRANCH);
split_all_insns_noflow ();
timevar_pop (TV_SHORTEN_BRANCH);
More information about the Gcc-patches
mailing list