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

2020-11-06 14:40:58 +08:00
 xutl
1. linux 使用 gcc4 -O1,不会 crash
2. win + mingw + gcc9 -O1, crash 。代码相同

目前查找了 gnu 的文档,找到了一些-O1 比-O0 多的优化选项,全部加上以后,并不 crash 。但是直接加-O1 的话就会 crash 。目前 bug 还在排查中...望各位大佬给解答一下子!
2149 次点击
所在节点    C
14 条回复
typetraits
2020-11-06 14:44:56 +08:00
ysc3839
2020-11-06 14:45:18 +08:00
请发代码看看。
lv2016
2020-11-06 15:03:00 +08:00
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-06 16:36:23 +08:00
@ysc3839 代码是整个一个模块,我也没有找到是哪个语句导致的
xutl
2020-11-06 16:36:52 +08:00
@typetraits ok 非常感谢
xutl
2020-11-06 16:37:01 +08:00
@lv2016 谢谢
linxy
2020-11-06 16:51:49 +08:00
开 gdb 能跑么
xutl
2020-11-06 17:23:04 +08:00
@linxy 能跑 就是每次 crash 的位置都不一样
dahakawang
2020-11-06 17:48:50 +08:00
xutl
2020-11-09 16:25:33 +08:00
@dahakawang
我都试过了。

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

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

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

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

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

© 2021 V2EX