未预料的编译器优化

以前调试程序时遇到的问题。先是这样写,希望将io_status 的低三位分别保存到a0/a1/a2,
a0 = (io_status << 7) >> 7;
a1 = (io_status << 6) >> 7;
a2 = (io_status << 5) >> 7;
实际测试后发现全部被优化成:
a0  =  a0;
a1  >> 1;
a2 >> 2;
这显然不是期望的结果,这种问题有点隐蔽。

猜你喜欢

转载自www.cnblogs.com/yup1983/p/9014847.html
今日推荐