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: PowerPC FP constant and profiling changes


At 04:44 22.03.99 , Kaveh R. Ghazi wrote:
> > From: David Edelsohn <dje@watson.ibm.com>
> >
> >      I have ripped out all of the stack PUSH/POP stuff that was causing
> > ABI problems and replaced it with explicit moves to a temporary register.
> > This includes having the SVR4 ABI act more like AIX using a register
> > instead of the dangerous stack save/restore game.  I could not test the
> > SVR4 changes, so I would appreciate if the LinuxPPC testers would make
> > sure that I have not broken anything when profiling is enabled.
> >
> >      I also changed float/double constants to use the IEEE 754
> > bit-patterns instead of emiting constants as FP values subject to
> > assembler interpretation.
> >
> > David
> >
> >
> >      * rs6000.h (ASM_OUTPUT_{DOUBLE,FLOAT}): Always generate IEEE 754
> >      bit-pattern directly.
> >      (ASM_OUTPUT_REG_{PUSH,POP}): Delete.
> >      * rs6000.c (first_reg_to_save): If profiling and context needed,
> >      allocate a reg to save static chain for all ABIs.  For AIX
> >      profiling, calculate parameter registers to save based on need.
> >      (output_function_profiler): Save and restore static chain around
> >      profile call for all ABIs.
>
>
>        I built a recent snapshot, which had this patch, on
>powerpc-ibm-aix4.1.4.0.  When I run c-torture using -p/-pg I saw no
>regressions vs a normal testrun.  Good work.  Thanks for pursuing and
>fixing the profiling problems David.  :-)

Finally I was able to bootstrap mainline ppc-linux again and it looks good, 
only 1 additional FAIL with -p/-pg:

spawn /home/fsirl/obj/cvsm/gcc/testsuite/../xgcc 
-B/home/fsirl/obj/cvsm/gcc/testsuite/../ 
/home/fsirl/egcsm/gcc/testsuite/g++.old-deja/g+
+.jason/thunk2.C -fvtable-thunks -fPIC -I/home/fsirl/egcsm/libio 
-I/home/fsirl/obj/cvsm/ppc-redhat-linux/libio -I/home/fsirl/egcsm/libstd
c++ -I/home/fsirl/egcsm/libstdc++/stl -lstdc++ 
-L/home/fsirl/obj/cvsm/ppc-redhat-linux//libstdc++ 
-L/home/fsirl/obj/cvsm/ppc-redhat-linux
//libiberty -lm -p -o /home/fsirl/obj/cvsm/gcc/testsuite/g++-jason-thunk2-C
/tmp/cce5jaaa.s: Assembler messages:
/tmp/cce5jaaa.s:309: Fatal error: Symbol .LCL4 already defined.
compiler exited with status 1
output is:
/tmp/cce5jaaa.s: Assembler messages:
/tmp/cce5jaaa.s:309: Fatal error: Symbol .LCL4 already defined.

FAIL: g++.jason/thunk2.C (test for excess errors)


It seems that with profiling (-p or -pg) turned on and in presence of 
thunks, egcs forgets to increment one of the *labelno* variables in rs6000.c.

This is an old bug and not related to Davids changes.

Franz.



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