diff options
author | Ramkumar Ramachandra <ramkumar.ramachandra@codasip.com> | 2025-06-03 17:12:24 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-06-03 17:12:24 +0100 |
commit | b40e4ceaa61c5f14ca261e2952e7f85a066403e2 (patch) | |
tree | 22a01d10255678e3a57fae6fc962c3325bbebd00 /llvm/unittests/Analysis/ValueTrackingTest.cpp | |
parent | cb4a407e5c2a8a5972781d2a3be362f437602fae (diff) | |
download | llvm-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.cpp | 91 |
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); |