[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

gcc-3.1.1



gcc-3.1.1 が出たようなので試してみました。

やっぱり tcp がダメだったので今度はちょっと追ってみました。
以下のようなコードで -O1 と -O2 で結果が違います。
(その結果 in4_cksum が正しく動かない)
# だれかバグレポートしておいてもらえるとうれしい。:-)

in_cksum.o だけ -O1 でつくればとりあえずカーネルは動くみたい
です。そんなの不安でつかえないけど…。


#include <stdio.h>

struct buf {
	int data;
};

bug(m)
	struct buf *m;
{
	int sum = 0;
	struct buf tmp;
	unsigned short *w = (void *)&tmp;

	bzero(&tmp, sizeof tmp);
	tmp.data = m->data;

	//asm volatile ("" ::: "memory");

	sum += w[0];
	sum += w[1];

	printf("sum = 0x%x\n", sum);

	return 0;
}

main()
{
	struct buf m;

	m.data = 0x12345678;
	bug(&m);
}