[H8-ML(1889)] Re: 3068F Lanマイコンに付属のCコンパイラのバグ( 仕様?)
From: "(*_*) Masahiro Ochiai" <user@xxxxxxxxxxxxx>
Date: 2002年05月30日(木)20時48分02秒
落合です。こんにちわ

>     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/
スレッド概略
[1887(R)](起点)
 └[1888(U)]
   └[表示中]
     └[1890(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]