[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