落合です。こんにちわ
> mov.b @16777022,r2l <------ここがおかしい
> and #-33,r2l
> mov.b r2l,@16777022
確かにgcc-2.95.3はそうなりますね。この構造体ですが、
unsigned char : 0;
っておかしくないですか? 0ビットを割り当てる?
ダミーで1ビットスキップさせるのなら
unsigned char : 1;
になると思うのですが...やってみたらうまくコード生成できました。それが原因では?
似たような割り当ては次のようなケースでも発生します。
typedef struct {
int a;
int b[0];
} TEST;
TEST aaa;
0バイト割り当ててますがエラーにはなりませんし、メンバbを参照できます。
この辺はコンパイラ依存のようです。昔この問題でよくカーネルコンパイルに引っかかりました。
--
落合 正弘
Masahiro OCHIAI
http://strawberry-linux.com/