【问题标题】:Do compilers optimize out net zero bit shifts?编译器是否优化了净零位移? 【发布时间】:2018-07-24 08:25:12 【问题描述】:
我认为clang++ (Ubuntu clang version 3.5.2-3ubuntu1 (tags/RELEASE_352/final) (based on LLVM 3.5.2)) 正在编译的.cpp 文件中有一些类似于以下代码块的代码(我不允许发布原始代码)。
它看起来像C 代码,因为我们使用GoogleTest 来测试我们的C 代码。总之:
size_t const SHIFT = 4;
uint8_t var, var2;
/* Omitted: Code that sets var to, say 00011000 (base 2) */
var2 = var;
var = var << SHIFT >> SHIFT; // [1] result is 00011000 (base 2) (tested with printf)
var2 = var2 << SHIFT;
var2 = var2 >> SHIFT; // [2] result is 00001000 (base 2) (tested with printf)