aboutsummaryrefslogtreecommitdiff
path: root/llvm/unittests/Analysis/ValueTrackingTest.cpp
diff options
context:
space:
mode:
authorRamkumar Ramachandra <ramkumar.ramachandra@codasip.com>2025-06-03 17:12:24 +0100
committerGitHub <noreply@github.com>2025-06-03 17:12:24 +0100
commitb40e4ceaa61c5f14ca261e2952e7f85a066403e2 (patch)
tree22a01d10255678e3a57fae6fc962c3325bbebd00 /llvm/unittests/Analysis/ValueTrackingTest.cpp
parentcb4a407e5c2a8a5972781d2a3be362f437602fae (diff)
downloadllvm-b40e4ceaa61c5f14ca261e2952e7f85a066403e2.zip
llvm-b40e4ceaa61c5f14ca261e2952e7f85a066403e2.tar.gz
llvm-b40e4ceaa61c5f14ca261e2952e7f85a066403e2.tar.bz2
[ValueTracking] Make Depth last default arg (NFC) (#142384)
Having a finite Depth (or recursion limit) for computeKnownBits is very limiting, but is currently a load-bearing necessity, as all KnownBits are recomputed on each call and there is no caching. As a prerequisite for an effort to remove the recursion limit altogether, either using a clever caching technique, or writing a easily-invalidable KnownBits analysis, make the Depth argument in APIs in ValueTracking uniformly the last argument with a default value. This would aid in removing the argument when the time comes, as many callers that currently pass 0 explicitly are now updated to omit the argument altogether.
Diffstat (limited to 'llvm/unittests/Analysis/ValueTrackingTest.cpp')
-rw-r--r--llvm/unittests/Analysis/ValueTrackingTest.cpp91
1 files changed, 44 insertions, 47 deletions
diff --git a/llvm/unittests/Analysis/ValueTrackingTest.cpp b/llvm/unittests/Analysis/ValueTrackingTest.cpp
index 8343afd..e23005b 100644
--- a/llvm/unittests/Analysis/ValueTrackingTest.cpp
+++ b/llvm/unittests/Analysis/ValueTrackingTest.cpp
@@ -2015,27 +2015,27 @@ TEST_F(ComputeKnownFPClassTest, SqrtNszSignBit) {
{
KnownFPClass UseInstrInfo =
- computeKnownFPClass(A, M->getDataLayout(), fcAllFlags, 0, nullptr,
- nullptr, nullptr, nullptr, /*UseInstrInfo=*/true);
+ computeKnownFPClass(A, M->getDataLayout(), fcAllFlags, nullptr, nullptr,
+ nullptr, nullptr, /*UseInstrInfo=*/true);
EXPECT_EQ(SqrtMask, UseInstrInfo.KnownFPClasses);
EXPECT_EQ(std::nullopt, UseInstrInfo.SignBit);
KnownFPClass NoUseInstrInfo =
- computeKnownFPClass(A, M->getDataLayout(), fcAllFlags, 0, nullptr,
- nullptr, nullptr, nullptr, /*UseInstrInfo=*/false);
+ computeKnownFPClass(A, M->getDataLayout(), fcAllFlags, nullptr, nullptr,
+ nullptr, nullptr, /*UseInstrInfo=*/false);
EXPECT_EQ(SqrtMask, NoUseInstrInfo.KnownFPClasses);
EXPECT_EQ(std::nullopt, NoUseInstrInfo.SignBit);
}
{
KnownFPClass UseInstrInfoNSZ =
- computeKnownFPClass(A2, M->getDataLayout(), fcAllFlags, 0, nullptr,
+ computeKnownFPClass(A2, M->getDataLayout(), fcAllFlags, nullptr,
nullptr, nullptr, nullptr, /*UseInstrInfo=*/true);
EXPECT_EQ(NszSqrtMask, UseInstrInfoNSZ.KnownFPClasses);
EXPECT_EQ(std::nullopt, UseInstrInfoNSZ.SignBit);
KnownFPClass NoUseInstrInfoNSZ =
- computeKnownFPClass(A2, M->getDataLayout(), fcAllFlags, 0, nullptr,
+ computeKnownFPClass(A2, M->getDataLayout(), fcAllFlags, nullptr,
nullptr, nullptr, nullptr, /*UseInstrInfo=*/false);
EXPECT_EQ(SqrtMask, NoUseInstrInfoNSZ.KnownFPClasses);
EXPECT_EQ(std::nullopt, NoUseInstrInfoNSZ.SignBit);
@@ -2043,14 +2043,14 @@ TEST_F(ComputeKnownFPClassTest, SqrtNszSignBit) {
{
KnownFPClass UseInstrInfoNoNan =
- computeKnownFPClass(A3, M->getDataLayout(), fcAllFlags, 0, nullptr,
+ computeKnownFPClass(A3, M->getDataLayout(), fcAllFlags, nullptr,
nullptr, nullptr, nullptr, /*UseInstrInfo=*/true);
EXPECT_EQ(fcPositive | fcNegZero | fcQNan,
UseInstrInfoNoNan.KnownFPClasses);
EXPECT_EQ(std::nullopt, UseInstrInfoNoNan.SignBit);
KnownFPClass NoUseInstrInfoNoNan =
- computeKnownFPClass(A3, M->getDataLayout(), fcAllFlags, 0, nullptr,
+ computeKnownFPClass(A3, M->getDataLayout(), fcAllFlags, nullptr,
nullptr, nullptr, nullptr, /*UseInstrInfo=*/false);
EXPECT_EQ(fcPositive | fcNegZero | fcQNan,
NoUseInstrInfoNoNan.KnownFPClasses);
@@ -2059,13 +2059,13 @@ TEST_F(ComputeKnownFPClassTest, SqrtNszSignBit) {
{
KnownFPClass UseInstrInfoNSZNoNan =
- computeKnownFPClass(A4, M->getDataLayout(), fcAllFlags, 0, nullptr,
+ computeKnownFPClass(A4, M->getDataLayout(), fcAllFlags, nullptr,
nullptr, nullptr, nullptr, /*UseInstrInfo=*/true);
EXPECT_EQ(fcPositive | fcQNan, UseInstrInfoNSZNoNan.KnownFPClasses);
EXPECT_EQ(std::nullopt, UseInstrInfoNSZNoNan.SignBit);
KnownFPClass NoUseInstrInfoNSZNoNan =
- computeKnownFPClass(A4, M->getDataLayout(), fcAllFlags, 0, nullptr,
+ computeKnownFPClass(A4, M->getDataLayout(), fcAllFlags, nullptr,
nullptr, nullptr, nullptr, /*UseInstrInfo=*/false);
EXPECT_EQ(fcPositive | fcNegZero | fcQNan,
NoUseInstrInfoNSZNoNan.KnownFPClasses);
@@ -2085,8 +2085,7 @@ TEST_F(ComputeKnownFPClassTest, Constants) {
{
KnownFPClass ConstAggZero = computeKnownFPClass(
- ConstantAggregateZero::get(V4F32), M->getDataLayout(), fcAllFlags, 0,
- nullptr, nullptr, nullptr, nullptr);
+ ConstantAggregateZero::get(V4F32), M->getDataLayout(), fcAllFlags);
EXPECT_EQ(fcPosZero, ConstAggZero.KnownFPClasses);
ASSERT_TRUE(ConstAggZero.SignBit);
@@ -2094,17 +2093,15 @@ TEST_F(ComputeKnownFPClassTest, Constants) {
}
{
- KnownFPClass Undef =
- computeKnownFPClass(UndefValue::get(F32), M->getDataLayout(),
- fcAllFlags, 0, nullptr, nullptr, nullptr, nullptr);
+ KnownFPClass Undef = computeKnownFPClass(UndefValue::get(F32),
+ M->getDataLayout(), fcAllFlags);
EXPECT_EQ(fcAllFlags, Undef.KnownFPClasses);
EXPECT_FALSE(Undef.SignBit);
}
{
- KnownFPClass Poison =
- computeKnownFPClass(PoisonValue::get(F32), M->getDataLayout(),
- fcAllFlags, 0, nullptr, nullptr, nullptr, nullptr);
+ KnownFPClass Poison = computeKnownFPClass(PoisonValue::get(F32),
+ M->getDataLayout(), fcAllFlags);
EXPECT_EQ(fcNone, Poison.KnownFPClasses);
ASSERT_TRUE(Poison.SignBit);
EXPECT_FALSE(*Poison.SignBit);
@@ -2115,9 +2112,9 @@ TEST_F(ComputeKnownFPClassTest, Constants) {
Constant *ZeroF32 = ConstantFP::getZero(F32);
Constant *PoisonF32 = PoisonValue::get(F32);
- KnownFPClass PartiallyPoison = computeKnownFPClass(
- ConstantVector::get({ZeroF32, PoisonF32}), M->getDataLayout(),
- fcAllFlags, 0, nullptr, nullptr, nullptr, nullptr);
+ KnownFPClass PartiallyPoison =
+ computeKnownFPClass(ConstantVector::get({ZeroF32, PoisonF32}),
+ M->getDataLayout(), fcAllFlags);
EXPECT_EQ(fcPosZero, PartiallyPoison.KnownFPClasses);
ASSERT_TRUE(PartiallyPoison.SignBit);
EXPECT_FALSE(*PartiallyPoison.SignBit);
@@ -2128,9 +2125,9 @@ TEST_F(ComputeKnownFPClassTest, Constants) {
Constant *NegZeroF32 = ConstantFP::getZero(F32, true);
Constant *PoisonF32 = PoisonValue::get(F32);
- KnownFPClass PartiallyPoison = computeKnownFPClass(
- ConstantVector::get({NegZeroF32, PoisonF32}), M->getDataLayout(),
- fcAllFlags, 0, nullptr, nullptr, nullptr, nullptr);
+ KnownFPClass PartiallyPoison =
+ computeKnownFPClass(ConstantVector::get({NegZeroF32, PoisonF32}),
+ M->getDataLayout(), fcAllFlags);
EXPECT_EQ(fcNegZero, PartiallyPoison.KnownFPClasses);
ASSERT_TRUE(PartiallyPoison.SignBit);
EXPECT_TRUE(*PartiallyPoison.SignBit);
@@ -2141,9 +2138,9 @@ TEST_F(ComputeKnownFPClassTest, Constants) {
Constant *NegZeroF32 = ConstantFP::getZero(F32, true);
Constant *PoisonF32 = PoisonValue::get(F32);
- KnownFPClass PartiallyPoison = computeKnownFPClass(
- ConstantVector::get({PoisonF32, NegZeroF32}), M->getDataLayout(),
- fcAllFlags, 0, nullptr, nullptr, nullptr, nullptr);
+ KnownFPClass PartiallyPoison =
+ computeKnownFPClass(ConstantVector::get({PoisonF32, NegZeroF32}),
+ M->getDataLayout(), fcAllFlags);
EXPECT_EQ(fcNegZero, PartiallyPoison.KnownFPClasses);
EXPECT_TRUE(PartiallyPoison.SignBit);
}
@@ -2453,8 +2450,8 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsPtrToIntTrunc) {
"}\n"
"declare void @llvm.assume(i1)\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(
- A, M->getDataLayout(), /* Depth */ 0, &AC, F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_TRUE(Known.isUnknown());
}
@@ -2471,8 +2468,8 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsPtrToIntZext) {
"}\n"
"declare void @llvm.assume(i1)\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(
- A, M->getDataLayout(), /* Depth */ 0, &AC, F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_TRUE(Known.isUnknown());
}
@@ -2488,8 +2485,8 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsFreeze) {
"declare void @llvm.assume(i1)\n"
"declare i32 @any_num()\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(A, M->getDataLayout(), /* Depth */ 0, &AC,
- F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), 31u);
EXPECT_EQ(Known.One.getZExtValue(), 0u);
}
@@ -2518,12 +2515,12 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsAddWithRange) {
"}\n"
"declare void @llvm.assume(i1)\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(A, M->getDataLayout(), /* Depth */ 0, &AC,
- F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), ~(65536llu - 1));
EXPECT_EQ(Known.One.getZExtValue(), 0u);
Instruction &APlus512 = findInstructionByName(F, "APlus512");
- Known = computeKnownBits(&APlus512, M->getDataLayout(), /* Depth */ 0, &AC,
+ Known = computeKnownBits(&APlus512, M->getDataLayout(), &AC,
F->front().getTerminator());
// We know of one less zero because 512 may have produced a 1 that
// got carried all the way to the first trailing zero.
@@ -2542,7 +2539,7 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsUnknownVScale) {
{Builder.getInt32Ty()});
CallInst *CI = Builder.CreateCall(TheFn, {}, {}, "");
- KnownBits Known = computeKnownBits(CI, M.getDataLayout(), /* Depth */ 0);
+ KnownBits Known = computeKnownBits(CI, M.getDataLayout());
// There is no parent function so we cannot look up the vscale_range
// attribute to determine the number of bits.
EXPECT_EQ(Known.One.getZExtValue(), 0u);
@@ -2550,7 +2547,7 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsUnknownVScale) {
BasicBlock *BB = BasicBlock::Create(Context);
CI->insertInto(BB, BB->end());
- Known = computeKnownBits(CI, M.getDataLayout(), /* Depth */ 0);
+ Known = computeKnownBits(CI, M.getDataLayout());
// There is no parent function so we cannot look up the vscale_range
// attribute to determine the number of bits.
EXPECT_EQ(Known.One.getZExtValue(), 0u);
@@ -2573,12 +2570,12 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsAddWithRangeNoOverlap) {
"}\n"
"declare void @llvm.assume(i1)\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(A, M->getDataLayout(), /* Depth */ 0, &AC,
- F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), ~(64llu - 1));
EXPECT_EQ(Known.One.getZExtValue(), 32u);
Instruction &APlus512 = findInstructionByName(F, "APlus512");
- Known = computeKnownBits(&APlus512, M->getDataLayout(), /* Depth */ 0, &AC,
+ Known = computeKnownBits(&APlus512, M->getDataLayout(), &AC,
F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), ~512llu & ~(64llu - 1));
EXPECT_EQ(Known.One.getZExtValue(), 512u | 32u);
@@ -2600,12 +2597,12 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsGEPWithRange) {
"}\n"
"declare void @llvm.assume(i1)\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(A, M->getDataLayout(), /* Depth */ 0, &AC,
- F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), ~(65536llu - 1));
EXPECT_EQ(Known.One.getZExtValue(), 0u);
Instruction &APtrPlus512 = findInstructionByName(F, "APtrPlus512");
- Known = computeKnownBits(&APtrPlus512, M->getDataLayout(), /* Depth */ 0, &AC,
+ Known = computeKnownBits(&APtrPlus512, M->getDataLayout(), &AC,
F->front().getTerminator());
// We know of one less zero because 512 may have produced a 1 that
// got carried all the way to the first trailing zero.
@@ -2633,12 +2630,12 @@ TEST_F(ComputeKnownBitsTest, ComputeKnownBitsGEPWithRangeNoOverlap) {
"}\n"
"declare void @llvm.assume(i1)\n");
AssumptionCache AC(*F);
- KnownBits Known = computeKnownBits(A, M->getDataLayout(), /* Depth */ 0, &AC,
- F->front().getTerminator());
+ KnownBits Known =
+ computeKnownBits(A, M->getDataLayout(), &AC, F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), ~(64llu - 1));
EXPECT_EQ(Known.One.getZExtValue(), 32u);
Instruction &APtrPlus512 = findInstructionByName(F, "APtrPlus512");
- Known = computeKnownBits(&APtrPlus512, M->getDataLayout(), /* Depth */ 0, &AC,
+ Known = computeKnownBits(&APtrPlus512, M->getDataLayout(), &AC,
F->front().getTerminator());
EXPECT_EQ(Known.Zero.getZExtValue(), ~512llu & ~(64llu - 1));
EXPECT_EQ(Known.One.getZExtValue(), 512u | 32u);