0

GCC Compile Farm と GCC119 でテストしています。GCC119 は、xlC 13.1 コンパイラを搭載した AIX マシンです。私はプラットフォームとコンパイラについてほとんど知りません。

xlC でビルドする場合:

$ CXX=xlC gmake CXXFLAGS="-DNDEBUG -g2 -O3 -qrtti" -j 8
xlC -DNDEBUG -g2 -O3 -qrtti -c cryptlib.cpp
xlC -DNDEBUG -g2 -O3 -qrtti -c cpu.cpp
...
xlC -DNDEBUG -g2 -O3 -qrtti -c hmac.cpp
1500-036: (I) The NOSTRICT option (default at OPT(3)) has the potential to alter the 
semantics of a program.  Please refer to documentation on the STRICT/NOSTRICT option
for more information.
...

コンパイラの IBM マニュアルはCompiler Reference v13.1にあります。STRICTまたはについては触れていませんNOSTRICT。キーワード検索に最も近いのは、 が__C99_RESTRICTいつ-qkeyword=restrict有効になるかについての議論です。さらに、man ページはありません。

$ man NOSTRICT
Manual entry for NOSTRICT not found or not installed.
$ man 3 NOSTRICT
There is not an entry for NOSTRICT in section 3.
$ man STRICT
Manual entry for STRICT not found or not installed.
$ man 3 STRICT
There is not an entry for STRICT in section 3.
$ man OPT
Manual entry for OPT not found or not installed.
$ man 3 OPT
There is not an entry for OPT in section 3.

-qflag=w警告が消えてコンパイルすると、作業する情報がさらに少なくなります。(ライブラリとプログラムは できれいにコンパイルされます-qflag=w)。

2 つの質問があります。まず、xlC が不平を言っているのは正確には何ですか? 第二に、xlC に問題のあるソース ファイルと行番号を教えてもらうオプションはありますか?

4

1 に答える 1

3

-qstrict および -qnostrict オプションに関する情報を探す場合は、HTML 形式のこちら、または 349 ページ (ページ番号で表示している場合)、または 367 ページ (PDF ページを使用している場合) で見つけることができます。アドバンサー)PDF形式で

-O3 (OPT(3)) を使用しているため、メッセージに示されているように、デフォルトで -qnostrict オプションが有効になっています。プログラムにわずかな意味上の違いがあるという代償を払って実行可能です。具体的に何を意味するかについては、ドキュメント (以下にコピー) を参照してください。以下に示す違いのいずれかが重要な場合は、-O3 -qstrict を指定してコンパイルして、これらのセマンティックの違いが発生しないようにしますが、アプリケーションのパフォーマンスはそれほど良くない可能性があります。

-qnostrict が有効な場合、以下の最適化がオンになります。

  • 例外が発生する可能性のあるコードは、再配置される場合があります。対応する例外は、実行中の別の時点で発生するか、まったく発生しない可能性があります。(コンパイラは、このような状況を最小限に抑えようとします。)
  • 浮動小数点演算では、ゼロ値の符号が保持されない場合があります。(この符号が確実に保持されるようにするには、-qfloat=rrm、-qfloat=nomaf、または -qfloat=strictnmaf も指定する必要があります。)
  • 浮動小数点式は再関連付けされる場合があります。たとえば、(2.0*3.1) 4.2 は 2.0 (3.1*4.2) になる可能性がありますが、結果が同じではない可能性があります。
  • -qfloat オプションの fltint および rsqrt サブオプションがオンになっています。-qstrict オプションまたは -qfloat の nofltint および norsqrt サブオプションを使用して、これらを再度オフにすることもできます。低レベルの最適化が指定されているか、または指定されていない場合、これらのサブオプションはデフォルトでオフになります。

あなたの man コマンドはNOSTRICT、 、STRICT、およびOPTはコンパイラ オプションであり、man では使用できません。コンパイラのマニュアル ページを表示するには、man xlC.

この情報メッセージは、-O3 でコンパイルされたすべてのファイルに対する一般的なメッセージであるため、この情報メッセージに関連するソース ファイルと行番号の情報はありません。

ドキュメンテーション (マニュアル・ページ、オンライン・ドキュメントなどを含む) に関するフィードバックをお寄せになりたい場合、IBM はフィードバックを求めています

PS IBM XL C/C++ for AIX V13.1 の完全な資料は、HTML 形式またはPDF 形式で入手できます。コンパイラ リファレンスを含む完全なコンパイラ ドキュメントを構成する「本」がいくつかあります。

于 2017-09-01T14:16:36.833 に答える