我知道太多的优化对调试代码没有多大意义 但是如果使用-march = native来更好地使用指令集呢?
编辑: 让我们重新阐述一下。我知道同时启用优化和调试模式可能有以下缺点:
GCC允许您将-g与-O一起使用。通过优化采取的快捷方式 代码可能偶尔产生令人惊讶的结果:一些变量你 声明可能根本不存在;控制流可能会短暂地移动到哪里 你没想到的;某些陈述可能无法执行,因为 他们计算出不变的结果,或者他们的价值已经存在; 有些陈述可能会在不同的地方执行,因为它们是 走出了循环。
所以我的问题是,-march = native有类似的副作用,还是在调试代码中使用它也是明智的?
答案 0 :(得分:2)
优化的问题是积极的优化过程,改变控制流可能会混淆调试器。如果使用-O选项启用了这些传递,-march=native
可以启用其他优化(例如cmov),但这本身不会混淆调试器。