这种问题你可以通过一些手段尝试找下原因:
1、对比看下自己写的优化函数和系统提供的内联优化函数在代码实现上有什么本质的区别;
不过内联函数,我们能看到的可能就是一个声明部分,看不到具体代码实现吧;
2、好像有个内存屏障指令的,你可以在CACHE操作的前后加上试试:
__DSB();
__ISB();
3、debug仿真一下,程序死机时看下程序计数器PC指针的值,看下代码死在哪里;
4、可能是系统提供的内联函数在-O3优化等级下被过度优化造成了指令时序问题啥的;
不同优化等级下,内联函数的展开方式说不定就不一样。
大概率就是4这个原因吧
|
|