求问 gcc9 中-O1 比-O0 多了哪些优化选项?

2020 年 11 月 6 日
 xutl
1. linux 使用 gcc4 -O1,不会 crash
2. win + mingw + gcc9 -O1, crash 。代码相同

目前查找了 gnu 的文档,找到了一些-O1 比-O0 多的优化选项,全部加上以后,并不 crash 。但是直接加-O1 的话就会 crash 。目前 bug 还在排查中...望各位大佬给解答一下子!
3489 次点击
所在节点    C
14 条回复
typetraits
2020 年 11 月 6 日
ysc3839
2020 年 11 月 6 日
请发代码看看。
lv2016
2020 年 11 月 6 日
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html.
以及 “Not all optimizations are controlled directly by a flag. Only optimizations that have a flag are listed in this section.”
xutl
2020 年 11 月 6 日
@ysc3839 代码是整个一个模块,我也没有找到是哪个语句导致的
xutl
2020 年 11 月 6 日
@typetraits ok 非常感谢
xutl
2020 年 11 月 6 日
@lv2016 谢谢
linxy
2020 年 11 月 6 日
开 gdb 能跑么
xutl
2020 年 11 月 6 日
@linxy 能跑 就是每次 crash 的位置都不一样
dahakawang
2020 年 11 月 6 日
xutl
2020 年 11 月 9 日
@dahakawang
我都试过了。

@typetraits
我将-O1 比-O0 多的优化选项摘了出来,然后去掉-O1 优化,用摘出来的优化选项替代,不会 crash 。在所有优化选项前加上-O1,程序就会 crash 。我猜测,-O1 并不只有使用你发的这些优化选项,还可能存在其他优化,我没有在文档中找到。经过目前排查,我怀疑应该是模块内部内存有问题,碰巧在使用 gcc9+mingw 环境下被触发了。但是目前没有找到定位问题的方法。
typetraits
2020 年 11 月 9 日
@xutl #10 上 gdb 看一下-O1 crash 在哪啊
xutl
2020 年 11 月 9 日
@typetraits 我看了,crash 在类构造函数里面,构造函数全是初始化操作
lv2016
2020 年 11 月 24 日
@xutl 我遇到了和你一样的问题,具体表现是-O0 加上-O1 所有优化后和直接 O1 优化的结果不同,想问问你找到了问题没
xutl
2020 年 11 月 25 日
@lv2016 目前还没有,准备将 cmakel 脚本转为 sln 形式,使用 vs 进行编译

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/722402

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX