2017-09-16 23 views
2

PowerPCプラットフォームで-O3というIBM XL C/C++を使用してソースファイルにbad code generationが発生しています。ハングとしてのその表面は、特定のループが壊れていないように見えます。#pragma GCC最適化と同等のIBM XL C/C++

問題は、XL C/C++でのみ発生します。私たちのテスト体制は、ソースファイルが未定義の振る舞い、メモリエラー、およびその他の正誤のないことを示しています。ソースファイルのコンパイラからの厳密な/警告の警告も受け取りません。

-O3の代わりに-O2にソースファイルをコンパイルします。プラグマのようなインスツルメンテーションをソースファイルに追加して、コンパイラに適切にガードされるようにします。インストルメンテーションは、他の人がCmakeやAutotoolsのような他のビルドシステムにワイヤインすることを可能にします。 (必要な情報はソースで利用可能であり、メイクファイルではありません)。

コンパイラのIBMマニュアルはIBM XL C/C++ for AIX, V13.1にありますが、そのオプションが見つかった場合は気になります。

#pragma GCC optimizeに相当するIBM XL C/C++とは何ですか? -O3の代わりに-O2を使用するようにXL C/C++に指示するために、ソースコードを計測するにはどうすればよいですか?

答えて

2

-O2のソースファイルをコンパイルするために使用できるIBM XL C/C++ for AIX V13.1オプションは、#pragma options optimize=2です。その情報はオンラインhereまたはPDF hereにあります。コマンドラインですでに指定されている-O3を上書きし、それを関数レベルで制御する場合は、#pragma option_override(<your function name>, "opt(level, 2)")を使用します。その情報はオンラインhereまたはPDF hereにあります。 1つのソースファイルが-O3の代わりに-O2にコンパイルされるようにMakefileを変更することで同じことを達成することもできます。

また、tea.cpp:27:26で始まるエラーメッセージは、IBM XL C/C++ for AIX V13.1から出されましたか?その製品の診断メッセージの形式ではないようです。

私たちは、スタックオーバーフロー(xlcでタグ付けするとタグ付けを見つけることができます)のコメントを引き続き監視しますが、質問をIBMフォーラムのhttp://ibm.biz/xl-power-compilers-forumに投稿すると、応答時間が短縮される場合がありますコンパイラ開発チームはより積極的に監視します。

+1

ありがとう@trudeaun。私はあなたがコンパイラの診断について正しいと思います。それはGCCメッセージのように見えます。 「-O2」に関して、我々は痛みを発見した。それは[Issue 503](https://github.com/weidai11/cryptopp/issues/503)でクリアされました。私はそれが*「As If」*ルールC++ルール - コンパイラ作成者が機能しているプログラムを機能しないプログラムに変えることが許可されていると思います:) – jww

+1

スタックオーバーフローとIBMフォーラムについて、監視していただきありがとうございます。私はディスカッションアカウントを持っていないし、私はまだ別のソーシャルネットワークに参加しないので、会場を使うことはできません。 IBM、Google、Facebookなどを受け入れればいいと思うが、私はほとんどの企業が情報を収集するサービスプロバイダーになりたいと思っている。彼らは情報をあきらめなければならない信頼団体であることを望んでいません。 – jww

+1

もう一度@trudeaunに感謝します。マニュアル参照で何が起こったのか分かります。あなたが指摘した情報はマニュアルにあります。しかし、私はもう片方から作業しました.441ページのマニュアルで 'option_override'が見つかったので、441-445ページの最適化オプションを探しました。問題は、 '' opt(level、2) ''はマニュアルのその領域で議論されていないということです。他の最適化は、 'unroll'や' nounroll'のように行われますが、 '' opt(level、2) ''ではありません。私はまだマニュアルを使うことを学んでいると思います。 – jww

関連する問題