V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
xutl
V2EX  ›  C

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

  •  
  •   xutl · 2020-11-06 14:40:58 +08:00 · 2283 次点击
    这是一个创建于 1460 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. linux 使用 gcc4 -O1,不会 crash
    2. win + mingw + gcc9 -O1, crash 。代码相同

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

    @typetraits
    我将-O1 比-O0 多的优化选项摘了出来,然后去掉-O1 优化,用摘出来的优化选项替代,不会 crash 。在所有优化选项前加上-O1,程序就会 crash 。我猜测,-O1 并不只有使用你发的这些优化选项,还可能存在其他优化,我没有在文档中找到。经过目前排查,我怀疑应该是模块内部内存有问题,碰巧在使用 gcc9+mingw 环境下被触发了。但是目前没有找到定位问题的方法。
    typetraits
        11
    typetraits  
       2020-11-09 16:41:14 +08:00
    @xutl #10 上 gdb 看一下-O1 crash 在哪啊
    xutl
        12
    xutl  
    OP
       2020-11-09 18:10:41 +08:00
    @typetraits 我看了,crash 在类构造函数里面,构造函数全是初始化操作
    lv2016
        13
    lv2016  
       2020-11-24 22:51:28 +08:00
    @xutl 我遇到了和你一样的问题,具体表现是-O0 加上-O1 所有优化后和直接 O1 优化的结果不同,想问问你找到了问题没
    xutl
        14
    xutl  
    OP
       2020-11-25 16:30:29 +08:00
    @lv2016 目前还没有,准备将 cmakel 脚本转为 sln 形式,使用 vs 进行编译
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3443 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:42 · PVG 19:42 · LAX 03:42 · JFK 06:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.