From: Gwenole B. <gb...@di...> - 2004-05-15 20:51:59
|
Hi, > I had to modify the generated Makefile and replace -O2 with -O1 > everywhere. I am only aware of two types of miscompilation with gcc on x86: 1) Don't use -mcpu=pentiumpro, at least with -march=i586 with gcc 3.3.2. You would get a hang during boot 2) gcc 3.2.2 miscompiles some SSE code, but I workarounded that in the sources. > However when I removed -O2 altogether, SheepShaver did not compile at > all. Have you tried to only lower -O2 to -O1 in DYNGEN_OP_FLAGS? What about adding -fno-strict-aliasing and keeping -O2? In the latter case, there could indeed be a bug in the code. > ../kpx_cpu/src/cpu/ppc/ppc-dyngen-ops.cpp -o obj/ppc-dyngen-ops.o *-ops.cpp files have to be compiled with optimizations. Otherwise you will end up with poorer performance. Do you really have a stock FSF gcc 3.3.2? Have you tried to upgrade to 3.3.3? At some point, I wanted to exercise a testcase for my hang problem with gcc 3.3.2, but getting a crash would be better. ;-) > I haven't measured how much faster is the newest version, but it still > suffers from some strange 'stops'. I have noticed that on AMD64 with gcc 3.3.2 too when experimenting with the asm based locking code. I will probably try other alternatives. In Unix/sysdeps.h, could you try to disable HAVE_TEST_AND_SET for i386 and rebuild at least main_unix.cpp and video_x.cpp? > There is also problem with configuration interface. In video modes tab > there is one checkbox that is not described (the 6th one). Selecting > only 'Windowed 800x600' result in termination of application and > message: > SheepShaver.ok: video_x.cpp:1166: bool VideoInit(): Assertion `cur_mode > != -1' failed. OK, I will have a look. Thanks, Gwenole. |