Commit 6e0ce50ded for perl

commit 6e0ce50dedd46ef6426e73d9e609b2c53427775d
Author: Yves Orton <demerphq@gmail.com>
Date:   Tue Oct 27 21:38:07 2026 +0100

    regcomp: name TRIE literal type field

    Use TRIE_LITERAL_TYPE for the literal opcode stored in trie and
    Aho–Corasick nodes. Compilation, debugging, and execution now identify
    the field directly while preserving the existing trie encoding and
    matching behavior.

diff --git a/regcomp.h b/regcomp.h
index 3d070a0d92..fac66c7fbc 100644
--- a/regcomp.h
+++ b/regcomp.h
@@ -698,6 +698,14 @@ struct regnode_ssc {
     FLAGS(p) = (val);                                                         \
 } STMT_END

+#define TRIE_LITERAL_TYPE(p)                                                  \
+    (assert(REGNODE_TYPE(OP(p)) == TRIE || OP(p) == AHOCORASICK),             \
+        PREVENT_LVALUE(FLAGS(p)))
+#define TRIE_LITERAL_TYPE_SET(p, val) STMT_START {                            \
+    assert(REGNODE_TYPE(OP(p)) == TRIE || OP(p) == AHOCORASICK);              \
+    FLAGS(p) = (val);                                                         \
+} STMT_END
+
 #define POSIX_CLASS(p)                                                        \
     (assert(REGNODE_TYPE(OP(p)) == POSIXD || REGNODE_TYPE(OP(p)) ==           \
         NPOSIXD), PREVENT_LVALUE(FLAGS(p)))
diff --git a/regcomp_debug.c b/regcomp_debug.c
index bd85eb8952..6a6f26dafc 100644
--- a/regcomp_debug.c
+++ b/regcomp_debug.c
@@ -601,7 +601,7 @@ Perl_regprop(pTHX_ const regexp *prog, SV *sv, const regnode *o, const regmatch_
         const reg_trie_data * const trie
             = (reg_trie_data*)progi->data->data[!IS_TRIE_AC(op) ? n : ac->trie];

-        sv_catpvf(sv, "-%s", REGNODE_NAME(FLAGS(o)));
+        sv_catpvf(sv, "-%s", REGNODE_NAME(TRIE_LITERAL_TYPE(o)));
         DEBUG_TRIE_COMPILE_r({
           if (trie->jump)
             sv_catpvs(sv, "(JUMP)");
diff --git a/regcomp_trie.c b/regcomp_trie.c
index dd5efcc391..7670902c93 100644
--- a/regcomp_trie.c
+++ b/regcomp_trie.c
@@ -1680,7 +1680,7 @@ Perl_make_trie(pTHX_ RExC_state_t *pRExC_state, regnode *startbranch,
             }

             /* store the type in the flags */
-            FLAGS(convert) = nodetype;
+            TRIE_LITERAL_TYPE_SET(convert, nodetype);
             DEBUG_r({
             optimize = convert
                       + NODE_STEP_REGNODE
@@ -1957,7 +1957,7 @@ Perl_construct_ahocorasick_from_trie(pTHX_ RExC_state_t *pRExC_state, regnode *s
         tregnode_AHOCORASICK *op = (tregnode_AHOCORASICK *)
             PerlMemShared_calloc(1, sizeof(tregnode_AHOCORASICK));
         OP(op) = AHOCORASICK;
-        FLAGS(op) = FLAGS(source);
+        TRIE_LITERAL_TYPE_SET(op, TRIE_LITERAL_TYPE(source));
         stclass = (regnode *)op;
     }

diff --git a/regexec.c b/regexec.c
index 172a4971ae..981776ad3b 100644
--- a/regexec.c
+++ b/regexec.c
@@ -1888,15 +1888,16 @@ Perl_re_intuit_start(pTHX_
                  trie_latin_utf8_fold, trie_utf8_exactfa_fold,              \
                  trie_latin_utf8_exactfa_fold,                              \
                  trie_flu8, trie_flu8_latin }                               \
-                    trie_type = ((IS_EXACT_OR_NF(FLAGS(scan))              \
-                                  || IS_EXACT_REQ8_OR_NF_REQ8(FLAGS(scan)) \
-                                  || FLAGS(scan) == EXACTL)                \
+                    trie_type = ((IS_EXACT_OR_NF(TRIE_LITERAL_TYPE(scan))  \
+                                  || IS_EXACT_REQ8_OR_NF_REQ8(              \
+                                         TRIE_LITERAL_TYPE(scan))          \
+                                  || TRIE_LITERAL_TYPE(scan) == EXACTL)    \
                                  ? trie_plain                              \
-                                    : (FLAGS(scan) == EXACTFAA)             \
+                                    : (TRIE_LITERAL_TYPE(scan) == EXACTFAA) \
                                       ? (utf8_target                        \
                                          ? trie_utf8_exactfa_fold           \
                                          : trie_latin_utf8_exactfa_fold)    \
-                                      : (FLAGS(scan) == EXACTFLU8           \
+                                      : (TRIE_LITERAL_TYPE(scan) == EXACTFLU8 \
                                          ? (utf8_target                     \
                                            ? trie_flu8                      \
                                            : trie_flu8_latin)               \
@@ -7436,12 +7437,14 @@ S_regmatch(pTHX_ regmatch_info *reginfo, char *startpos, regnode *prog)

                 U32 state = trie->startstate;

-                if (FLAGS(scan) == EXACTL || FLAGS(scan) == EXACTFLU8) {
+                if (   TRIE_LITERAL_TYPE(scan) == EXACTL
+                    || TRIE_LITERAL_TYPE(scan) == EXACTFLU8)
+                {
                     CHECK_AND_WARN_PROBLEMATIC_LOCALE_;
                     if (utf8_target
                         && ! NEXTCHR_IS_EOS
                         && UTF8_IS_ABOVE_LATIN1(nextbyte)
-                        && FLAGS(scan) == EXACTL)
+                        && TRIE_LITERAL_TYPE(scan) == EXACTL)
                     {
                         /* We only output for EXACTL, as we let the folder
                          * output this message for EXACTFLU8 to avoid