こんばんは、芳賀です。 gcc 2.95.3 を使用してコンパイルしている時に以下のエラーが発生したので すが、 edje_embryo.c: In function `_edje_embryo_fn_set_text_class': edje_embryo.c:1082: Unable to generate reloads for: この対処方法としては、gcc のアップグレードが正解でしょうか? アドバイスをいただければと思います。 使用したマシンは、 * Vine Linux 2.6r4 * kernel 2.4.27 * gcc 2.95.3 * autoconf 2.59 * automake 1.9.3 です。このマシンを使用して http://www.enlightenment.org/pages/edje.html にある edje ライブラリを昨日 enlightenment の CVS から取得してコンパイ ルしたのですが、以下のエラーが発生しました。 gcc -DHAVE_CONFIG_H -I. -I. -I../.. -I../.. -I../.. -I/usr/local/include -I/usr/local/include -I/usr/local/include -I/ usr/local/include -I/usr/local/include -g -O2 -c edje_embryo.c -Wp,-MD,.deps/libedje_la-edje_embryo.TPlo -fPIC -DPIC -o .libs/libedje_la-edje_embryo.lo edje_embryo.c: In function `_edje_embryo_fn_set_text_class': edje_embryo.c:1082: Unable to generate reloads for: (insn 182 178 183 (parallel[ (set (reg/v:SI 0 %eax) (fix:SI (fix:SF (subreg:SF (reg:SI 0 %eax) 0)))) (clobber (mem:HI (plus:SI (reg:SI 6 %ebp) (const_int -2 [0xfffffffe])) 0)) (clobber (mem:HI (plus:SI (reg:SI 6 %ebp) (const_int -4 [0xfffffffc])) 0)) (clobber (mem:SI (plus:SI (reg:SI 6 %ebp) (const_int -8 [0xfffffff8])) 0)) (clobber (scratch:HI)) ] ) 145 {fix_truncsfsi2+1} (insn_list 178 (nil)) (expr_list:REG_DEAD (reg:SI 0 %eax) (expr_list:REG_UNUSED (scratch:HI) (nil)))) これに関する情報を google したところ、 http://gcc.gnu.org/ml/gcc-bugs/2001-12/msg00860.html という記事を見つけまし。そこでこれを参考に、全 Makefile 中に定義されて いる "-O2" オプションをすべて削除し、make し直したところ、コンパイルは 正常終了しました。どうやら gcc の optimizer のバグのようです。 私の使い方、およびその環境では Vine Linux 2.6r4 は極めて安定しており、 Vine Linux 自体のアップグレードはまだ考えていないのですが、そのような 場合、このエラーへの対処としては、gcc のアップグレード(3.4.2 へ?) が一般的でしょうか、それとも他にも方法はありますでしょうか? よろしくお願いします。 --- Yasufumi Haga yasufumi.haga@xxxxxxxxx http://homepage3.nifty.com/peterpan/ fingerprint:0EFA 299A BC32 7D68 1FEF BA2B 804E 9B15 C4F0 F9F0
Attachment:
pgpZMeTm9tc1h.pgp
Description: PGP signature