我们正在体验不良代码生成作为源文件使用IBM /C++在-O3
上的PowerPC平台。它的表面作为一个挂起,它似乎是一个特殊的循环没有被打破。
该问题仅在XL C/C++下出现。我们的测试机制表明源文件中没有未定义的行为、内存错误和其他错误。我们也不会收到来自源文件编译器的严格/不严格警告。
我们希望在-O2
而不是-O3
编译源文件。我们希望在源文件中添加一些工具,比如一个杂注,这样就可以为编译器适当地保护它。该工具允许其他人连接到其他构建系统,如Cmake和Autotools,这些工具对它们“只起作用”。(必要的信息可以在源中获得,而不是我们的makefile)。
用于编译器的IBM手册位于IBM /C++ for AIX,V13.1,但该死的是我是否可以找到该选项。
什么是等同于#pragma GCC optimize
的IBM /C++?我们如何使用源代码告诉XL /C++使用-O2
而不是-O3
发布于 2017-09-18 06:51:54
用于AIX 13.1的IBM /C++选项可以用于在-O2
编译该源文件的#pragma options optimize=2
。有关它的信息可以在网上这里或在PDF 这里中找到。如果要重写已在命令行上指定的-O3
,并在函数级别控制它,则可以使用#pragma option_override(<your function name>, "opt(level, 2)")
。有关它的信息可以在网上这里或在PDF 这里中找到。您还可以通过修改Makefile来实现相同的目标,这样就可以在-O2
而不是-O3
上编译一个源文件。
另外,您确定您报告的以tea.cpp:27:26
开头的错误消息来自AIX 13.1的IBM /C++吗?它看起来不像那个产品的诊断信息的格式。
我们将继续监视您对堆栈溢出的评论(使用xlc标记可以帮助我们找到它),但如果您在http://ibm.biz/xl-power-compilers-forum论坛上发布您的问题,您可能会发现您的响应时间更快,而IBM编译器开发团队会更积极地监视该论坛。
https://stackoverflow.com/questions/46252763
复制