[ オリジナルレポート ]

BugID: #03698

カテゴリ 重要度 ステータス 解決状況 登録日時 最終更新
コンパイル解決済み修正済み2010-01-31 00:532010-03-02 06:59
 
テスターbelegdol担当者couriersudソース
バージョン0.136u2発生バージョン修正バージョン0.136u4
フラグ
セット
セット詳細
 
概 要NOWERRPR=1の設定で、-fno-strict-aliasingの指定が外れてしまう。
詳 細The hunt for this bug is described in the forums:
http://www.bannister.org/forums/ubbthreads.php?ubb=showflat&Number=58738
Anyway, the bottom point is that if you add NOWERROR=1 to the make line, -fno-strict-aliasing will not be applied. This will initially manifest as warnings during the compilation.
More fun begins when you add OPTIMIZE=2 to the mix. Then, poly.c using games (scud and mk4, at least) will lock up few moments after the 3d graphics shows up. Attaching gdb to the frozen process will show a backtrace beginning with the following lines:
(gdb) bt
#0 osd_work_queue_wait (queue=0xbc8e500, timeout=<value optimized out>)
at src/osd/sdl/sdlwork.c:280
#1 0x0000000000c424b3 in poly_wait (poly=0xba124a0,
debug_reason=<value optimized out>) at src/emu/video/poly.c:416
再現手順make -j3 NOWERROR=1 for strict aliasing only.
make -j3 NOWERROR=1 OPTIMIZE=2 for freezes.
追加情報This was discovered on an up-to-date Fedora 12 x86_64 installation:
$ gcc --version
gcc (GCC) 4.4.2 20091222 (Red Hat 4.4.2-20)
Copyright (C) 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
I use OPTIMIZE=2 for the RPM package I maintain so that the optimisation level does not interfere with system-wide $RPM_OPT_FLAGS. And before you ask, these flags have nothing to do with the problem - MAME built with these (with -Werror patched out of course) and OPTIMIZE=2 works perfectly fine.
 
添付ファイル