[llvm] 4a3e006 - [LVI] Use range metadata on intrinsics
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Apr 2 07:46:31 PDT 2021
Author: Nikita Popov
Date: 2021-04-02T16:45:31+02:00
New Revision: 4a3e006830aaaf094f3a8ea0a3780a5e1b6f3ecc
URL: https://github.com/llvm/llvm-project/commit/4a3e006830aaaf094f3a8ea0a3780a5e1b6f3ecc
DIFF: https://github.com/llvm/llvm-project/commit/4a3e006830aaaf094f3a8ea0a3780a5e1b6f3ecc.diff
LOG: [LVI] Use range metadata on intrinsics
If we don't know how to handle an intrinsic, we should still
make use of normal call range metadata.
Added:
Modified:
llvm/lib/Analysis/LazyValueInfo.cpp
llvm/test/Transforms/CorrelatedValuePropagation/range.ll
Removed:
################################################################################
diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp
index 8d807c3331ea..c1a8d3d25bf5 100644
--- a/llvm/lib/Analysis/LazyValueInfo.cpp
+++ b/llvm/lib/Analysis/LazyValueInfo.cpp
@@ -1000,8 +1000,8 @@ Optional<ValueLatticeElement> LazyValueInfoImpl::solveBlockValueIntrinsic(
IntrinsicInst *II, BasicBlock *BB) {
if (!ConstantRange::isIntrinsicSupported(II->getIntrinsicID())) {
LLVM_DEBUG(dbgs() << " compute BB '" << BB->getName()
- << "' - overdefined (unknown intrinsic).\n");
- return ValueLatticeElement::getOverdefined();
+ << "' - unknown intrinsic.\n");
+ return getFromRangeMetadata(II);
}
SmallVector<ConstantRange, 2> OpRanges;
diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/range.ll b/llvm/test/Transforms/CorrelatedValuePropagation/range.ll
index 356c4b890420..89bcf9fd15f5 100644
--- a/llvm/test/Transforms/CorrelatedValuePropagation/range.ll
+++ b/llvm/test/Transforms/CorrelatedValuePropagation/range.ll
@@ -938,8 +938,7 @@ define i1 @intrinsic_range(i16 %x) {
; CHECK-LABEL: @intrinsic_range(
; CHECK-NEXT: [[CTLZ:%.*]] = call i16 @llvm.ctlz.i16(i16 [[X:%.*]], i1 false), !range [[RNG5:![0-9]+]]
; CHECK-NEXT: [[TRUNC:%.*]] = trunc i16 [[CTLZ]] to i8
-; CHECK-NEXT: [[RES:%.*]] = icmp ult i8 [[TRUNC]], 8
-; CHECK-NEXT: ret i1 [[RES]]
+; CHECK-NEXT: ret i1 true
;
%ctlz = call i16 @llvm.ctlz.i16(i16 %x, i1 false), !range !{i16 0, i16 8}
%trunc = trunc i16 %ctlz to i8
More information about the llvm-commits
mailing list