Jun Kuriyama
kuriy****@imgsr*****
2006年 8月 30日 (水) 11:49:43 JST
久しぶりに手元のバージョンを上げてみようと思って senna-20060829.tar.gz を試していたのですが、FreeBSD-6.1/i386 (32bit) の環境では問題なくコンパイルできるものの、FreeBSD-6.1/amd64 (64bit) 環 境では以下のようなコンパイルエラーが出てしまいました。 cc -D_REENTRANT -DSENNA_HOME=\"/var/senna\" -I. -I. -I.. -I. -I.. -I/usr/local/include/senna -Wall -O3 -fno-strict-aliasing -O -pipe -I/usr/local/include -MT store.lo -MD -MP -MF .deps/store.Tpo -c store.c -fPIC -DPIC -o .libs/store.o store.c: In function `sen_store_buf_add': store.c:68: error: unrecognizable insn: (insn 172 124 126 11 (set (reg:SI 0 ax [99]) (subreg:SI (plus:DI (subreg:DI (reg:SI 7 sp) 0) (const_int -8 [0xfffffffffffffff8])) 0)) -1 (nil) (nil)) store.c:68: internal compiler error: in extract_insn, at recog.c:2083 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. ポインタの引き算あたりっぽいので、適当に cast してみたのですがうまく いかず、結局以下のように一旦代入してやってから cast したら通りました。 問題が gcc 側なのかどうかもよくわからないのですが、他の方で 64bit 環 境の方でやってみた方いらっしゃいますか? --- lib/store.c.orig Tue Aug 29 03:00:23 2006 +++ lib/store.c Tue Aug 29 16:42:28 2006 @@ -18,6 +18,7 @@ #include "str.h" #include "inv.h" #include "store.h" +#include <stddef.h> #include <string.h> static int len_sum = 0; @@ -60,10 +61,12 @@ sen_store_buf_add(sen_store_buf *b, sen_id tid) { uint8_t dummybuf[8], *dummyp; + ptrdiff_t pd; if (b->tvp < b->tve) { *b->tvp++ = tid; } dummyp = dummybuf; SEN_B_ENC(tid, dummyp); - simple_sum += dummyp - dummybuf; + pd = dummyp - dummybuf; + simple_sum += (int)pd; return sen_success; } -- Jun Kuriyama <kuriy****@imgsr*****> // IMG SRC, Inc. <kuriy****@FreeB*****> // FreeBSD Project