summaryrefslogtreecommitdiffstats
path: root/lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@intel.com>2018-07-11 22:35:28 +0000
committerCraig Topper <craig.topper@intel.com>2018-07-11 22:35:28 +0000
commited6acde8cf2f764fce5df495d5f2a24bc08a3e80 (patch)
tree6ecfd4f8a97bb039321735a45765faff916a0afd /lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp
parente18c2d2ce3b967b0bd495d2840cb640b95c80896 (diff)
downloadbcm5719-llvm-ed6acde8cf2f764fce5df495d5f2a24bc08a3e80.tar.gz
bcm5719-llvm-ed6acde8cf2f764fce5df495d5f2a24bc08a3e80.zip
[LoopIdiomRecognize] Don't convert a do while loop to ctlz.
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
Diffstat (limited to 'lldb/source/Plugins/Process/Windows/Common/ProcessWindows.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud