3

我们在 PowerPC 平台上使用 IBM XL C/C++ 为源文件生成错误的代码。-O3它的表面是一个挂起,看起来一个特定的循环没有被打破。

该问题仅在 XL C/C++ 下出现。我们的测试制度表明源文件没有未定义的行为、内存错误和其他勘误。我们也不会从编译器收到源文件的严格/不严格警告。

我们想编译源文件-O2而不是-O3. 我们想在源文件中添加工具,如编译指示,以便编译器可以适当地保护它。该仪器允许其他人连接其他构建系统,如 Cmake 和 Autotools,并且事情将为他们“正常工作”。(必要的信息在源代码中而不是我们的 makefile 中可用)。

编译器的 IBM 手册位于IBM XL C/C++ for AIX, V13.1,但该死的,如果我能找到该选项。

IBM XL C/C++ 相当于#pragma GCC optimize什么?我们如何检测源代码以告诉 XL C/C++ 使用-O2而不是-O3?

4

1 回答 1

4

一个 IBM XL C/C++ for AIX V13.1 选项,您可以使用它来编译-O2位于#pragma options optimize=2. 可以在此处在线或在此处的 PDF中找到有关它的信息。如果您想覆盖-O3已经在命令行中指定的内容,并在函数级别对其进行控制,您可以使用#pragma option_override(<your function name>, "opt(level, 2)"). 可以在此处在线或在此处的 PDF中找到有关它的信息。您还可以通过修改 Makefile 来实现相同的目的,以便在编译一个源文件-O2而不是-O3.

另外,您确定您报告的错误消息tea.cpp:27:26来自 IBM XL C/C++ for AIX V13.1?它看起来不像该产品的诊断消息格式。

我们将继续关注您对 Stack Overflow 的评论(使用 xlc 标记有助于我们找到它),但是如果您在我们的论坛http://ibm.biz/xl上发布您的问题,您可能会发现您可以获得更快的响应时间-power-compilers-forum,IBM 编译器开发团队更积极地监控它。

于 2017-09-18T14:51:54.830 回答