[llvm] [SDPatternMatch][NFC] Use empty SDNodeFlags instead of std::optional (PR #178483)

Min-Yih Hsu via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 28 10:57:55 PST 2026


https://github.com/mshockwave created https://github.com/llvm/llvm-project/pull/178483

I think we can avoid using std::optional for SDNodeFlags in UnaryOpc_match.

NFC.

>From 0fa26ef6c7a81467c513ad3acd066e64513ac4d1 Mon Sep 17 00:00:00 2001
From: Min-Yih Hsu <min.hsu at sifive.com>
Date: Wed, 28 Jan 2026 10:55:12 -0800
Subject: [PATCH] [SDPatternMatch][NFC] Use empty SDFlags instead of
 std::optional

---
 llvm/include/llvm/CodeGen/SDPatternMatch.h | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/llvm/include/llvm/CodeGen/SDPatternMatch.h b/llvm/include/llvm/CodeGen/SDPatternMatch.h
index ba8471ab4f947..04f73c6a9a36b 100644
--- a/llvm/include/llvm/CodeGen/SDPatternMatch.h
+++ b/llvm/include/llvm/CodeGen/SDPatternMatch.h
@@ -992,9 +992,9 @@ inline BinaryOpc_match<LHS, RHS> m_ExtractSubvector(const LHS &Vec,
 template <typename Opnd_P, bool ExcludeChain = false> struct UnaryOpc_match {
   unsigned Opcode;
   Opnd_P Opnd;
-  std::optional<SDNodeFlags> Flags;
+  SDNodeFlags Flags;
   UnaryOpc_match(unsigned Opc, const Opnd_P &Op,
-                 std::optional<SDNodeFlags> Flgs = std::nullopt)
+                 SDNodeFlags Flgs = SDNodeFlags())
       : Opcode(Opc), Opnd(Op), Flags(Flgs) {}
 
   template <typename MatchContext>
@@ -1004,10 +1004,8 @@ template <typename Opnd_P, bool ExcludeChain = false> struct UnaryOpc_match {
       assert(EO.Size == 1);
       if (!Opnd.match(Ctx, N->getOperand(EO.FirstIndex)))
         return false;
-      if (!Flags.has_value())
-        return true;
 
-      return (*Flags & N->getFlags()) == *Flags;
+      return (Flags & N->getFlags()) == Flags;
     }
 
     return false;



More information about the llvm-commits mailing list