[llvm] 36a2d7b - [AsmWriter] Combine IsConstant and GetConstant (NFCI) (#129288)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Mar 3 13:04:12 PST 2025
Author: JP Hafer
Date: 2025-03-03T22:04:09+01:00
New Revision: 36a2d7bf1bd91f4c611c60708f8637bff18ecdbc
URL: https://github.com/llvm/llvm-project/commit/36a2d7bf1bd91f4c611c60708f8637bff18ecdbc
DIFF: https://github.com/llvm/llvm-project/commit/36a2d7bf1bd91f4c611c60708f8637bff18ecdbc.diff
LOG: [AsmWriter] Combine IsConstant and GetConstant (NFCI) (#129288)
There was an assert in GetConstant checked if Bound is constant.
However, GetConstant was only called when IsConstant==true.
This refactor attempts to get rid of the assert by combining GetConstant
and IsContstant.
Added:
Modified:
llvm/lib/IR/AsmWriter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/IR/AsmWriter.cpp b/llvm/lib/IR/AsmWriter.cpp
index 238898c3b2e2f..2ff05a78a92bc 100644
--- a/llvm/lib/IR/AsmWriter.cpp
+++ b/llvm/lib/IR/AsmWriter.cpp
@@ -2124,45 +2124,42 @@ static void writeDIGenericSubrange(raw_ostream &Out, const DIGenericSubrange *N,
Out << "!DIGenericSubrange(";
MDFieldPrinter Printer(Out, WriterCtx);
- auto IsConstant = [&](Metadata *Bound) -> bool {
- if (auto *BE = dyn_cast_or_null<DIExpression>(Bound)) {
- return BE->isConstant() &&
- DIExpression::SignedOrUnsignedConstant::SignedConstant ==
- *BE->isConstant();
- }
- return false;
- };
-
- auto GetConstant = [&](Metadata *Bound) -> int64_t {
- assert(IsConstant(Bound) && "Expected constant");
+ auto GetConstant = [&](Metadata *Bound) -> std::optional<int64_t> {
auto *BE = dyn_cast_or_null<DIExpression>(Bound);
- return static_cast<int64_t>(BE->getElement(1));
+ if (!BE)
+ return std::nullopt;
+ if (BE->isConstant() &&
+ DIExpression::SignedOrUnsignedConstant::SignedConstant ==
+ *BE->isConstant()) {
+ return static_cast<int64_t>(BE->getElement(1));
+ }
+ return std::nullopt;
};
auto *Count = N->getRawCountNode();
- if (IsConstant(Count))
- Printer.printInt("count", GetConstant(Count),
+ if (auto ConstantCount = GetConstant(Count))
+ Printer.printInt("count", *ConstantCount,
/* ShouldSkipZero */ false);
else
Printer.printMetadata("count", Count, /*ShouldSkipNull */ true);
auto *LBound = N->getRawLowerBound();
- if (IsConstant(LBound))
- Printer.printInt("lowerBound", GetConstant(LBound),
+ if (auto ConstantLBound = GetConstant(LBound))
+ Printer.printInt("lowerBound", *ConstantLBound,
/* ShouldSkipZero */ false);
else
Printer.printMetadata("lowerBound", LBound, /*ShouldSkipNull */ true);
auto *UBound = N->getRawUpperBound();
- if (IsConstant(UBound))
- Printer.printInt("upperBound", GetConstant(UBound),
+ if (auto ConstantUBound = GetConstant(UBound))
+ Printer.printInt("upperBound", *ConstantUBound,
/* ShouldSkipZero */ false);
else
Printer.printMetadata("upperBound", UBound, /*ShouldSkipNull */ true);
auto *Stride = N->getRawStride();
- if (IsConstant(Stride))
- Printer.printInt("stride", GetConstant(Stride),
+ if (auto ConstantStride = GetConstant(Stride))
+ Printer.printInt("stride", *ConstantStride,
/* ShouldSkipZero */ false);
else
Printer.printMetadata("stride", Stride, /*ShouldSkipNull */ true);
More information about the llvm-commits
mailing list