From 88ba4ba8275ce5da4b9c40da0995f941cedcd410 Mon Sep 17 00:00:00 2001 From: Richard-Qin-X Date: Sat, 29 Aug 2026 00:20:33 +0800 Subject: [TableGen] Preserve optional target description values --- backend/lib/TableGen/Parser.cpp | 10 +++++----- backend/utils/TableGen/Common/CodeGenSelection.cpp | 9 +++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/backend/lib/TableGen/Parser.cpp b/backend/lib/TableGen/Parser.cpp index a4e2dfe..1044309 100644 --- a/backend/lib/TableGen/Parser.cpp +++ b/backend/lib/TableGen/Parser.cpp @@ -1517,12 +1517,12 @@ private: "selection operand renderer captured immediate"); if (!Index) return false; - Renderer.CapturedImmediateOperand = *Index; + Renderer.CapturedImmediateOperand = Index; } else { const auto Value = signedInteger(*ImmediateNode, "selection operand renderer immediate"); if (!Value) return false; - Renderer.Immediate = *Value; + Renderer.Immediate = Value; } if (const yaml::Node *TransformNode = optionalNode(*Element, "transform")) { const auto Transform = scalar(*TransformNode, "selection operand renderer transform"); @@ -2057,7 +2057,7 @@ private: const auto Value = unsignedInteger32(*Commutable, "macro fusion commutable second use"); if (!Value) return false; - Result.CommutableSecondUseOperand = *Value; + Result.CommutableSecondUseOperand = Value; } return true; } @@ -2134,7 +2134,7 @@ private: const auto Source = unsignedInteger32(*SourceNode, "MC pseudo source operand"); if (!Source) return false; - Operand.SourceOperandIndex = *Source; + Operand.SourceOperandIndex = Source; } if (const yaml::Node *RegisterNode = optionalNode(*Element, "register")) { const auto Register = scalar(*RegisterNode, "MC pseudo fixed register"); @@ -2146,7 +2146,7 @@ private: const auto Immediate = signedInteger(*ImmediateNode, "MC pseudo fixed immediate"); if (!Immediate) return false; - Operand.Immediate = *Immediate; + Operand.Immediate = Immediate; } Result.push_back(std::move(Operand)); } diff --git a/backend/utils/TableGen/Common/CodeGenSelection.cpp b/backend/utils/TableGen/Common/CodeGenSelection.cpp index 077a95f..b17d176 100644 --- a/backend/utils/TableGen/Common/CodeGenSelection.cpp +++ b/backend/utils/TableGen/Common/CodeGenSelection.cpp @@ -497,7 +497,7 @@ bool CodeGenTarget::normalizeSelectionRules(NormalizedTargetModel &Result) { "selection temporary type source must be a matched register operand"); return false; } - NormalizedTemporary.TypeFromOperand = *Temporary.TypeFromOperand; + NormalizedTemporary.TypeFromOperand = Temporary.TypeFromOperand; } else { auto Type = NormalizeType(*Temporary.Type); if (!Type || Type->Kind != NormalizedSelectionTypeKind::Scalar) { @@ -506,7 +506,7 @@ bool CodeGenTarget::normalizeSelectionRules(NormalizedTargetModel &Result) { } NormalizedTemporary.Type = *Type; } - Normalized.Temporaries.push_back(std::move(NormalizedTemporary)); + Normalized.Temporaries.push_back(NormalizedTemporary); } bool HasRootAction = false; @@ -763,7 +763,8 @@ bool CodeGenTarget::normalizeCombinerRules(NormalizedTargetModel &Result) { {"nsw", MachineInstrFlag::NoSignedWrap}, {"nuw", MachineInstrFlag::NoUnsignedWrap}, }}; - const auto Position = std::ranges::find(Flags, Name, &decltype(Flags)::value_type::first); + const auto *const Position = + std::ranges::find(Flags, Name, &decltype(Flags)::value_type::first); if (Position == Flags.end()) return std::nullopt; return std::uint32_t{1} << static_cast(Position->second); @@ -777,7 +778,7 @@ bool CodeGenTarget::normalizeCombinerRules(NormalizedTargetModel &Result) { return std::nullopt; Mask |= *Value; } - if (Names.size() != 0 && Mask == 0) + if (!Names.empty() && Mask == 0) return std::nullopt; (void)Range; return Mask; -- cgit v1.2.3