This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Disappearing labels fix


On Sunday 29 April 2001 11:52, Franz Sirl wrote:
> On Saturday 28 April 2001 18:55, Jeffrey A Law wrote:
> > This is a slight rework of a patch Bernd installed into the gcc-2.95.x
> > tree; it fixes a bug Mark ran into in a linux-hpux cross compiler
> > (compiler abort due to mucking up reference counts on labels).  It's
> > likely the abort would happen hpux native when using the HP assembler
> > instead of GAS, so I consider it important
> > enough to go ahead and fix on the gcc-3.0 branch.
> >
> > David E. probably recalls that Bernd's original patch caused indigestion
> > on the ppc-aix port.  So as part of testing this patch I also
> > bootstrapped ppc-aix (as well as ia32-linux and PA32 hpux).
> >
> > 	* flow.c (propagate_block_delete_insn): Handle deletion of ADDR_VEC
> > 	and ADDR_DIFF_VEC insns when the proceeding CODE_LABEL was put
> > 	into the constant pool.
> > 	* jump.c (jump_optimize_1): Remove barrier successors after all
> > 	the LABEL_NUSES counds have been computed.
> > 	(delete_barrier_successors): When deleting a tablejump insn, also
> > 	delete the jump table it uses.
> > 	* varasm.c (force_const_mem): Set LABEL_PRESERVE_P when forcing a
> > 	label into memory.
>
> Jeff, this causes a bootstrap fail on powerpc-linux-gnu on both mainline
> and branch:
>
> /home/fsirl/obj/gccm/gcc/gcj -B/home/fsirl/obj/gccm/ppc-linux/nof/libjava/
> -B/home/fsirl/obj/gccm/gcc/ -g -O2 -msoft-float -fPIC -mstrict-align
> -msoft-float -fPIC -mstrict-align -o .libs/jv-convert
> --main=gnu.gcj.convert.Convert -shared-libgcc
> gnu/gcj/convert/.libs/BytesToUnicode.o gnu/gcj/convert/.libs/Convert.o
> gnu/gcj/convert/.libs/Input_8859_1.o gnu/gcj/convert/.libs/Input_ASCII.o
> gnu/gcj/convert/.libs/Input_EUCJIS.o gnu/gcj/convert/.libs/Input_JavaSrc.o
> gnu/gcj/convert/.libs/Input_SJIS.o gnu/gcj/convert/.libs/Input_UTF8.o
> gnu/gcj/convert/.libs/Input_iconv.o gnu/gcj/convert/.libs/IOConverter.o
> gnu/gcj/convert/.libs/Output_8859_1.o gnu/gcj/convert/.libs/Output_ASCII.o
> gnu/gcj/convert/.libs/Output_EUCJIS.o
> gnu/gcj/convert/.libs/Output_JavaSrc.o gnu/gcj/convert/.libs/Output_SJIS.o
> gnu/gcj/convert/.libs/Output_UTF8.o gnu/gcj/convert/.libs/Output_iconv.o
> gnu/gcj/convert/.libs/UnicodeToBytes.o
> -L/home/fsirl/obj/gccm/ppc-linux/nof/libjava ./.libs/libgcj.so
> -L/home/fsirl/obj/gccm/ppc-linux/nof/libstdc++-v3/src
> -L/home/fsirl/obj/gccm/ppc-linux/nof/libstdc++-v3/src/.libs -lm
> -L/home/fsirl/obj/gccm/gcc/nof -L/home/fsirl/obj/gccm/gcc -L/usr/lib/nof
> -lgcc_s_nof -lc -lgcc_s_nof
> -ldl ./../boehm-gc/.libs/libgcjgc.so
> -L/home/fsirl/obj/gccm/ppc-linux/nof/libjava/../boehm-gc/.libs -lpthread
> ./../zlib/.libs/libzgcj.so
> -L/home/fsirl/obj/gccm/ppc-linux/nof/libjava/../zlib/.libs
> -L/home/fsirl/obj/gccm/ppc-linux/nof/libjava/.libs -Wl,--rpath
> -Wl,/home/fsirl/gnubin/lib/nof
> ./.libs/libgcj.so: undefined reference to `L19418'
> ./.libs/libgcj.so: undefined reference to `L19588'
> ./.libs/libgcj.so: undefined reference to `L19504'
> ./.libs/libgcj.so: undefined reference to `L19420'
> ./.libs/libgcj.so: undefined reference to `L19417'
> ./.libs/libgcj.so: undefined reference to `L19587'
> ./.libs/libgcj.so: undefined reference to `L19421'
> ./.libs/libgcj.so: undefined reference to `L19586'
> ./.libs/libgcj.so: undefined reference to `L19505'
> ./.libs/libgcj.so: undefined reference to `L19501'
> ./.libs/libgcj.so: undefined reference to `L19502'
> ./.libs/libgcj.so: undefined reference to `L19589'
> ./.libs/libgcj.so: undefined reference to `L19419'
> ./.libs/libgcj.so: undefined reference to `L19503'
> ./.libs/libgcj.so: undefined reference to `L19585'
> collect2: ld returned 1 exit status
> make[5]: *** [jv-convert] Error 1
> make[5]: Leaving directory `/home/fsirl/obj/gccm/ppc-linux/nof/libjava'
> make[4]: *** [all-recursive] Error 1
> make[4]: Leaving directory `/home/fsirl/obj/gccm/ppc-linux/nof/libjava'
> make[3]: *** [multi-do] Error 1
>
> Any idea how to tackle this?  I can give you access  to  this machine if
> you want.

Just a followup, with Java disabled I get the following regressions with 
-fPIC:

FAIL: gcc.c-torture/compile/20001221-1.c,  -O2
FAIL: gcc.c-torture/compile/20001221-1.c,  -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/compile/20001221-1.c,  -O3 -g
FAIL: gcc.c-torture/compile/20001221-1.c,  -Os
FAIL: gcc.c-torture/execute/20010106-1.c compilation,  -O3 
-fomit-frame-pointer
FAIL: gcc.c-torture/execute/20010106-1.c compilation,  -O3 -g
FAIL: gcc.c-torture/execute/980707-1.c compilation,  -O1
FAIL: gcc.c-torture/execute/980707-1.c compilation,  -O2
FAIL: gcc.c-torture/execute/980707-1.c compilation,  -O3 -fomit-frame-pointer
FAIL: gcc.c-torture/execute/980707-1.c compilation,  -O3 -fomit-frame-pointer 
-funroll-loops
FAIL: gcc.c-torture/execute/980707-1.c compilation,  -O3 -fomit-frame-pointer 
-funroll-all-loops -finline-functions
FAIL: gcc.c-torture/execute/980707-1.c compilation,  -O3 -g
FAIL: gcc.dg/switch-1.c (test for excess errors)                              

I guess you should be able to reproduce this on ppc-eabi as well. Maybe the 
regression tester should loop the tests over -fpic and -fPIC as well.

Franz.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]