[Senna-dev 253] senna-20060829 in 64bit arch

Back to archive index

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



Senna-dev メーリングリストの案内
Back to archive index