编译器优化级别O3引入的bug
今天遇到一个问题,写了一个内存管理器,预先分配大量的内存,然后用到的时候从分配器中分配,避免多次new的开销。但这不是重点,重点是写出来之后没有问题,但是O3编译就有问题,捣鼓一阵之后返现O1和O2也没有问题,这明显是O3优化做了不该做的事,但是怎么解决呢?
解决方案如下:
#pragma GCC push_options
#pragma GCC optimize ("O2")
// code ...
#pragma GCC pop_options
编译器优化级别O3引入的bug相关推荐
- GNU编译优化级别-O -O1 -O2 -O3
最近做一个算法的GPU加速,发现实际上使用gcc的-O3(最高级编译优化)选项,可以获得很高的加速比,我的程序里达到了3倍的样子,有时效果甚至比GPU加速好.因此小小学习了下GNU的编译优化. 附言一 ...
- 【转】C 编译器优化过程中的 Bug
C 编译器优化过程中的 Bug 一个朋友向我指出一个最近他们发现的 GCC 编译器优化过程(加上 -O3 选项)里的 bug,导致他们的产品出现非常诡异的行为.这使我想起以前见过的一个 GCC bug ...
- LWN:怕不怕编译器优化让你的代码彻底乱套?
Who's afraid of a big bad optimizing compiler? July 15, 2019 (Many contributors) 本文贡献者包括Jade Alglave ...
- 编译器优化故障的测试与定位
作者 | 江贺 整理 | Hana 作者简介: 江贺,大连理工大学软件学院教授,博士生导师,研究领域:智能软件工程(软件大数据处理.编译系统测试.工业软件测试) 个人主页:http://faculty ...
- 每个程序员都应当知道的编译器优化知识
高级编程语言提供的函数.条件语句和循环这样的抽象编程构造极大地提高了编程效率.然而,这也潜在地使性能显著下降成为了用高级编程语言写程序的一大劣势.在理想条件下,在不以性能为妥协的情况下,你应该写出易读 ...
- xcode打包优化级别设置
什么是Optimization Level 下面是苹果的官方解释: Specifies the degree to which the generated code is optimized for ...
- c语言编译器 代码优化,c编译器高级篇!!搞定c编译器优化
对于c编译器,想必大家也有所了解,3款主流c编译器也是活跃在不同人群的PC上.网络上很多文章都止步于对c编译器的介绍,并未探索c编译器更加深层次的内容.而在本文中,将涉及c编译器的高级部分--c编译器 ...
- 优化级别linux gcc,c - 有多少GCC优化级别?
让我们解释一下GCC 5.1的源代码,看看O上发生了什么,因为在手册页上不清楚. 我们将得出结论: O以上-O的任何内容与Os相同,但未来可能很容易改变,所以不要依赖它. 如果输入大于O的整数,GCC ...
- C语言 使用数组索引与指针索引 在循环中对编译器优化的影响及耗时分析
C语言在访问数组时既可以使用如a[i]这样的下标方式,也可以使用*(a+i)这样的指针方式,理论上完全等价.但是在编译器对循环作优化时,对于指针方式的索引很有可能分析不彻底,因此相比数组索引耗时有所增 ...
- 编译器优化和cpu优化
编译器优化 减少不必要的代码或指令以达到优化; CPU优化 关系密切的操作提前执行,而不是顺序执行; 优化带来的问题 莫名其妙的bug,且不容易复现: 编译器指令优化 volatile修饰的变量,和它 ...
最新文章
- 从零开始_学_数据结构(六)——排序(冒泡、插入、希尔、简单选择、归并、快速)...
- margin负值的理解和应用
- VBA【遍历每个工作表并将工作表表名赋予B2单元格】
- linux 进程参数文件 /proc/pid/cmdline 简介
- 精通JavaScript--01面向对象JavaScript
- julia(6)-循环与猜数字
- 设计模式学习笔记九:原型模式(Prototype Pattern)
- 设计模式练习_设计练习是邪恶的
- .Net Core迁移到MSBuild平台
- 电脑老是提示虚拟内存不足的原因及解决办法
- linux mysql 临时文件_linux下mysql自动备份数据库与自动删除临时文件
- 适用所有服务器的全站301重定向跳转教程
- 美股,港股和A股三者之间的关系和差别
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_04微服务下电商项目基础模块设计...
- Java小程序:单循环比赛,总分高者获胜的源代码
- python手写数字识别实验报告_ANN MNIST手写数字识别总结
- 移动支付的方式有哪些拾方易告诉你
- [LOL自走棋] 种族职业数据
- MATLAB之LU分解法(十)
- 微信小程序无法获取头像,昵称的解决办法 (原生)