我正在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 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
完全编译。
我有两个问题。首先,xlC究竟在抱怨什么?第二,是否有一个选项让xlC告诉我它抱怨的源文件和行号?
答案 0 :(得分:3)
如果您查找有关-qstrict和-qnostrict选项的信息,请在HTML format或第349页(如果您按页码进行)或第367页(如果你在PDF format中使用PDF页面推进器。
由于您正在使用-O3(OPT(3)),正如消息所示,默认情况下-qnostrict选项有效,这意味着与使用-qstrict编译时相比,更积极的优化是执行以创建更快的可执行文件,代价是程序中存在轻微的语义差异。查看文档(下面复制)以了解具体含义;如果下面提到的任何差异对您很重要,请使用-O3 -qstrict进行编译以防止发生这些语义差异,但您的应用程序性能可能不会那么好。
启用-qnostrict后,将启用以下优化:
您的man命令将无法像NOSTRICT
,STRICT
一样工作,OPT
是编译器选项,不能与man一起使用。要查看编译器手册页,您需要使用man xlC
。
没有与此信息消息关联的源文件和行号信息,因为它是使用-O3编译的所有文件的一般消息。
如果您想对文档(包括手册页,在线文档等)提供反馈,请IBM is looking for feedback。
P.S。可以在HTML format或PDF format中找到IBM XL C / C ++ for AIX,V13.1的完整文档。有几本书"它构成了完整的编译器文档,包括编译器参考。