2008-08-28 20 views
6

私が仕事をしている製品グループは現在、大規模な低レベルのCコードベースのgcc 3.4.6(古くはわかっていますが)を使用しており、それ以降のバージョンにアップグレードしたいと考えています。私たちはテストしたすべてのハードウェアプラットフォームで異なるバージョンのgcc 4.xをテストすることでパフォーマンスが向上することが分かりました。しかし、我々は非常に(歴史的には正当な理由がある)のCコンパイラのバグを恐れています。どちらの4.xバージョンのgccを使うべきですか?

大規模なコードベースで4.3.2を使用している人がうまく動作していると感じていますか?

答えて

4

gccのための最高の品質管理は、Linuxカーネルです。 GCCは基本的にすべての主要なオープンソースのC/C++プログラムのコンパイラです。リリースされたGCC、特に主要なLinuxディストリビューションにある4.3.Xのようなものは、かなり良いはずです。

また、新しいcpusでの最適化のサポートがGCC 4.3で向上しました。

1

特定のバージョンはありませんが、なぜ4.X 3.4.6がインストールされていませんか?次に、両方のバージョンでコードをコンパイルしておき、4でshow-stoppingバグを実行すると、終了ポリシーが適用されます。

0

OpenMPに興味がある場合は、gcc 4.2以上に移行する必要があります。私たちは約5M行のコードベースで4.2.2を使用していますが、問題はありません。

4

プロジェクトをGCC 3からGCC 4に移行したとき、いくつかのテストを実行して前後の動作が同じであることを確認しました。正しい動作を確認するために一連の(うまくいけば自動化された)テストを実行するだけですか?結局のところ、GCC 3の動作ではなく、 "正しい"動作が必要です。

0

4.3.2については何も言えませんが、私のラップトップはGCC 4.3.1 {0,1}(各パッケージの作成時期によって異なります)で構築されたGentoo Linuxシステムです。問題。しかし、これは主に標準的なデスクトップの使用にすぎません。奇妙なコードがある場合、あなたの走行距離は変わるかもしれません。

1

最新のものを使用してください。ただし、をご利用ください。、それぞれの警告は-Wallとなります。特別な楽しみのために、frobにもっと多くの警告フラグがあります。 には、さまざまな回帰テストがあり、それらをすべて実行してチェックします。

GCC(特にC++、でもC)がかなり変更されました。コード分​​析と最適化がはるかに優れており、未定義のバハーを異なる方法で呼び出すようなコードを処理します。したがって、「うまく機能しましたが実際に無効な構造の特定の解釈に依存していたコードはおそらく中断します。うまくいけば、コンパイラは警告やエラーを出すが、そのような運を保証するものではない。

関連する問題