【发布时间】:2013-07-14 07:17:23
【问题描述】:
我有一个使用 SSSE3 内部命令(注意三个 S)的代码和一个运行时检查是否使用它,因此我假设应用程序应该在没有 SSSE3 支持的 CPU 上执行。 但是,当使用 -mssse3 和 -O1 优化时,编译器还会插入我没有显式调用的 SSSE3 指令,因此程序会崩溃。
有没有办法在我显式调用相关的内部函数时启用 SSSE3 代码,但阻止编译器添加自己的 SSSE3 代码?
请注意,我无法禁用 -O1 优化。
【问题讨论】:
-
用不同的设置编译不同的TU。
-
用不同的选项编译不同的文件,或者用不同的选项(pragma,attribute)编译不同的函数,或者使用gcc-4.9。
-
@MarcGlisse - gcc 4.9 将如何帮助我?
-
啊,对,这里提到的很短:gcc.gnu.org/gcc-4.9/changes.html。 gcc-4.9 允许您使用内在函数,即使当前编译模式表明它们不可用。
标签: c++ optimization gcc sse sse3