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

Error: operand out of range (32 not between 0 and 31)



以前ちょっと言っていた、egcs が変なコードを出す問題、
できるところまで分離してみました。以下のコードを -O1
以上でコンパイルすると発生します。egcs は 1.0.2 です。

#define MACRO {			\
    if (a != 1)			\
    	if (a == 0)		\
	    if (bits)		\
		bits >>= rs;	\
    a--;			\
}

int
xxx(a, bits)
	int a;
	unsigned long bits;
{
	int rs = 32;

	MACRO;
	MACRO;

	return bits;
}

if をまとめてみたりすると発生しなくなってなかなか謎です。

1.0.3 でも起きるようならレポートしてみます…。

P.S.
  powermacは10日ぐらいは連続稼働するようになりました。:-)
  (それ以上はやってないからわかんない)