[LLVMbugs] [Bug 3583] New: Correctness bug in commit r64314, trunk/lib/CodeGen/ SelectionDAG/TargetLowering.cpp
bugzilla-daemon at cs.uiuc.edu
bugzilla-daemon at cs.uiuc.edu
Sat Feb 14 02:37:24 PST 2009
http://llvm.org/bugs/show_bug.cgi?id=3583
Summary: Correctness bug in commit r64314,
trunk/lib/CodeGen/SelectionDAG/TargetLowering.cpp
Product: new-bugs
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: new bugs
AssignedTo: unassignedbugs at nondot.org
ReportedBy: steinke-dirk at web.de
CC: llvmbugs at cs.uiuc.edu
In
bool ValueHasExactlyOneBitSet(SDValue Val, const SelectionDAG &DAG)
it is no longer safe to shortcut by
if (Val.getOpcode() == ISD::SHL || Val.getOpcode() == ISD::SRL)
return ValueHasExactlyOneBitSet(Val.getOperand(0), DAG);
Either the shortcut is dropped completely, or it has to be checked that the
shift-amount is not big enough to shift out the single 1-bit from the first
operand.
E.g. 0x8000 >> (y&15) has still exactly one bit set, although we don't know
exactly which one is.
But we know the first operands 1-bit position is 15, and the upper limit of the
shift amount is 15.
A more tricky case would be
(0x8000 >> (y&14)) >> (z&1)
This is still safe, because the 1-bit position of the first operand is between
1 and 15, and the upper limit of the shift amount is 1.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list