IBM XL C/C++ 相当于#pragma GCC optimize

IBM XL C/C++ equivalent to #pragma GCC optimize

我们正在 bad code generation 在 PowerPC 平台上 -O3 使用 IBM XL C/C++ 的源文件。它的表面像一个挂起,看起来一个特定的循环没有被打破。

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

我们想在 -O2 而不是 -O3 处编译源文件。我们想在源文件中添加检测,如 pragma,以便编译器可以适当地保护它。该仪器允许其他人连接其他构建系统,如 Cmake 和 Autotools,并且事情将为他们 "just work"。 (必要的信息在源代码中可用,而不是我们的 makefile)。

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

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

用于 AIX V13.1 的 IBM XL C/C++ 选项是 #pragma options optimize=2,您可以使用它来编译位于 -O2 的那个源文件。关于它的信息可以在网上找到 here or in the PDF here. If you want to override -O3 that has already been specified on the command line, and control it at a function level, you may use #pragma option_override(<your function name>, "opt(level, 2)"). Info about it can be found online here or in the PDF here。您还可以通过修改 Makefile 来实现相同的目的,以便在 -O2 而不是 -O3.

处编译一个源文件

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

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