forked from OSchip/llvm-project
ed6acde8cf
This commit suppresses turning loops like this into "(bitwidth - ctlz(input))". unsigned foo(unsigned input) { unsigned num = 0; do { ++num; input >>= 1; } while (input != 0); return num; } The loop version returns a value of 1 for both an input of 0 and an input of 1. Converting to a naive ctlz does not preserve that. Theoretically we could do better if we checked isKnownNonZero or we could insert a select to handle the divergence. But until we have motivating cases for that, this is the easiest solution. llvm-svn: 336864 |
||
---|---|---|
.. | ||
ctlz.ll | ||
lit.local.cfg | ||
popcnt.ll | ||
unordered-atomic-memcpy.ll |