[FreeBSD] 8.2-PRERELEASE にしてから妙なエラー

4 日前に OS を更新しました。 gcc が machine/endian.h に構文エラーがあるとのメッセージを出すようになりました。 ちなみにファイルの元は /usr/src/sys/i386/include/endian.h です。

/usr/include/machine/endian.h:107: syntax error, unexpected '{' in ' return (__extension__ ({ register __uint32_t __X = (_x); __asm ("bswap %0" : "+r" (__X)); __X; }));' at '{'
/usr/include/machine/endian.h:107: syntax error, unexpected ';' in ' return (__extension__ ({ register __uint32_t __X = (_x); __asm ("bswap %0" : "+r" (__X)); __X; }));' at ';'

どうやらこのマクロの書き方が気に入らなかったようです。

#define __byte_swap_int_var(x) \
__extension__ ({ register __uint32_t __X = (x); \
   __asm ("bswap %0" : "+r" (__X)); \
   __X; })

しかしどこをどう直せばいいのかぜんぜんわかりません。 うまいことにこのエラーではビルド作業が停止しないので、 そのまま放置することにしました。