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