(toppers-users 1421) Re: JSPカーネル 1.4のC++

高木信尚 takagi @ oct.zaq.ne.jp
2004年 3月 26日 (金) 22:57:05 JST


こんばんは、高木です。

> > SH系ではそんなにgccの出来が悪いのですか?
> > ちと心配になってきました。
> 
> sh-elfに限定した話ですが、私個人は3.3系を全く信用していません。
> 3.2系では(私が使う限りにおいては!)コンパイラに起因するバグに
> 出会ったことはありませんが、C++周りで怪しい動きがあるやも
> という話は、聞いたことがあります。

私もsh-elfの3.3系は相手にしていません。h8300では3.3系が良さそうです。
ターゲットによって、良いバージョンと悪いバージョンがあるようですね。
binutilsやnewlibとの相性もあるように思います。

参考までにSH3上でC++ APIラッパを開発している過程で見つけたバグを紹介
しておきます。(いずれも未解決です)

1. cygwin1.dllのバージョンが1.5.xの環境でクロスコンパイラを動作させ
 ると、newlib-1.11.0のビルド中にコンパイラが落ちる。

2. 最適化オプションを付けてg++でコンパイルすると、テンプレートの
 インスタンス化がある程度以上起こった時点でコンパイラが落ちる。

3. 最適化オプションを付けてg++でコンパイルすると、大きなインライン
 関数を展開しようとしたときにコンパイラが落ちることがある。

4. gcc-3.2.xでは、libstdc++-v3のatomicity.hがSH用にカスタマイズされて
 いないので、排他制御がかからない。(ライブラリのバグ)

ターゲットに依存しないバグは他にもありますが、SH特有のもので見つかった
のは上記の4点でした。

------------------
高木信尚