[SDAG] fix bug in ComputeNumSignBits of target constant
authorSanjay Patel <spatel@rotateright.com>
Wed, 26 Jan 2022 14:59:51 +0000 (09:59 -0500)
committerSanjay Patel <spatel@rotateright.com>
Wed, 26 Jan 2022 15:22:41 +0000 (10:22 -0500)
commit63daea8b35cdb48d6061dc8ad72e5445b808dbce
tree891d4b4e7e8fec3a7bb9b03541c6d562cd56ff8e
parentd70d9977999b8a08fe5635fb2c58588e6ffb7997
[SDAG] fix bug in ComputeNumSignBits of target constant

The loop below the changed line assumes that the element
width of the target constant is the same as the element
width of the loaded value, but that is not always true.

We could try harder to do some kind of min/max calc even
if the sizes don't match, but that can be another patch
if needed. This fixes #53401 (miscompile) and does not
change the motivating cases added when this analysis
was introduced:
ad298f86b7ad2a
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/test/CodeGen/X86/vselect-constants.ll