我们在PowerPC平台上的bad code generation上使用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
?
可用于在-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编译器开发团队监控这些问题更积极。