对于在PowerPC平台上-O3
使用IBM XL C / C ++的源文件,我们遇到bad code generation。它的表面挂起,看起来特定的循环没有被打破。
问题只出现在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
?
答案 0 :(得分:4)
可用于在-O2
编译该源文件的IBM XL C / C ++ for AIX V13.1选项为#pragma options optimize=2
。有关它的信息可以在线here或PDF here找到。如果要覆盖已在命令行中指定的-O3
,并在功能级别控制它,则可以使用#pragma option_override(<your function name>, "opt(level, 2)")
。有关它的信息可以在线here或PDF here找到。您也可以通过修改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编译器开发团队更积极地监控它。