Make ComputeDemandedBits return a deterministic result when computing an AssertZext value.

In the added testcase the constant 55 was behind an AssertZext of type i1, and ComputeDemandedBits
reported that some of the bits were both known to be one and known to be zero.

Together with Michael Kuperstein <michael.m.kuperstein@intel.com>

llvm-svn: 160305
This commit is contained in:
Nadav Rotem 2012-07-16 18:34:53 +00:00
parent f2bc464f37
commit 839a06e9d7
2 changed files with 13 additions and 0 deletions

View File

@ -1965,6 +1965,7 @@ void SelectionDAG::ComputeMaskedBits(SDValue Op, APInt &KnownZero,
APInt InMask = APInt::getLowBitsSet(BitWidth, VT.getSizeInBits());
ComputeMaskedBits(Op.getOperand(0), KnownZero, KnownOne, Depth+1);
KnownZero |= (~InMask);
KnownOne &= (~KnownZero);
return;
}
case ISD::FGETSIGN:

View File

@ -0,0 +1,12 @@
; RUN: llc < %s -march=x86-64 -mcpu=corei7
define void @autogen_SD3100() {
BB:
%FC123 = fptoui float 0x40693F5D00000000 to i1
br i1 %FC123, label %V, label %W
V:
ret void
W:
ret void
}