From eaba06cffad032ee1a7076c468fd0ff70b95f6d9 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Fri, 6 Jan 2017 00:11:46 +0000 Subject: [SelectionDAG] Correctly transform range metadata to AssertZExt We used the logBase2 of the high instead of the ceilLogBase2 resulting in the wrong result for certain values. For example, it resulted in an i1 AssertZExt when the exclusive portion of the range was 3. llvm-svn: 291196 --- llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'llvm/lib/CodeGen') diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index cb803585282..e98c851e2c7 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -7344,7 +7344,7 @@ SDValue SelectionDAGBuilder::lowerRangeToAssertZExt(SelectionDAG &DAG, return Op; Constant *Hi = cast(Range->getOperand(1))->getValue(); - unsigned Bits = cast(Hi)->getValue().logBase2(); + unsigned Bits = cast(Hi)->getValue().ceilLogBase2(); EVT SmallVT = EVT::getIntegerVT(*DAG.getContext(), Bits); -- cgit v1.2.3