c – 这是g中的优化错误吗?
如果您认为我已经过度混淆或消除了太多,请告诉我.用户 问题 所以,我的问题是,对任何人来说,它看起来像一个错误的优化吗? 如果它有用,我可以发布原始C代码的消毒版本. 这是我第一次发布Stack Overflow,所以如果我能做的话请告诉我 答案 编辑(事后几天): 我在下面接受了我的问题的答案 – 这不是g中的优化错误,我只是看错了汇编代码. 但是,对于将来可能会看到这个问题的人,我找到了答案.我在C(http://blog.regehr.org/archives/213和http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html)中对未定义的行为进行了一些阅读,并且编译器的一些描述使用未定义的行为优化掉函数似乎非常熟悉. 我在函数’helper_function’中添加了一些NULL指针检查,并且看到…… bug消失了.我应该开始使用NULL指针检查,但显然没有让它们允许g做任何想做的事情(在我的情况下,优化掉调用). 希望这些信息有助于未来的人. 最佳答案 我觉得你在看错了.我想编译器注意到你的函数很短并且没有触及%rdi寄存器所以它只是不管它(你有与第一个参数相同的变量,我想这是放在%rdi中的内容.参见第21页这里http://www.x86-64.org/documentation/abi.pdf)如果查看未优化的版本,它会在此行保存%rdi寄存器
…然后在调用helper_function之前,它将保存的值移动到移动到%rdi的%rax中.
在优化它时,编译器就可以摆脱所有来回移动. (编辑:呼伦贝尔站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 红雪打开会弹窗,关于Couldn't load Mobiledevice.dll解决办
- linux – 运行RAID 10的Dell PowerEdge 2950 w / PERC 6 /
- Fast portable non-blocking network programming with Lib
- 微信字体大小怎么改
- linux – 如何在github上为1个用户添加2个repo的部署密钥
- 魅族mx2怎么连接电脑
- 新《梦幻之城》iOS版今日新服 鬼节无限狂欢
- 苹果ios6.0新功能,有望出中文siri
- 泽诺尼亚传奇5中文版设置繁体中文方法
- 调整远程系统上的/ var分区(Linux Debian Lenny)
