GCCプラグマ最適化を使用して、Cコードでグローバル最適化を設定しようとしています。 GCCのバージョンはUbuntu上で4.4.3です。基本的な考え方は、関数固有の最適化レベルを使用することです。#pragma GCCを使用したCコードの最適化
#pragma GCC optimize ("O3")
私はちょうど私のCコード
での私のメインの関数の前にコンパイルエラー を取得するしかし、私はそれを構築する際に以下のように、私はコンパイルエラーを取得する - 私はREADMEを確認
passrecovery.c: In function âmainâ:
passrecovery.c:493: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-4.4/README.Bugs> for instructions.
make: *** [all] Error 1
.Bugsファイルは、エラーで言及しましたが、これに関する手がかりは見つかりませんでした。
#pragma optimize
は4.4.3 GCCでサポートされていますか、そうではありませんか?
「はい」の場合、このプラグマを使用してコードを最適化する際に間違っていることがあります。
速度のコードを最適化するための他の代替GCC指令?
EDIT:私はその後も#pragma GCC optimize ("O3")
とファイル#pragma GCC pop_options
の終わりに#pragma GCC push_options
を試してみました。同じエラー。あなたが別のコンパイル単位にそれを入れて、コマンドラインスイッチを使用することができます。:最後の質問については
FYI main()でこの最適化ディレクティブを使用しようとしました。それは問題のようです。このディレクティブは、他の関数(メイン以外)で使用するときれいに(Atleast compiled ok) – goldenmean
@これを引き起こしているコードをもう少し目の当たりにしたいと思うでしょう。このコードで使用されるライブラリは、-lcrypt(crypt.h)、string.h、stdio.h、stdlib.h、ctype.hです。 – goldenmean
@goldenmean:「」とそれに依存するものを最初に削除することをお勧めします。最初の490行にあるものを見て、クラッシュを維持しながら何が卸売価格で削除できるかを見てください。最初にコメントを使用してから削除することができます。コードの行を変更することはできません。しかし、それはかなりありそうもない。削除されたすべての行がメリットです。あなたのプログラムが自分のヘッダーを使用していないということは人生を単純化します。 –