This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Merge branch 'autodoc' into blead
authorKarl Williamson <khw@cpan.org>
Fri, 31 May 2019 00:14:00 +0000 (18:14 -0600)
committerKarl Williamson <khw@cpan.org>
Fri, 31 May 2019 00:14:00 +0000 (18:14 -0600)
This branch cleans up a bunch of the autodoc handling.

It had its genesis in an obscure warning from Devel::PPPort:

    mysterious name

It turns out that the pod entry for the macros the warnings are for are
improper.  My guess is that it was a kludge by someone looking for a
quick way to get their usage point across, when the underlying
infrastructure was deficient in allowing it.  But it looked to be fairly
easy to enhance that infrastructure.

But then I noticed that some of the flags in the embed.fnc entries have
different meanings than the equivalent =for apidoc entries in the
source.

Here are most of the conflicts:
Flag embed.fnc =for apidoc
n no pTHX don't output empty parens for no arguments
s S_ static fcn output a semi-colon at the end of the usage entry
x Don't export experimental

I imagine that they started out the same, and diverged over the years,
as there was no unified place where they were documented.  Devel::PPPort
was unaware of this divergence, and so got some things wrong, and had
some code expecting one flag, and other code expecting the other.

This branch changes the flags in embed.fnc to correspond with what
autdoc wants, and brings everything else that uses them into
conformance.  embed.fnc is a more contained place to change, and I
couldn't find anything in CPAN that would be bothered by this.  And
also, if D:P were to be regenerated on an older perl, it still would use
the new embed.fnc shipped with it, but would be using the flags from the
older perl source code, so it had to be embed.fnc that changed.

The O flag in embed.fnc can then be used instead of having another flag
in the =for apidoc entries for the situation of having deprecated
'perl_' prefixes, removing the need for autodoc to have to try to figure
it out, and there were places where it had been getting it wrong.

Once that was done, the flags in embed.fnc could override the ones in
the =for api entries, as every flag has the same meaning in both places.
Doing so showed a bunch of errors, mostly missing 'const's in the
parameters, but, besides the 'perl_' prefix errors, some functions were
not listed as needing to be called with the 'Perl_' prefix.  The flags
in embed.fnc have to be pretty accurate, or perl won't compile.

I then removed about 150 redundant =for apidoc entries.  It is a waste
having them in the code twice, and they do get out of sync.  Note that
there does need to be an entry like

    =for apidoc FOO

for the autodoc facility to know where the actual pod for a given
function is.  And the entry needs to have the flags, return value, and
argument list detailed if and only if FOO isn't in embed.fnc.  I myself
didn't know that if omitted, the values in embed.fnc were used, so I
wasted time in the past duplicating these.  Now, if there's duplication
autodoc will warn.

autodoc did check for a couple of discrepancies if there were two
entries, but that code is now unnecessary and has been ripped out.

I added a flag so that something that isn't a straight name can be
documented, and will rip out the code in D:P that special-cased the few
existing entries that were like this.  Now there is a warning from
autodoc, unless the flag is present, when this happens, so that
'mysterious name' won't show up again.

I added another flag to make it easier to deal with functions that have
become wrappers for others, and there is a macro that bypasses the
original one, but for back compat, we still have the original.

autodoc did not realize that you could have things like
Perl_sprintf_nocontext() without a pTHX.  That flag already is in
embed.fnc, and now autodoc uses it.

Finally, I added extensive comments to embed.fnc to document all the
flags, and removed other outdated comments elsewhere in favor of a
pointer to the comments in embed.fnc

24 files changed:
XSUB.h
autodoc.pl
av.h
cop.h
embed.fnc
embed.h
hv.c
inline.h
makedef.pl
mathoms.c
mg.c
op.c
pad.c
perl.c
perl.h
pod/perlguts.pod
pp.h
proto.h
regen/embed.pl
scope.h
t/porting/diag.t
toke.c
util.c
util.h

diff --git a/XSUB.h b/XSUB.h
index 796a13a..7c0aebd 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -59,28 +59,28 @@ symbols unnecessarily.
 =for apidoc AmU||XS_EXTERNAL
 Macro to declare an XSUB and its C parameter list explicitly exporting the symbols.
 
-=for apidoc Ams||dAX
+=for apidoc Amns||dAX
 Sets up the C<ax> variable.
 This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
 
-=for apidoc Ams||dAXMARK
+=for apidoc Amns||dAXMARK
 Sets up the C<ax> variable and stack marker variable C<mark>.
 This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
 
-=for apidoc Ams||dITEMS
+=for apidoc Amns||dITEMS
 Sets up the C<items> variable.
 This is usually handled automatically by C<xsubpp> by calling C<dXSARGS>.
 
-=for apidoc Ams||dXSARGS
+=for apidoc Amns||dXSARGS
 Sets up stack and mark pointers for an XSUB, calling C<dSP> and C<dMARK>.
 Sets up the C<ax> and C<items> variables by calling C<dAX> and C<dITEMS>.
 This is usually handled automatically by C<xsubpp>.
 
-=for apidoc Ams||dXSI32
+=for apidoc Amns||dXSI32
 Sets up the C<ix> variable for an XSUB which has aliases.  This is usually
 handled automatically by C<xsubpp>.
 
-=for apidoc Ams||dUNDERBAR
+=for apidoc Amns||dUNDERBAR
 Sets up any variable needed by the C<UNDERBAR> macro.  It used to define
 C<padoff_du>, but it is currently a noop.  However, it is strongly advised
 to still use it for ensuring past and future compatibility.
@@ -245,16 +245,16 @@ Return a double from an XSUB immediately.  Uses C<XST_mNV>.
 =for apidoc Am|void|XSRETURN_PV|char* str
 Return a copy of a string from an XSUB immediately.  Uses C<XST_mPV>.
 
-=for apidoc Ams||XSRETURN_NO
+=for apidoc Amns||XSRETURN_NO
 Return C<&PL_sv_no> from an XSUB immediately.  Uses C<XST_mNO>.
 
-=for apidoc Ams||XSRETURN_YES
+=for apidoc Amns||XSRETURN_YES
 Return C<&PL_sv_yes> from an XSUB immediately.  Uses C<XST_mYES>.
 
-=for apidoc Ams||XSRETURN_UNDEF
+=for apidoc Amns||XSRETURN_UNDEF
 Return C<&PL_sv_undef> from an XSUB immediately.  Uses C<XST_mUNDEF>.
 
-=for apidoc Ams||XSRETURN_EMPTY
+=for apidoc Amns||XSRETURN_EMPTY
 Return an empty list from an XSUB immediately.
 
 =head1 Variables created by C<xsubpp> and C<xsubpp> internal functions
@@ -268,18 +268,18 @@ The version identifier for an XS module.  This is usually
 handled automatically by C<ExtUtils::MakeMaker>.  See
 C<L</XS_VERSION_BOOTCHECK>>.
 
-=for apidoc Ams||XS_VERSION_BOOTCHECK
+=for apidoc Amns||XS_VERSION_BOOTCHECK
 Macro to verify that a PM module's C<$VERSION> variable matches the XS
 module's C<XS_VERSION> variable.  This is usually handled automatically by
 C<xsubpp>.  See L<perlxs/"The VERSIONCHECK: Keyword">.
 
-=for apidoc Ams||XS_APIVERSION_BOOTCHECK
+=for apidoc Amns||XS_APIVERSION_BOOTCHECK
 Macro to verify that the perl api version an XS module has been compiled against
 matches the api version of the perl interpreter it's being loaded into.
 
 =head1 Exception Handling (simple) Macros
 
-=for apidoc Ams||dXCPT
+=for apidoc Amns||dXCPT
 Set up necessary local variables for exception handling.
 See L<perlguts/"Exception Handling">.
 
@@ -292,7 +292,7 @@ Ends a try block.  See L<perlguts/"Exception Handling">.
 =for apidoc AmU||XCPT_CATCH
 Introduces a catch block.  See L<perlguts/"Exception Handling">.
 
-=for apidoc Ams||XCPT_RETHROW
+=for apidoc Amns||XCPT_RETHROW
 Rethrows a previously caught exception.  See L<perlguts/"Exception Handling">.
 
 =cut
index 788dc35..421d8de 100644 (file)
@@ -22,6 +22,9 @@
 # indented. The next input line that is a pod directive terminates this 
 # heading-level documentation.
 
+# The meanings of the flags fields in embed.fnc and the source code is
+# documented at the top of embed.fnc.
+
 use strict;
 
 if (@ARGV) {
@@ -104,9 +107,12 @@ HDR_DOC:
             next FUNC;
         }
        if ($in =~ /^=for\s+apidoc\s+(.*?)\s*\n/) {
-           my $proto = $1;
+           my $proto_in_file = $1;
+           my $proto = $proto_in_file;
            $proto = "||$proto" unless $proto =~ /\|/;
-           my($flags, $ret, $name, @args) = split /\|/, $proto;
+           my($flags, $ret, $name, @args) = split /\s*\|\s*/, $proto;
+            warn ("'$name' not \\w+ in '$proto_in_file' in $file")
+                        if $flags !~ /N/ && $name !~ / ^ [_[:alpha:]] \w* $ /x;
            my $docs = "";
 DOC:
            while (defined($doc = $get_next_line->())) {
@@ -122,45 +128,20 @@ DOC:
            }
            $docs = "\n$docs" if $docs and $docs !~ /^\n/;
 
-           # Check the consistency of the flags
-           my ($embed_where, $inline_where);
-           my ($embed_may_change, $inline_may_change);
-
-           my $docref = delete $funcflags{$name};
-           if ($docref and %$docref) {
-               $embed_where = $docref->{flags} =~ /A/ ? 'api' : 'guts';
-               $embed_may_change = $docref->{flags} =~ /M/;
-                $flags .= 'D' if $docref->{flags} =~ /D/;
+           # If the entry is also in embed.fnc, it should be defined
+            # completely there, but not here
+           my $embed_docref = delete $funcflags{$name};
+           if ($embed_docref and %$embed_docref) {
+                warn "embed.fnc entry overrides redundant information in"
+                   . " '$proto_in_file' in $file" if $flags || $ret || @args;
+                $flags = $embed_docref->{'flags'};
+                $ret = $embed_docref->{'retval'};
+               @args = @{$embed_docref->{args}};
            } else {
                $missing{$name} = $file;
            }
-           if ($flags =~ /m/) {
-               $inline_where = $flags =~ /A/ ? 'api' : 'guts';
-               $inline_may_change = $flags =~ /x/;
 
-               if (defined $embed_where && $inline_where ne $embed_where) {
-                   warn "Function '$name' inconsistency: embed.fnc says $embed_where, Pod says $inline_where";
-               }
-
-               if (defined $embed_may_change
-                   && $inline_may_change ne $embed_may_change) {
-                   my $message = "Function '$name' inconsistency: ";
-                   if ($embed_may_change) {
-                       $message .= "embed.fnc says 'may change', Pod does not";
-                   } else {
-                       $message .= "Pod says 'may change', embed.fnc does not";
-                   }
-                   warn $message;
-               }
-           } elsif (!defined $embed_where) {
-               warn "Unable to place $name!\n";
-               next;
-           } else {
-               $inline_where = $embed_where;
-               $flags .= 'x' if $embed_may_change;
-               @args = @{$docref->{args}};
-               $ret = $docref->{retval};
-           }
+            my $inline_where = $flags =~ /A/ ? 'api' : 'guts';
 
            if (exists $docs{$inline_where}{$curheader}{$name}) {
                 warn "$0: duplicate API entry for '$name' in $inline_where/$curheader\n";
@@ -202,63 +183,74 @@ existing code.\n\n$docs";
         $docs = "\n\nNOTE: this function is experimental and may change or be
 removed without notice.\n\n$docs" if $flags =~ /x/;
     }
+
+    # Is Perl_, but no #define foo # Perl_foo
+    my $p = $flags =~ /p/ && $flags =~ /o/ && $flags !~ /M/;
+
     $docs .= "NOTE: the perl_ form of this function is deprecated.\n\n"
-       if $flags =~ /p/;
-    $docs .= "NOTE: this function must be explicitly called as Perl_$name with an aTHX_ parameter.\n\n"
-        if $flags =~ /o/;
+       if $flags =~ /O/;
+    if ($p) {
+        $docs .= "NOTE: this function must be explicitly called as Perl_$name";
+        $docs .= " with an aTHX_ parameter" if $flags !~ /T/;
+        $docs .= ".\n\n"
+    }
 
     print $fh "=item $name\nX<$name>\n$docs";
 
     if ($flags =~ /U/) { # no usage
+        warn("U and s flags are incompatible") if $flags =~ /s/;
        # nothing
-    } elsif ($flags =~ /s/) { # semicolon ("dTHR;")
-       print $fh "\t\t$name;\n\n";
-    } elsif ($flags =~ /n/) { # no args
-       print $fh "\t$ret\t$name\n\n";
-    } else { # full usage
-       my $p            = $flags =~ /o/; # no #define foo Perl_foo
-       my $n            = "Perl_"x$p . $name;
-       my $large_ret    = length $ret > 7;
-       my $indent_size  = 7+8 # nroff: 7 under =head + 8 under =item
-                         +8+($large_ret ? 1 + length $ret : 8)
-                         +length($n) + 1;
-       my $indent;
-       print $fh "\t$ret" . ($large_ret ? ' ' : "\t") . "$n(";
-       my $long_args;
-       for (@args) {
-           if ($indent_size + 2 + length > 79) {
-               $long_args=1;
-               $indent_size -= length($n) - 3;
-               last;
-           }
-       }
-       my $args = '';
-       if ($p) {
-           $args = @args ? "pTHX_ " : "pTHX";
-           if ($long_args) { print $fh $args; $args = '' }
-       }
-       $long_args and print $fh "\n";
-       my $first = !$long_args;
-       while () {
-           if (!@args or
-                length $args
-                && $indent_size + 3 + length($args[0]) + length $args > 79
-           ) {
-               print $fh
-                 $first ? '' : (
-                   $indent //=
-                      "\t".($large_ret ? " " x (1+length $ret) : "\t")
-                     ." "x($long_args ? 4 : 1 + length $n)
-                 ),
-                 $args, (","x($args ne 'pTHX_ ') . "\n")x!!@args;
-               $args = $first = '';
-           }
-           @args or last;
-           $args .= ", "x!!(length $args && $args ne 'pTHX_ ')
-                  . shift @args;
-       }
-       if ($long_args) { print $fh "\n", substr $indent, 0, -4 }
-       print $fh ")\n\n";
+    } else {
+        if ($flags =~ /n/) { # no args
+            warn("n flag without m") unless $flags =~ /m/;
+            warn("n flag but apparently has args") if @args;
+            print $fh "\t$ret\t$name";
+        } else { # full usage
+            my $n            = "Perl_"x$p . $name;
+            my $large_ret    = length $ret > 7;
+            my $indent_size  = 7+8 # nroff: 7 under =head + 8 under =item
+                            +8+($large_ret ? 1 + length $ret : 8)
+                            +length($n) + 1;
+            my $indent;
+            print $fh "\t$ret" . ($large_ret ? ' ' : "\t") . "$n(";
+            my $long_args;
+            for (@args) {
+                if ($indent_size + 2 + length > 79) {
+                    $long_args=1;
+                    $indent_size -= length($n) - 3;
+                    last;
+                }
+            }
+            my $args = '';
+            if ($p && $flags !~ /T/) {
+                $args = @args ? "pTHX_ " : "pTHX";
+                if ($long_args) { print $fh $args; $args = '' }
+            }
+            $long_args and print $fh "\n";
+            my $first = !$long_args;
+            while () {
+                if (!@args or
+                    length $args
+                    && $indent_size + 3 + length($args[0]) + length $args > 79
+                ) {
+                    print $fh
+                    $first ? '' : (
+                        $indent //=
+                        "\t".($large_ret ? " " x (1+length $ret) : "\t")
+                        ." "x($long_args ? 4 : 1 + length $n)
+                    ),
+                    $args, (","x($args ne 'pTHX_ ') . "\n")x!!@args;
+                    $args = $first = '';
+                }
+                @args or last;
+                $args .= ", "x!!(length $args && $args ne 'pTHX_ ')
+                    . shift @args;
+            }
+            if ($long_args) { print $fh "\n", substr $indent, 0, -4 }
+            print $fh ")";
+        }
+        print $fh ";" if $flags =~ /s/; # semicolon "dTHR;"
+        print $fh "\n\n";
     }
     print $fh "=for hackers\nFound in file $file\n\n";
 }
@@ -382,7 +374,7 @@ foreach (sort keys %missing) {
 
 # List of funcs in the public API that aren't also marked as experimental nor
 # deprecated.
-my @missing_api = grep $funcflags{$_}{flags} =~ /A/ && $funcflags{$_}{flags} !~ /[MD]/ && !$docs{api}{$_}, keys %funcflags;
+my @missing_api = grep $funcflags{$_}{flags} =~ /A/ && $funcflags{$_}{flags} !~ /[xD]/ && !$docs{api}{$_}, keys %funcflags;
 output('perlapi', <<'_EOB_', $docs{api}, \@missing_api, <<'_EOE_');
 |=encoding UTF-8
 |
@@ -465,7 +457,7 @@ _EOE_
 
 # List of non-static internal functions
 my @missing_guts =
- grep $funcflags{$_}{flags} !~ /[As]/ && !$docs{guts}{$_}, keys %funcflags;
+ grep $funcflags{$_}{flags} !~ /[AS]/ && !$docs{guts}{$_}, keys %funcflags;
 
 output('perlintern', <<'END', $docs{guts}, \@missing_guts, <<'END');
 |=head1 NAME
diff --git a/av.h b/av.h
index 6b2b14c..7cb63b4 100644 (file)
--- a/av.h
+++ b/av.h
@@ -49,7 +49,7 @@ Null AV pointer.
 =for apidoc Am|int|AvFILL|AV* av
 Same as C<av_top_index()> or C<av_tindex()>.
 
-=for apidoc Am|int|av_tindex|AV* av
+=for apidoc av_tindex
 Same as C<av_top_index()>.
 
 =cut
diff --git a/cop.h b/cop.h
index 5c66752..fca2aa7 100644 (file)
--- a/cop.h
+++ b/cop.h
@@ -1098,17 +1098,17 @@ typedef struct stackinfo PERL_SI;
 /*
 =head1 Multicall Functions
 
-=for apidoc Ams||dMULTICALL
+=for apidoc Amns||dMULTICALL
 Declare local variables for a multicall.  See L<perlcall/LIGHTWEIGHT CALLBACKS>.
 
-=for apidoc Ams||PUSH_MULTICALL
+=for apidoc Amns||PUSH_MULTICALL
 Opening bracket for a lightweight callback.
 See L<perlcall/LIGHTWEIGHT CALLBACKS>.
 
-=for apidoc Ams||MULTICALL
+=for apidoc Amns||MULTICALL
 Make a lightweight callback.  See L<perlcall/LIGHTWEIGHT CALLBACKS>.
 
-=for apidoc Ams||POP_MULTICALL
+=for apidoc Amns||POP_MULTICALL
 Closing bracket for a lightweight callback.
 See L<perlcall/LIGHTWEIGHT CALLBACKS>.
 
index aa672d0..b8d429a 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1,16 +1,26 @@
 : BEGIN{die "You meant to run regen/embed.pl"} # Stop early if fed to perl.
 :
-: This file is processed by regen/embed.pl and autodoc.pl
-: It is used to declare the interfaces to the functions defined by perl.  All
-: non-static functions must have entries here.  Static functions need not, but
-: there is benefit to declaring them here, as it generally handles the thread
-: context parameter invisibly, as well as making sure a PERL_ARGS_ASSERT_foo
-: macro is defined, which can save you debugging time.
-:
-: Lines are of the form:
+: WARNING:  The meanings of some flags have been changed as of v5.31.0
+
+: This file is known to be processed by regen/embed.pl, autodoc.pl,
+: makedef.pl, Devel::PPPort, and porting/diag.t.
+:
+: All non-static functions defined by perl need to be listed in this file.
+: embed.pl uses the entries here to construct proto.h to declare to the
+: compiler the function interfaces, and embed.h to create macros that present a
+: uniform interface to C code for the functions, regardless of, say, whether
+: the perl is threaded or not.
+
+: Static functions need not appear here, but there is benefit to declaring them
+: here, as it generally handles the thread context parameter invisibly, as well
+: as making sure a PERL_ARGS_ASSERT_foo macro is defined, which can save you
+: debugging time.
+:
+: Lines in this file are of the form:
 :    flags|return_type|function_name|arg1|arg2|...|argN
 :
-: A line may be continued on another by ending it with a backslash.
+: A function taking no parameters will have no 'arg' elements.
+: A line may be continued onto the next by ending it with a backslash.
 : Leading and trailing whitespace will be ignored in each component.
 :
 : The default without flags is to declare a function for internal perl-core use
 : modify this.  Most non-static functions should have the 'p' flag to avoid
 : namespace clashes with programs that embed perl.
 :
-: flags are single letters with following meanings:
+: Scattered around the perl source are lines of the form:
+:
+:   =for apidoc name
+:
+: and
+:
+:   =for apidoc flags|return_type|name|arg1|arg2|...|argN
+:
+: and with the same meanings as the lines in this file.  autodoc uses these
+: lines in conjunction with this file to construct perlapi.pod.  For entries of
+: the first form, there must be a corresponding entry in this file, and the
+: purpose of the line is to associate the pod accompanying it with the
+: interface defined in this file.  The second form is used to define the
+: interface for the documentation when there is no entry in this file, hence it
+: will be for something that isn't a non-static function: a macro of some kind,
+: a constant, or some other entity that it wishes to have documented.  (If
+: there is also an entry in this file it overrides the apidoc line, and
+: autodoc.pl will warn.) 'return_type' in these lines can be empty, unlike in
+: this file.  The entries in this file that have corresponding '=for apidoc'
+: entries should have the flag 'd' set in this file.
+:
+: Devel::PPPort also looks at both this file and the '=for apidoc' lines.  In
+: part it is to construct lists of functions that are or are not backported.
+:
+: makedef.pl uses this file for constructing the export list
+:
+: porting/diag.t checks some things for consistency based on this file.
+:
+: 'flags' is a string of single letters.  Most of the flags are meaningful only
+: to embed.pl; some only to autodoc.pl, and others only to makedef.pl.  The
+: comments here don't include how Devel::PPPort or diag.t use them:
 :
 :   A  Available fully everywhere (usually part of the public API):
 :
-:         add entry to the list of exported symbols (unless x or m);
-:         any doc entry goes in perlapi.pod rather than perlintern.pod.  If no
-:           documentation is furnished for this function, and M is also
-:           specified, the function is not listed as part of the public API.
-:           If M isn't specified, and no documentation is furnished, the
-:           function is listed in perlapi as existing and being undocumented
+:         add entry to the list of exported symbols (unless e or m);
+:         any doc entry goes in perlapi.pod rather than perlintern.pod.  If
+:            none specified, autodoc.pl does not list this function/macro as
+:            part of the public API.  If x isn't specified, and no
+:            documentation is furnished, autodoc.pl lists this in perlapi as
+:            existing and being undocumented.
 :         makes '#define foo Perl_foo' scope not just for PERL_CORE/PERL_EXT
 :
-:      If the function is only exported for use in a public
-:      macro, see X.
+:      If the function is only exported for use in a public macro, see X.
 :
 :   a  Allocates memory a la malloc/calloc.  Also implies "R".
-:      This should only be on functions which returns 'empty' memory
+:      This flag should only be on functions which return 'empty' memory
 :      which has no other pointers to it, and which does not contain
 :      any pointers to other things. So for example realloc() can't be
 :      'a'.
@@ -60,7 +99,7 @@
 :
 :      For functions, like wrappers, whose macro shortcut doesn't call the
 :      function, but which, for whatever reason, aren't considered legacy-only,
-:      use the 'o' flag
+:      use the 'o' flag, and maybe the 'M'
 :
 :      This flag effectively causes nothing to happen if the perl interpreter
 :      is compiled with -DNO_MATHOMS; otherwise these happen:
 :   D  Function is deprecated:
 :
 :         proto.h: add __attribute__deprecated__
+:         autodoc.pl adds a note to this effect in the doc entry
 :
 :   d  Function has documentation (somewhere) in the source:
 :
-:         enables 'no docs for foo" warning in autodoc.pl
+:         enables 'no docs for foo" warning in autodoc.pl in the documentation
+:         isn't found
 :
 :   E  Visible to extensions included in the Perl core:
 :
 :         in embed.h, change "#ifdef PERL_CORE"
 :         into               "#if defined(PERL_CORE) || defined(PERL_EXT)"
 :
-:      To be usable from dynamically loaded extensions, either:
-:        1) must be static to its containing file ("i" or "s" flag); or
+:       To be usable from dynamically loaded extensions, either:
+:        1) it must be static to its containing file ("i" or "s" flag); or
 :         2) be combined with the "X" flag.
 :
+:   e  Not exported
+
+:         suppress entry in the list of exported symbols
+:
 :   f  Function takes a format string. If the function name =~ qr/strftime/
 :      then its assumed to take a strftime-style format string as 1st arg;
 :      otherwise it's assumed to be a printf style format string, varargs
 :
 :         proto.h: function is declared as S_foo rather than foo unless the 'p'
 :                 flag is also given in which case 'Perl_foo' is used,
-:                PERL_STATIC_INLINE is added to declaration;
+:                PERL_STATIC_INLINE is added to the declaration
 :         embed.h: "#define foo S_foo" or Perl_foo entries added
 :
-:   M  May change:
+:   M  There is an extra macro that bypasses this function
 :
-:         any doc entry is marked that function may change.  Also used to
-:        suppress making a doc entry if it would just be a placeholder.
+:      (requires 'p', and implies 'o')  The function exists so that callers who
+:      used the 'Perl_' form can continue to do so, but there is a macro
+:      available without the 'Perl_' prefix that bypasses the function call,
+:      such as when the function has been reduced to a wrapper around another
+:      one.
 :
 :   m  Implemented as a macro:
 :
 :         suppress entry in the list of exported symbols
 :         suppress embed.h entry
 :
-:   n  Has no implicit interpreter/thread context argument:
+:   N  The name in the entry isn't strictly a name
 :
-:         suppress the pTHX part of "foo(pTHX...)" in proto.h;
-:         In the PERL_IMPLICIT_SYS branch of embed.h, generates
-:             "#define foo Perl_foo",      rather than
-:             "#define foo(a,b,c) Perl_foo(aTHX_ a,b,c)
+:      Normally, the name of the function or macro must contain all \w
+:      characters, and a warning is raised otherwise.  This flag suppresses
+:      that warning, so that weird things can be documented
+:
+:   n  Has no arguments (used only in =for apidoc entries)
+:
+:      The macro (it can't be a function) is used without any parameters nor
+:      empty parentheses.
 :
 :   O  Has a perl_ compatibility macro.
 :
-:      The really OLD name for API funcs
+:      The really OLD name for API funcs.
+
+:      autodoc.pl adds a note that the perl_ form of this function is
+:      deprecated.
+:
 :
 :   o  Has no Perl_foo or S_foo compatibility macro:
 :
 :      doesn't call the function specified by this entry.  This is typically
 :      done for a function that effectively just wraps another one, and where
 :      the macro form calls the underlying function directly.  For these, also
-:      specify the 'm' flag.  Legacy-only functions should instead use 'b'.
+:      specify the 'M' flag.  Legacy-only functions should instead use 'b'.
 :
 :         embed.h: suppress "#define foo Perl_foo"
 :
+:      autodoc.pl adds a note that this function must be explicitly called as
+:      Perl_$name with an aTHX_ parameter, unless the 'M' flag is specified.
+:
 :   P  Pure function:
 :
 :      A pure function has no effects except the return value, and the return
 :
 :        proto.h: add __attribute__noreturn__
 :
-:   s  Static function: function in source code has a S_ prefix:
+:   S  Static function: function in source code has a S_ prefix:
 :
 :         proto.h: function is declared as S_foo rather than foo,
 :                STATIC is added to declaration;
 :         embed.h: "#define foo S_foo" entries added
 :
-:   U  Suppress usage example in autogenerated documentation
+:   s  autodoc.pl adds a terminating semi-colon to the usage example in the
+:      documentation.
 :
-:         (currently no effect)
+:   T  Has no implicit interpreter/thread context argument:
+:
+:         suppress the pTHX part of "foo(pTHX...)" in proto.h;
+:         In the PERL_IMPLICIT_SYS branch of embed.h, generates
+:             "#define foo Perl_foo",      rather than
+:             "#define foo(a,b,c) Perl_foo(aTHX_ a,b,c)
+:
+:   U  autodoc.pl will not output a usage example
 :
 :   W  Add a _pDEPTH argument to function prototypes, and an _aDEPTH
 :      argument to the function calls. This means that under DEBUGGING
 :
 :   X  Explicitly exported:
 :
-:         add entry to the list of exported symbols, unless x or m
+:         add entry to the list of exported symbols, unless e or m
 :
 :      This is often used for private functions that are used by public
 :      macros.  In those cases the macros must use the long form of the
 :      name (Perl_blah(aTHX_ ...)).
 :
-:   x  Not exported
-:
-:         suppress entry in the list of exported symbols
+:   x  Experimental, may change:
 :
-: (see also L<perlguts/Internal Functions> for those flags.)
+:         any doc entry is marked that it may change.  Also used to suppress
+:        making a doc entry if it would just be a placeholder.
 :
-: Pointer parameters that must not be passed NULLs should be prefixed with NN.
+: In this file, pointer parameters that must not be passed NULLs should be
+: prefixed with NN.
 :
-: Pointer parameters that may be NULL should be prefixed with NULLOK.  This has
-: no effect on output yet.  It's a notation for the maintainers to know "I have
-: defined whether NULL is OK or not" rather than having neither NULL or NULLOK,
-: which is ambiguous.
+: And, pointer parameters that may be NULL should be prefixed with NULLOK.
+: This has no effect on output yet.  It's a notation for the maintainers to
+: know "I have defined whether NULL is OK or not" rather than having neither
+: NULL or NULLOK, which is ambiguous.
 :
-: Individual flags may be separated by whitespace.
+: Individual flags may be separated by non-tab whitespace.
 
 #if defined(PERL_IMPLICIT_SYS)
-Ano    |PerlInterpreter*|perl_alloc_using \
+ATo    |PerlInterpreter*|perl_alloc_using \
                                |NN struct IPerlMem *ipM \
                                |NN struct IPerlMem *ipMS \
                                |NN struct IPerlMem *ipMP \
@@ -216,18 +283,18 @@ Ano       |PerlInterpreter*|perl_alloc_using \
                                |NN struct IPerlSock *ipS \
                                |NN struct IPerlProc *ipP
 #endif
-Anod   |PerlInterpreter*       |perl_alloc
-Anod   |void   |perl_construct |NN PerlInterpreter *my_perl
-Anod   |int    |perl_destruct  |NN PerlInterpreter *my_perl
-Anod   |void   |perl_free      |NN PerlInterpreter *my_perl
-Anod   |int    |perl_run       |NN PerlInterpreter *my_perl
-Anod   |int    |perl_parse     |NN PerlInterpreter *my_perl|XSINIT_t xsinit \
+ATod   |PerlInterpreter*       |perl_alloc
+ATod   |void   |perl_construct |NN PerlInterpreter *my_perl
+ATod   |int    |perl_destruct  |NN PerlInterpreter *my_perl
+ATod   |void   |perl_free      |NN PerlInterpreter *my_perl
+ATod   |int    |perl_run       |NN PerlInterpreter *my_perl
+ATod   |int    |perl_parse     |NN PerlInterpreter *my_perl|XSINIT_t xsinit \
                                |int argc|NULLOK char** argv|NULLOK char** env
-AnpR   |bool   |doing_taint    |int argc|NULLOK char** argv|NULLOK char** env
+ATpR   |bool   |doing_taint    |int argc|NULLOK char** argv|NULLOK char** env
 #if defined(USE_ITHREADS)
-Anod   |PerlInterpreter*|perl_clone|NN PerlInterpreter *proto_perl|UV flags
+ATod   |PerlInterpreter*|perl_clone|NN PerlInterpreter *proto_perl|UV flags
 #  if defined(PERL_IMPLICIT_SYS)
-Ano    |PerlInterpreter*|perl_clone_using \
+ATo    |PerlInterpreter*|perl_clone_using \
                                |NN PerlInterpreter *proto_perl \
                                |UV flags \
                                |NN struct IPerlMem* ipM \
@@ -242,20 +309,20 @@ Ano       |PerlInterpreter*|perl_clone_using \
 #  endif
 #endif
 
-Aanop  |Malloc_t|malloc        |MEM_SIZE nbytes
-Aanop  |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
-ARnop  |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
-Anop   |Free_t |mfree          |Malloc_t where
+AaTop  |Malloc_t|malloc        |MEM_SIZE nbytes
+AaTop  |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
+ARTop  |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
+ATop   |Free_t |mfree          |Malloc_t where
 #if defined(MYMALLOC)
-npR    |MEM_SIZE|malloced_size |NN void *p
-npR    |MEM_SIZE|malloc_good_size      |size_t nbytes
+TpR    |MEM_SIZE|malloced_size |NN void *p
+TpR    |MEM_SIZE|malloc_good_size      |size_t nbytes
 #endif
 #if defined(PERL_IN_MALLOC_C)
-sn     |int    |adjust_size_and_find_bucket    |NN size_t *nbytes_p
+ST     |int    |adjust_size_and_find_bucket    |NN size_t *nbytes_p
 #endif
 
-AnpR   |void*  |get_context
-Anp    |void   |set_context    |NN void *t
+ATpR   |void*  |get_context
+ATp    |void   |set_context    |NN void *t
 
 XEop   |bool   |try_amagic_bin |int method|int flags
 XEop   |bool   |try_amagic_un  |int method|int flags
@@ -270,7 +337,7 @@ Apd |OP*    |op_linklist    |NN OP *o
 Apd    |OP*    |op_prepend_elem|I32 optype|NULLOK OP* first|NULLOK OP* last
 : FIXME - this is only called by pp_chown. They should be merged.
 p      |I32    |apply          |I32 type|NN SV** mark|NN SV** sp
-ApM    |void   |apply_attrs_string|NN const char *stashpv|NN CV *cv|NN const char *attrstr|STRLEN len
+Apx    |void   |apply_attrs_string|NN const char *stashpv|NN CV *cv|NN const char *attrstr|STRLEN len
 Apd    |void   |av_clear       |NN AV *av
 Apd    |SV*    |av_delete      |NN AV *av|SSize_t key|I32 flags
 ApdR   |bool   |av_exists      |NN AV *av|SSize_t key
@@ -284,7 +351,7 @@ ApdR        |SSize_t|av_len         |NN AV *av
 ApdR   |AV*    |av_make        |SSize_t size|NN SV **strp
 p      |SV*    |av_nonelem     |NN AV *av|SSize_t ix
 Apd    |SV*    |av_pop         |NN AV *av
-ApdoxM |void   |av_create_and_push|NN AV **const avp|NN SV *const val
+Apdoex |void   |av_create_and_push|NN AV **const avp|NN SV *const val
 Apd    |void   |av_push        |NN AV *av|NN SV *val
 : Used in scope.c, and by Data::Alias
 EXp    |void   |av_reify       |NN AV *av
@@ -293,12 +360,12 @@ Apd       |SV**   |av_store       |NN AV *av|SSize_t key|NULLOK SV *val
 AidR   |SSize_t|av_top_index   |NN AV *av
 AmpdR  |SSize_t|av_tindex      |NN AV *av
 Apd    |void   |av_undef       |NN AV *av
-ApdoxM |SV**   |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
+Apdoex |SV**   |av_create_and_unshift_one|NN AV **const avp|NN SV *const val
 Apd    |void   |av_unshift     |NN AV *av|SSize_t num
 Apo    |SV**   |av_arylen_p    |NN AV *av
 Apo    |IV*    |av_iter_p      |NN AV *av
 #if defined(PERL_IN_AV_C)
-s      |MAGIC* |get_aux_mg     |NN AV *av
+S      |MAGIC* |get_aux_mg     |NN AV *av
 #endif
 : Used in perly.y
 pR     |OP*    |bind_match     |I32 type|NN OP *left|NN OP *right
@@ -307,7 +374,7 @@ ApdR        |OP*    |block_end      |I32 floor|NULLOK OP* seq
 ApR    |U8     |block_gimme
 : Used in perly.y
 ApdR   |int    |block_start    |int full
-Aod  |void   |blockhook_register |NN BHK *hk
+Aodxp  |void   |blockhook_register |NN BHK *hk
 : Used in perl.c
 p      |void   |boot_core_UNIVERSAL
 : Used in perl.c
@@ -317,10 +384,10 @@ Apd       |const PERL_CONTEXT *   |caller_cx|I32 level \
                                |NULLOK const PERL_CONTEXT **dbcxp
 : Used in several source files
 pR     |bool   |cando          |Mode_t mode|bool effective|NN const Stat_t* statbufp
-ApRn   |U32    |cast_ulong     |NV f
-ApRn   |I32    |cast_i32       |NV f
-ApRn   |IV     |cast_iv        |NV f
-ApRn   |UV     |cast_uv        |NV f
+ApRT   |U32    |cast_ulong     |NV f
+ApRT   |I32    |cast_i32       |NV f
+ApRT   |IV     |cast_iv        |NV f
+ApRT   |UV     |cast_uv        |NV f
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
 ApR    |I32    |my_chsize      |int fd|Off_t length
 #endif
@@ -329,37 +396,37 @@ p |const COP*|closest_cop |NN const COP *cop|NULLOK const OP *o \
 : Used in perly.y
 ApdR   |OP*    |op_convert_list        |I32 optype|I32 flags|NULLOK OP* o
 : Used in op.c and perl.c
-pM     |void   |create_eval_scope|NULLOK OP *retop|U32 flags
+px     |void   |create_eval_scope|NULLOK OP *retop|U32 flags
 Aprd   |void   |croak_sv       |NN SV *baseex
 : croak()'s first parm can be NULL.  Otherwise, mod_perl breaks.
 Afprd  |void   |croak          |NULLOK const char* pat|...
 Aprd   |void   |vcroak         |NULLOK const char* pat|NULLOK va_list* args
-Anprd  |void   |croak_no_modify
-Anprd  |void   |croak_xs_usage |NN const CV *const cv \
+ATprd  |void   |croak_no_modify
+ATprd  |void   |croak_xs_usage |NN const CV *const cv \
                                |NN const char *const params
-npr    |void   |croak_no_mem
-nprX   |void   |croak_popstack
-fnrp   |void   |croak_caller|NULLOK const char* pat|...
-fnprx  |void   |noperl_die|NN const char* pat|...
+Tpr    |void   |croak_no_mem
+TprX   |void   |croak_popstack
+fTrp   |void   |croak_caller|NULLOK const char* pat|...
+fTpre  |void   |noperl_die|NN const char* pat|...
 #if defined(WIN32)
-norx   |void   |win32_croak_not_implemented|NN const char * fname
+Tore   |void   |win32_croak_not_implemented|NN const char * fname
 #endif
 #if defined(PERL_IMPLICIT_CONTEXT)
-Afnrp  |void   |croak_nocontext|NULLOK const char* pat|...
-Afnrp  |OP*    |die_nocontext  |NULLOK const char* pat|...
-Afnp   |void   |deb_nocontext  |NN const char* pat|...
-Afnp   |char*  |form_nocontext |NN const char* pat|...
-Anp    |void   |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|...
-Afnp   |SV*    |mess_nocontext |NN const char* pat|...
-Afnp   |void   |warn_nocontext |NN const char* pat|...
-Afnp   |void   |warner_nocontext|U32 err|NN const char* pat|...
-Afnp   |SV*    |newSVpvf_nocontext|NN const char *const pat|...
-Afnp   |void   |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|...
-Afnp   |void   |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|...
-Afnp   |void   |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
-Afnp   |void   |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
-Abfnp  |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
-Abfnp  |int    |printf_nocontext|NN const char *format|...
+AfTrp  |void   |croak_nocontext|NULLOK const char* pat|...
+AfTrp  |OP*    |die_nocontext  |NULLOK const char* pat|...
+AfTp   |void   |deb_nocontext  |NN const char* pat|...
+AfTp   |char*  |form_nocontext |NN const char* pat|...
+ATp    |void   |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|...
+AfTp   |SV*    |mess_nocontext |NN const char* pat|...
+AfTp   |void   |warn_nocontext |NN const char* pat|...
+AfTp   |void   |warner_nocontext|U32 err|NN const char* pat|...
+AfTp   |SV*    |newSVpvf_nocontext|NN const char *const pat|...
+AfTp   |void   |sv_catpvf_nocontext|NN SV *const sv|NN const char *const pat|...
+AfTp   |void   |sv_setpvf_nocontext|NN SV *const sv|NN const char *const pat|...
+AfTp   |void   |sv_catpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
+AfTp   |void   |sv_setpvf_mg_nocontext|NN SV *const sv|NN const char *const pat|...
+AbfTp  |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
+AbfTp  |int    |printf_nocontext|NN const char *format|...
 #endif
 : Used in pp.c
 p      |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
@@ -368,13 +435,13 @@ p |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
 p      |OP *   |coresub_op     |NN SV *const coreargssv|const int code \
                                |const int opnum
 : Used in sv.c
-EMXp   |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
+ExXp   |void   |cv_ckproto_len_flags   |NN const CV* cv|NULLOK const GV* gv\
                                |NULLOK const char* p|const STRLEN len \
                                 |const U32 flags
 : Used in pp.c and pp_sys.c
 ApdR   |SV*    |gv_const_sv    |NN GV* gv
-ApdRn  |SV*    |cv_const_sv    |NULLOK const CV *const cv
-pRn    |SV*    |cv_const_sv_or_av|NULLOK const CV *const cv
+ApdRT  |SV*    |cv_const_sv    |NULLOK const CV *const cv
+pRT    |SV*    |cv_const_sv_or_av|NULLOK const CV *const cv
 Apd    |SV *   |cv_name        |NN CV *cv|NULLOK SV *sv|U32 flags
 Apd    |void   |cv_undef       |NN CV* cv
 p      |void   |cv_undef_flags |NN CV* cv|U32 flags
@@ -401,14 +468,14 @@ Ap        |I32    |debop          |NN const OP* o
 Ap     |I32    |debstack
 Ap     |I32    |debstackptrs
 pR     |SV *   |defelem_target |NN SV *sv|NULLOK MAGIC *mg
-Anp    |char*  |delimcpy       |NN char* to|NN const char* toend|NN const char* from \
+ATp    |char*  |delimcpy       |NN char* to|NN const char* toend|NN const char* from \
                                |NN const char* fromend|int delim|NN I32* retlen
-np     |char*  |delimcpy_no_escape|NN char* to|NN const char* toend \
+Tp     |char*  |delimcpy_no_escape|NN char* to|NN const char* toend \
                                   |NN const char* from \
                                   |NN const char* fromend|int delim \
                                   |NN I32* retlen
 : Used in op.c, perl.c
-pM     |void   |delete_eval_scope
+px     |void   |delete_eval_scope
 Aprd   |OP*    |die_sv         |NN SV *baseex
 Afrpd  |OP*    |die            |NULLOK const char* pat|...
 : Used in util.c
@@ -439,8 +506,8 @@ Ap  |int    |do_spawn_nowait|NN char* cmd
 p      |bool|do_exec3  |NN const char *incmd|int fd|int do_report
 #endif
 #if defined(PERL_IN_DOIO_C)
-s      |void   |exec_failed    |NN const char *cmd|int fd|int do_report
-s      |bool   |argvout_final  |NN MAGIC *mg|NN IO *io|bool not_implicit
+S      |void   |exec_failed    |NN const char *cmd|int fd|int do_report
+S      |bool   |argvout_final  |NN MAGIC *mg|NN IO *io|bool not_implicit
 #endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 : Defined in doio.c, used only in pp_sys.c
@@ -466,8 +533,8 @@ Apmb        |bool   |do_open        |NN GV* gv|NN const char* name|I32 len|int as_raw \
 Abp    |bool   |do_open9       |NN GV *gv|NN const char *name|I32 len|int as_raw \
                                |int rawmode|int rawperm|NULLOK PerlIO *supplied_fp \
                                |NN SV *svs|I32 num
-pn     |void   |setfd_cloexec|int fd
-pn     |void   |setfd_inhexec|int fd
+pT     |void   |setfd_cloexec|int fd
+pT     |void   |setfd_inhexec|int fd
 p      |void   |setfd_cloexec_for_nonsysfd|int fd
 p      |void   |setfd_inhexec_for_sysfd|int fd
 p      |void   |setfd_cloexec_or_inhexec_by_sysfdness|int fd
@@ -475,7 +542,7 @@ pR  |int    |PerlLIO_dup_cloexec|int oldfd
 p      |int    |PerlLIO_dup2_cloexec|int oldfd|int newfd
 pR     |int    |PerlLIO_open_cloexec|NN const char *file|int flag
 pR     |int    |PerlLIO_open3_cloexec|NN const char *file|int flag|int perm
-pnoR   |int    |my_mkstemp_cloexec|NN char *templte
+pToR   |int    |my_mkstemp_cloexec|NN char *templte
 #ifdef HAS_PIPE
 pR     |int    |PerlProc_pipe_cloexec|NN int *pipefd
 #endif
@@ -492,10 +559,10 @@ pR        |int    |PerlSock_socketpair_cloexec|int domain|int type|int protocol \
                                |NN int *pairfd
 #endif
 #if defined(PERL_IN_DOIO_C)
-s      |IO *   |openn_setup    |NN GV *gv|NN char *mode|NN PerlIO **saveifp \
+S      |IO *   |openn_setup    |NN GV *gv|NN char *mode|NN PerlIO **saveifp \
                                |NN PerlIO **saveofp|NN int *savefd \
                                 |NN char *savetype
-s      |bool   |openn_cleanup  |NN GV *gv|NN IO *io|NULLOK PerlIO *fp \
+S      |bool   |openn_cleanup  |NN GV *gv|NN IO *io|NULLOK PerlIO *fp \
                                |NN char *mode|NN const char *oname \
                                 |NULLOK PerlIO *saveifp|NULLOK PerlIO *saveofp \
                                 |int savefd|char savetype|int writing \
@@ -506,9 +573,9 @@ Ap  |bool   |do_openn       |NN GV *gv|NN const char *oname|I32 len \
                                |int as_raw|int rawmode|int rawperm \
                                |NULLOK PerlIO *supplied_fp|NULLOK SV **svp \
                                |I32 num
-Mp     |bool   |do_open_raw    |NN GV *gv|NN const char *oname|STRLEN len \
+xp     |bool   |do_open_raw    |NN GV *gv|NN const char *oname|STRLEN len \
                                |int rawmode|int rawperm|NULLOK Stat_t *statbufp
-Mp     |bool   |do_open6       |NN GV *gv|NN const char *oname|STRLEN len \
+xp     |bool   |do_open6       |NN GV *gv|NN const char *oname|STRLEN len \
                                |NULLOK PerlIO *supplied_fp|NULLOK SV **svp \
                                |U32 num
 : Used in pp_hot.c and pp_sys.c
@@ -553,7 +620,7 @@ p   |CV *   |find_lexical_cv|PADOFFSET off
 p      |char*  |find_script    |NN const char *scriptname|bool dosearch \
                                |NULLOK const char *const *const search_ext|I32 flags
 #if defined(PERL_IN_OP_C)
-s      |OP*    |force_list     |NULLOK OP* arg|bool nullit
+S      |OP*    |force_list     |NULLOK OP* arg|bool nullit
 i      |OP*    |op_integerize  |NN OP *o
 i      |OP*    |op_std_init    |NN OP *o
 #if defined(USE_ITHREADS)
@@ -562,21 +629,21 @@ i |void   |op_relocate_sv |NN SV** svp|NN PADOFFSET* targp
 i      |OP*    |newMETHOP_internal     |I32 type|I32 flags|NULLOK OP* dynamic_meth \
                                        |NULLOK SV* const_meth
 : FIXME
-s      |OP*    |fold_constants |NN OP * const o
-s      |OP*    |traverse_op_tree|NN OP* top|NN OP* o
+S      |OP*    |fold_constants |NN OP * const o
+S      |OP*    |traverse_op_tree|NN OP* top|NN OP* o
 #endif
 Afpd   |char*  |form           |NN const char* pat|...
 Ap     |char*  |vform          |NN const char* pat|NULLOK va_list* args
 Ap     |void   |free_tmps
 #if defined(PERL_IN_OP_C)
-s      |OP*    |gen_constant_list|NULLOK OP* o
+S      |OP*    |gen_constant_list|NULLOK OP* o
 #endif
 #if !defined(HAS_GETENV_LEN)
 : Used in hv.c
 p      |char*  |getenv_len     |NN const char *env_elem|NN unsigned long *len
 #endif
 : Used in pp_ctl.c and pp_hot.c
-pox    |void   |get_db_sub     |NULLOK SV **svp|NN CV *cv
+poe    |void   |get_db_sub     |NULLOK SV **svp|NN CV *cv
 Ap     |void   |gp_free        |NULLOK GV* gv
 Ap     |GP*    |gp_ref         |NULLOK GP* gp
 Ap     |GV*    |gv_add_by_type |NULLOK GV *gv|svtype type
@@ -615,17 +682,17 @@ Apd       |GV*    |gv_fetchmeth_pvn_autoload      |NULLOK HV* stash|NN const char* name \
 Apdmb  |GV*    |gv_fetchmethod |NN HV* stash|NN const char* name
 Apd    |GV*    |gv_fetchmethod_autoload|NN HV* stash|NN const char* name \
                                |I32 autoload
-ApM    |GV*    |gv_fetchmethod_sv_flags|NN HV* stash|NN SV* namesv|U32 flags
-ApM    |GV*    |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \
+Apx    |GV*    |gv_fetchmethod_sv_flags|NN HV* stash|NN SV* namesv|U32 flags
+Apx    |GV*    |gv_fetchmethod_pv_flags|NN HV* stash|NN const char* name \
                                |U32 flags
-ApM    |GV*    |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \
+Apx    |GV*    |gv_fetchmethod_pvn_flags|NN HV* stash|NN const char* name \
                                |const STRLEN len|U32 flags
 Ap     |GV*    |gv_fetchpv     |NN const char *nambeg|I32 add|const svtype sv_type
 Abp    |void   |gv_fullname    |NN SV* sv|NN const GV* gv
 Apmb   |void   |gv_fullname3   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_fullname4   |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
 : Used in scope.c
-pMox   |GP *   |newGP          |NN GV *const gv
+pxoe   |GP *   |newGP          |NN GV *const gv
 pX     |void   |cvgv_set       |NN CV* cv|NULLOK GV* gv
 poX    |GV *   |cvgv_from_hek  |NN CV* cv
 pX     |void   |cvstash_set    |NN CV* cv|NULLOK HV* stash
@@ -637,9 +704,9 @@ Ap  |void   |gv_init_pv     |NN GV* gv|NULLOK HV* stash|NN const char* name \
 Ap     |void   |gv_init_pvn    |NN GV* gv|NULLOK HV* stash|NN const char* name \
                                 |STRLEN len|U32 flags
 Ap     |void   |gv_name_set    |NN GV* gv|NN const char *name|U32 len|U32 flags
-px     |GV *   |gv_override    |NN const char * const name \
+pe     |GV *   |gv_override    |NN const char * const name \
                                |const STRLEN len
-XMpd   |void   |gv_try_downgrade|NN GV* gv
+Xxpd   |void   |gv_try_downgrade|NN GV* gv
 p      |void   |gv_setref      |NN SV *const dstr|NN SV *const sstr
 Apd    |HV*    |gv_stashpv     |NN const char* name|I32 flags
 Apd    |HV*    |gv_stashpvn    |NN const char* name|U32 namelen|I32 flags
@@ -668,19 +735,19 @@ Ap        |void*  |hv_common      |NULLOK HV *hv|NULLOK SV *keysv \
 Ap     |void*  |hv_common_key_len|NULLOK HV *hv|NN const char *key \
                                |I32 klen_i32|const int action|NULLOK SV *val \
                                |const U32 hash
-Apod   |STRLEN |hv_fill        |NN HV *const hv
+AMpod  |STRLEN |hv_fill        |NN HV *const hv
 Ap     |void   |hv_free_ent    |NN HV *hv|NULLOK HE *entry
 Apd    |I32    |hv_iterinit    |NN HV *hv
 ApdR   |char*  |hv_iterkey     |NN HE* entry|NN I32* retlen
 ApdR   |SV*    |hv_iterkeysv   |NN HE* entry
 ApdRbm |HE*    |hv_iternext    |NN HV *hv
 ApdR   |SV*    |hv_iternextsv  |NN HV *hv|NN char **key|NN I32 *retlen
-ApMdR  |HE*    |hv_iternext_flags|NN HV *hv|I32 flags
+ApxdR  |HE*    |hv_iternext_flags|NN HV *hv|I32 flags
 ApdR   |SV*    |hv_iterval     |NN HV *hv|NN HE *entry
 Ap     |void   |hv_ksplit      |NN HV *hv|IV newmax
 Apdbm  |void   |hv_magic       |NN HV *hv|NULLOK GV *gv|int how
 #if defined(PERL_IN_HV_C)
-s      |SV *   |refcounted_he_value    |NN const struct refcounted_he *he
+S      |SV *   |refcounted_he_value    |NN const struct refcounted_he *he
 #endif
 Xpd    |HV *   |refcounted_he_chain_2hv|NULLOK const struct refcounted_he *c|U32 flags
 Xpd    |SV *   |refcounted_he_fetch_pvn|NULLOK const struct refcounted_he *chain \
@@ -707,26 +774,26 @@ Apbmd     |SV**   |hv_store       |NULLOK HV *hv|NULLOK const char *key \
                                |I32 klen|NULLOK SV *val|U32 hash
 Apbmd  |HE*    |hv_store_ent   |NULLOK HV *hv|NULLOK SV *key|NULLOK SV *val\
                                |U32 hash
-ApbmM  |SV**   |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \
+Apbmx  |SV**   |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \
                                |I32 klen|NULLOK SV *val|U32 hash|int flags
 Amd    |void   |hv_undef       |NULLOK HV *hv
 poX    |void   |hv_undef_flags |NULLOK HV *hv|U32 flags
 AmP    |I32    |ibcmp          |NN const char* a|NN const char* b|I32 len
-Ainp   |I32    |foldEQ         |NN const char* a|NN const char* b|I32 len
+AiTp   |I32    |foldEQ         |NN const char* a|NN const char* b|I32 len
 AmP    |I32    |ibcmp_locale   |NN const char* a|NN const char* b|I32 len
-Ainp   |I32    |foldEQ_locale  |NN const char* a|NN const char* b|I32 len
+AiTp   |I32    |foldEQ_locale  |NN const char* a|NN const char* b|I32 len
 Am     |I32    |ibcmp_utf8     |NN const char *s1|NULLOK char **pe1|UV l1 \
                                |bool u1|NN const char *s2|NULLOK char **pe2 \
                                |UV l2|bool u2
 Amd    |I32    |foldEQ_utf8    |NN const char *s1|NULLOK char **pe1|UV l1 \
                                |bool u1|NN const char *s2|NULLOK char **pe2 \
                                |UV l2|bool u2
-AMp    |I32    |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \
+Axp    |I32    |foldEQ_utf8_flags |NN const char *s1|NULLOK char **pe1|UV l1 \
                                |bool u1|NN const char *s2|NULLOK char **pe2 \
                                |UV l2|bool u2|U32 flags
-Ainp   |I32    |foldEQ_latin1  |NN const char* a|NN const char* b|I32 len
+AiTp   |I32    |foldEQ_latin1  |NN const char* a|NN const char* b|I32 len
 #if defined(PERL_IN_DOIO_C)
-sR     |bool   |ingroup        |Gid_t testgid|bool effective
+SR     |bool   |ingroup        |Gid_t testgid|bool effective
 #endif
 : Used in toke.c
 p      |void   |init_argv_symbols|int argc|NN char **argv
@@ -737,7 +804,7 @@ p   |void   |init_debugger
 Ap     |void   |init_stacks
 Ap     |void   |init_tm        |NN struct tm *ptm
 : Used in perly.y
-AbmnpPR        |char*  |instr          |NN const char* big|NN const char* little
+AbmTpPR        |char*  |instr          |NN const char* big|NN const char* little
 : Used in sv.c
 p      |bool   |io_close       |NN IO* io|NULLOK GV *gv \
                                |bool not_implicit|bool warn_on_fail
@@ -746,168 +813,168 @@ pR      |OP*    |invert         |NULLOK OP* cmd
 ApR    |I32    |is_lvalue_sub
 : Used in cop.h
 XopR   |I32    |was_lvalue_sub
-ApMRnP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
-AbDMpR |U32    |to_uni_upper_lc|U32 c
-AbDMpR |U32    |to_uni_title_lc|U32 c
-AbDMpR |U32    |to_uni_lower_lc|U32 c
-AbDMpR |bool   |is_uni_alnum   |UV c
-AbDMpR |bool   |is_uni_alnumc  |UV c
-AbDMpR |bool   |is_uni_idfirst |UV c
-AbDMpR |bool   |is_uni_alpha   |UV c
-AbDMpPR        |bool   |is_uni_ascii   |UV c
-AbDMpPR        |bool   |is_uni_blank   |UV c
-AbDMpPR        |bool   |is_uni_space   |UV c
-AbDMpPR        |bool   |is_uni_cntrl   |UV c
-AbDMpR |bool   |is_uni_graph   |UV c
-AbDMpR |bool   |is_uni_digit   |UV c
-AbDMpR |bool   |is_uni_upper   |UV c
-AbDMpR |bool   |is_uni_lower   |UV c
-AbDMpR |bool   |is_uni_print   |UV c
-AbDMpR |bool   |is_uni_punct   |UV c
-AbDMpPR        |bool   |is_uni_xdigit  |UV c
-AMp    |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
-AMp    |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
-AbDMpR |bool   |isIDFIRST_lazy |NN const char* p
-AbDMpR |bool   |isALNUM_lazy   |NN const char* p
+ApxRTP |STRLEN |_is_utf8_char_helper|NN const U8 * const s|NN const U8 * e|const U32 flags
+AbDxpR |U32    |to_uni_upper_lc|U32 c
+AbDxpR |U32    |to_uni_title_lc|U32 c
+AbDxpR |U32    |to_uni_lower_lc|U32 c
+AbDxpR |bool   |is_uni_alnum   |UV c
+AbDxpR |bool   |is_uni_alnumc  |UV c
+AbDxpR |bool   |is_uni_idfirst |UV c
+AbDxpR |bool   |is_uni_alpha   |UV c
+AbDxpPR        |bool   |is_uni_ascii   |UV c
+AbDxpPR        |bool   |is_uni_blank   |UV c
+AbDxpPR        |bool   |is_uni_space   |UV c
+AbDxpPR        |bool   |is_uni_cntrl   |UV c
+AbDxpR |bool   |is_uni_graph   |UV c
+AbDxpR |bool   |is_uni_digit   |UV c
+AbDxpR |bool   |is_uni_upper   |UV c
+AbDxpR |bool   |is_uni_lower   |UV c
+AbDxpR |bool   |is_uni_print   |UV c
+AbDxpR |bool   |is_uni_punct   |UV c
+AbDxpPR        |bool   |is_uni_xdigit  |UV c
+Axp    |UV     |to_uni_upper   |UV c|NN U8 *p|NN STRLEN *lenp
+Axp    |UV     |to_uni_title   |UV c|NN U8 *p|NN STRLEN *lenp
+AbDxpR |bool   |isIDFIRST_lazy |NN const char* p
+AbDxpR |bool   |isALNUM_lazy   |NN const char* p
 p      |void   |init_uniprops
 #ifdef PERL_IN_UTF8_C
-snR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp  \
+STR    |U8     |to_lower_latin1|const U8 c|NULLOK U8 *p|NULLOK STRLEN *lenp  \
                |const char dummy
 #  ifndef UV_IS_QUAD
-snR    |int    |is_utf8_cp_above_31_bits|NN const U8 * const s             \
+STR    |int    |is_utf8_cp_above_31_bits|NN const U8 * const s             \
                                         |NN const U8 * const e             \
                                         |const bool consider_overlongs
 #  endif
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-EXnp   |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
+EXTp   |UV        |_to_fold_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const unsigned int flags
 #endif
 #if defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
 p      |UV     |_to_upper_title_latin1|const U8 c|NN U8 *p|NN STRLEN *lenp|const char S_or_s
 #endif
-AMp    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
-AMmp   |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
-AMp    |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
-AbDMpR |bool   |is_uni_alnum_lc|UV c
-AbDMpR |bool   |is_uni_alnumc_lc|UV c
-AbDMpR |bool   |is_uni_idfirst_lc|UV c
-AMpR   |bool   |_is_uni_perl_idcont|UV c
-AMpR   |bool   |_is_uni_perl_idstart|UV c
-AbDMpR |bool   |is_uni_alpha_lc|UV c
-AbDMpPR        |bool   |is_uni_ascii_lc|UV c
-AbDMpPR        |bool   |is_uni_space_lc|UV c
-AbDMpPR        |bool   |is_uni_blank_lc|UV c
-AbDMpPR        |bool   |is_uni_cntrl_lc|UV c
-AbDMpR |bool   |is_uni_graph_lc|UV c
-AbDMpR |bool   |is_uni_digit_lc|UV c
-AbDMpR |bool   |is_uni_upper_lc|UV c
-AbDMpR |bool   |is_uni_lower_lc|UV c
-AbDMpR |bool   |is_uni_print_lc|UV c
-AbDMpR |bool   |is_uni_punct_lc|UV c
-AbDMpPR        |bool   |is_uni_xdigit_lc|UV c
-AndmoR |bool   |is_utf8_invariant_string|NN const U8* const s              \
+Axp    |UV     |to_uni_lower   |UV c|NN U8 *p|NN STRLEN *lenp
+Axmp   |UV     |to_uni_fold    |UV c|NN U8 *p|NN STRLEN *lenp
+Axp    |UV     |_to_uni_fold_flags|UV c|NN U8 *p|NN STRLEN *lenp|U8 flags
+AbDxpR |bool   |is_uni_alnum_lc|UV c
+AbDxpR |bool   |is_uni_alnumc_lc|UV c
+AbDxpR |bool   |is_uni_idfirst_lc|UV c
+AxpR   |bool   |_is_uni_perl_idcont|UV c
+AxpR   |bool   |_is_uni_perl_idstart|UV c
+AbDxpR |bool   |is_uni_alpha_lc|UV c
+AbDxpPR        |bool   |is_uni_ascii_lc|UV c
+AbDxpPR        |bool   |is_uni_space_lc|UV c
+AbDxpPR        |bool   |is_uni_blank_lc|UV c
+AbDxpPR        |bool   |is_uni_cntrl_lc|UV c
+AbDxpR |bool   |is_uni_graph_lc|UV c
+AbDxpR |bool   |is_uni_digit_lc|UV c
+AbDxpR |bool   |is_uni_upper_lc|UV c
+AbDxpR |bool   |is_uni_lower_lc|UV c
+AbDxpR |bool   |is_uni_print_lc|UV c
+AbDxpR |bool   |is_uni_punct_lc|UV c
+AbDxpPR        |bool   |is_uni_xdigit_lc|UV c
+ATdmoR |bool   |is_utf8_invariant_string|NN const U8* const s              \
                |STRLEN len
-AnidR  |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
+ATidR  |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
                |STRLEN len                                                 \
                |NULLOK const U8 ** ep
 #ifndef EBCDIC
-AniR   |unsigned int|_variant_byte_number|PERL_UINTMAX_T word
+ATiR   |unsigned int|_variant_byte_number|PERL_UINTMAX_T word
 #endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
-EinR   |Size_t |variant_under_utf8_count|NN const U8* const s              \
+EiTR   |Size_t |variant_under_utf8_count|NN const U8* const s              \
                |NN const U8* const e
 #endif
-AmnpdRP        |bool   |is_ascii_string|NN const U8* const s|STRLEN len
-AmnpdRP        |bool   |is_invariant_string|NN const U8* const s|STRLEN len
+AmTpdRP        |bool   |is_ascii_string|NN const U8* const s|STRLEN len
+AmTpdRP        |bool   |is_invariant_string|NN const U8* const s|STRLEN len
 #if defined(PERL_CORE) || defined (PERL_EXT)
-EXnidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
+EXTidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
                |STRLEN len
 #endif
-AbnpdD |STRLEN |is_utf8_char   |NN const U8 *s
-Abmnpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
-AnidR  |Size_t |isUTF8_CHAR|NN const U8 * const s0                         \
+AbTpdD |STRLEN |is_utf8_char   |NN const U8 *s
+AbmTpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
+ATidR  |Size_t |isUTF8_CHAR|NN const U8 * const s0                         \
                            |NN const U8 * const e
-AnidR  |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0                 \
+ATidR  |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0                 \
                                    |NN const U8 * const e
-AnidR  |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0              \
+ATidR  |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0              \
                                       |NN const U8 * const e
-AnmdpR |bool   |is_utf8_string |NN const U8 *s|STRLEN len
-AnidR  |bool   |is_utf8_string_flags                                       \
+ATmdpR |bool   |is_utf8_string |NN const U8 *s|STRLEN len
+ATidR  |bool   |is_utf8_string_flags                                       \
                |NN const U8 *s|STRLEN len|const U32 flags
-AnmdpR |bool   |is_strict_utf8_string|NN const U8 *s|STRLEN len
-AnmdpR |bool   |is_c9strict_utf8_string|NN const U8 *s|STRLEN len
-Anpdmb |bool   |is_utf8_string_loc                                         \
+ATmdpR |bool   |is_strict_utf8_string|NN const U8 *s|STRLEN len
+ATmdpR |bool   |is_c9strict_utf8_string|NN const U8 *s|STRLEN len
+ATpdmb |bool   |is_utf8_string_loc                                         \
                |NN const U8 *s|const STRLEN len|NN const U8 **ep
-Andm   |bool   |is_utf8_string_loc_flags                                   \
+ATdm   |bool   |is_utf8_string_loc_flags                                   \
                |NN const U8 *s|STRLEN len|NN const U8 **ep                 \
                |const U32 flags
-Andm   |bool   |is_strict_utf8_string_loc                                  \
+ATdm   |bool   |is_strict_utf8_string_loc                                  \
                |NN const U8 *s|STRLEN len|NN const U8 **ep
-Andm   |bool   |is_c9strict_utf8_string_loc                                \
+ATdm   |bool   |is_c9strict_utf8_string_loc                                \
                |NN const U8 *s|STRLEN len|NN const U8 **ep
-Anipd  |bool   |is_utf8_string_loclen                                      \
+ATipd  |bool   |is_utf8_string_loclen                                      \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep             \
                |NULLOK STRLEN *el
-Anid   |bool   |is_utf8_string_loclen_flags                                \
+ATid   |bool   |is_utf8_string_loclen_flags                                \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep             \
                |NULLOK STRLEN *el|const U32 flags
-Anid   |bool   |is_strict_utf8_string_loclen                               \
+ATid   |bool   |is_strict_utf8_string_loclen                               \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep     \
                |NULLOK STRLEN *el
-Anid   |bool   |is_c9strict_utf8_string_loclen                             \
+ATid   |bool   |is_c9strict_utf8_string_loclen                             \
                |NN const U8 *s|STRLEN len|NULLOK const U8 **ep     \
                |NULLOK STRLEN *el
-Amnd   |bool   |is_utf8_fixed_width_buf_flags                              \
+AmTd   |bool   |is_utf8_fixed_width_buf_flags                              \
                |NN const U8 * const s|STRLEN len|const U32 flags
-Amnd   |bool   |is_utf8_fixed_width_buf_loc_flags                          \
+AmTd   |bool   |is_utf8_fixed_width_buf_loc_flags                          \
                |NN const U8 * const s|STRLEN len                           \
                |NULLOK const U8 **ep|const U32 flags
-Anid   |bool   |is_utf8_fixed_width_buf_loclen_flags                       \
+ATid   |bool   |is_utf8_fixed_width_buf_loclen_flags                       \
                |NN const U8 * const s|STRLEN len                           \
                |NULLOK const U8 **ep|NULLOK STRLEN *el|const U32 flags
-AmndP  |bool   |is_utf8_valid_partial_char                                 \
+AmTdP  |bool   |is_utf8_valid_partial_char                                 \
                |NN const U8 * const s|NN const U8 * const e
-AnidR  |bool   |is_utf8_valid_partial_char_flags                           \
+ATidR  |bool   |is_utf8_valid_partial_char_flags                           \
                |NN const U8 * const s|NN const U8 * const e|const U32 flags
-AMpR   |bool   |_is_uni_FOO|const U8 classnum|const UV c
-AMpR   |bool   |_is_utf8_FOO|U8 classnum|NN const U8 * const p             \
+AxpR   |bool   |_is_uni_FOO|const U8 classnum|const UV c
+AxpR   |bool   |_is_utf8_FOO|U8 classnum|NN const U8 * const p             \
                |NN const char * const name                                 \
                |NN const char * const alternative                          \
                |const bool use_utf8|const bool use_locale                  \
                |NN const char * const file|const unsigned line
-AMpR   |bool   |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p     \
+AxpR   |bool   |_is_utf8_FOO_with_len|const U8 classnum|NN const U8 *p     \
                |NN const U8 * const e
-AbDMpR |bool   |is_utf8_alnum  |NN const U8 *p
-AbDMpR |bool   |is_utf8_alnumc |NN const U8 *p
-AbDMpR |bool   |is_utf8_idfirst|NN const U8 *p
-AbDMpR |bool   |is_utf8_xidfirst|NN const U8 *p
-AMpR   |bool   |_is_utf8_idcont|NN const U8 *p
-AMpR   |bool   |_is_utf8_idstart|NN const U8 *p
-AMpR   |bool   |_is_utf8_xidcont|NN const U8 *p
-AMpR   |bool   |_is_utf8_xidstart|NN const U8 *p
-AMpR   |bool   |_is_utf8_perl_idcont_with_len|NN const U8 *p               \
+AbDxpR |bool   |is_utf8_alnum  |NN const U8 *p
+AbDxpR |bool   |is_utf8_alnumc |NN const U8 *p
+AbDxpR |bool   |is_utf8_idfirst|NN const U8 *p
+AbDxpR |bool   |is_utf8_xidfirst|NN const U8 *p
+AxpR   |bool   |_is_utf8_idcont|NN const U8 *p
+AxpR   |bool   |_is_utf8_idstart|NN const U8 *p
+AxpR   |bool   |_is_utf8_xidcont|NN const U8 *p
+AxpR   |bool   |_is_utf8_xidstart|NN const U8 *p
+AxpR   |bool   |_is_utf8_perl_idcont_with_len|NN const U8 *p               \
                |NN const U8 * const e
-AMpR   |bool   |_is_utf8_perl_idstart_with_len|NN const U8 *p              \
+AxpR   |bool   |_is_utf8_perl_idstart_with_len|NN const U8 *p              \
                |NN const U8 * const e
-AbDMpR |bool   |is_utf8_idcont |NN const U8 *p
-AbDMpR |bool   |is_utf8_xidcont        |NN const U8 *p
-AbDMpR |bool   |is_utf8_alpha  |NN const U8 *p
-AbDMpR |bool   |is_utf8_ascii  |NN const U8 *p
-AbDMpR |bool   |is_utf8_blank  |NN const U8 *p
-AbDMpR |bool   |is_utf8_space  |NN const U8 *p
-AbDMpR |bool   |is_utf8_perl_space     |NN const U8 *p
-AbDMpR |bool   |is_utf8_perl_word      |NN const U8 *p
-AbDMpR |bool   |is_utf8_cntrl  |NN const U8 *p
-AbDMpR |bool   |is_utf8_digit  |NN const U8 *p
-AbDMpR |bool   |is_utf8_posix_digit    |NN const U8 *p
-AbDMpR |bool   |is_utf8_graph  |NN const U8 *p
-AbDMpR |bool   |is_utf8_upper  |NN const U8 *p
-AbDMpR |bool   |is_utf8_lower  |NN const U8 *p
-AbDMpR |bool   |is_utf8_print  |NN const U8 *p
-AbDMpR |bool   |is_utf8_punct  |NN const U8 *p
-AbDMpR |bool   |is_utf8_xdigit |NN const U8 *p
-AMpR   |bool   |_is_utf8_mark  |NN const U8 *p
-AbDMpR |bool   |is_utf8_mark   |NN const U8 *p
+AbDxpR |bool   |is_utf8_idcont |NN const U8 *p
+AbDxpR |bool   |is_utf8_xidcont        |NN const U8 *p
+AbDxpR |bool   |is_utf8_alpha  |NN const U8 *p
+AbDxpR |bool   |is_utf8_ascii  |NN const U8 *p
+AbDxpR |bool   |is_utf8_blank  |NN const U8 *p
+AbDxpR |bool   |is_utf8_space  |NN const U8 *p
+AbDxpR |bool   |is_utf8_perl_space     |NN const U8 *p
+AbDxpR |bool   |is_utf8_perl_word      |NN const U8 *p
+AbDxpR |bool   |is_utf8_cntrl  |NN const U8 *p
+AbDxpR |bool   |is_utf8_digit  |NN const U8 *p
+AbDxpR |bool   |is_utf8_posix_digit    |NN const U8 *p
+AbDxpR |bool   |is_utf8_graph  |NN const U8 *p
+AbDxpR |bool   |is_utf8_upper  |NN const U8 *p
+AbDxpR |bool   |is_utf8_lower  |NN const U8 *p
+AbDxpR |bool   |is_utf8_print  |NN const U8 *p
+AbDxpR |bool   |is_utf8_punct  |NN const U8 *p
+AbDxpR |bool   |is_utf8_xdigit |NN const U8 *p
+AxpR   |bool   |_is_utf8_mark  |NN const U8 *p
+AbDxpR |bool   |is_utf8_mark   |NN const U8 *p
 #if defined(PERL_CORE) || defined(PERL_EXT)
 EXdpR  |bool   |isSCRIPT_RUN   |NN const U8 *s|NN const U8 *send   \
                                |const bool utf8_target
@@ -917,45 +984,45 @@ p |OP*    |jmaybe         |NN OP *o
 : Used in pp.c 
 pP     |I32    |keyword        |NN const char *name|I32 len|bool all_keywords
 #if defined(PERL_IN_OP_C)
-s      |void   |inplace_aassign        |NN OP* o
+S      |void   |inplace_aassign        |NN OP* o
 #endif
 Ap     |void   |leave_scope    |I32 base
 p      |void   |notify_parser_that_changed_to_utf8
 : Public lexer API
-AMpd   |void   |lex_start      |NULLOK SV* line|NULLOK PerlIO *rsfp|U32 flags
-AMpd   |bool   |lex_bufutf8
-AMpd   |char*  |lex_grow_linestr|STRLEN len
-AMpd   |void   |lex_stuff_pvn  |NN const char* pv|STRLEN len|U32 flags
-AMpd   |void   |lex_stuff_pv   |NN const char* pv|U32 flags
-AMpd   |void   |lex_stuff_sv   |NN SV* sv|U32 flags
-AMpd   |void   |lex_unstuff    |NN char* ptr
-AMpd   |void   |lex_read_to    |NN char* ptr
-AMpd   |void   |lex_discard_to |NN char* ptr
-AMpd   |bool   |lex_next_chunk |U32 flags
-AMpd   |I32    |lex_peek_unichar|U32 flags
-AMpd   |I32    |lex_read_unichar|U32 flags
-AMpd   |void   |lex_read_space |U32 flags
+Axpd   |void   |lex_start      |NULLOK SV* line|NULLOK PerlIO *rsfp|U32 flags
+Axpd   |bool   |lex_bufutf8
+Axpd   |char*  |lex_grow_linestr|STRLEN len
+Axpd   |void   |lex_stuff_pvn  |NN const char* pv|STRLEN len|U32 flags
+Axpd   |void   |lex_stuff_pv   |NN const char* pv|U32 flags
+Axpd   |void   |lex_stuff_sv   |NN SV* sv|U32 flags
+Axpd   |void   |lex_unstuff    |NN char* ptr
+Axpd   |void   |lex_read_to    |NN char* ptr
+Axpd   |void   |lex_discard_to |NN char* ptr
+Axpd   |bool   |lex_next_chunk |U32 flags
+Axpd   |I32    |lex_peek_unichar|U32 flags
+Axpd   |I32    |lex_read_unichar|U32 flags
+Axpd   |void   |lex_read_space |U32 flags
 : Public parser API
-AMpd   |OP*    |parse_arithexpr|U32 flags
-AMpd   |OP*    |parse_termexpr |U32 flags
-AMpd   |OP*    |parse_listexpr |U32 flags
-AMpd   |OP*    |parse_fullexpr |U32 flags
-AMpd   |OP*    |parse_block    |U32 flags
-AMpd   |OP*    |parse_barestmt |U32 flags
-AMpd   |SV*    |parse_label    |U32 flags
-AMpd   |OP*    |parse_fullstmt |U32 flags
-AMpd   |OP*    |parse_stmtseq  |U32 flags
+Axpd   |OP*    |parse_arithexpr|U32 flags
+Axpd   |OP*    |parse_termexpr |U32 flags
+Axpd   |OP*    |parse_listexpr |U32 flags
+Axpd   |OP*    |parse_fullexpr |U32 flags
+Axpd   |OP*    |parse_block    |U32 flags
+Axpd   |OP*    |parse_barestmt |U32 flags
+Axpd   |SV*    |parse_label    |U32 flags
+Axpd   |OP*    |parse_fullstmt |U32 flags
+Axpd   |OP*    |parse_stmtseq  |U32 flags
 : Used in various files
 Apd    |void   |op_null        |NN OP* o
 : FIXME. Used by Data::Alias
 EXp    |void   |op_clear       |NN OP* o
 Ap     |void   |op_refcnt_lock
 Ap     |void   |op_refcnt_unlock
-Apdn   |OP*    |op_sibling_splice|NULLOK OP *parent|NULLOK OP *start \
+ApdT   |OP*    |op_sibling_splice|NULLOK OP *parent|NULLOK OP *start \
                |int del_count|NULLOK OP* insert
-Apdn   |OP*    |op_parent|NN OP *o
+ApdT   |OP*    |op_parent|NN OP *o
 #if defined(PERL_IN_OP_C)
-s      |OP*    |listkids       |NULLOK OP* o
+S      |OP*    |listkids       |NULLOK OP* o
 #endif
 p      |OP*    |list           |NULLOK OP* o
 Apd    |void   |load_module|U32 flags|NN SV* name|NULLOK SV* ver|...
@@ -965,7 +1032,7 @@ p  |OP*    |localize       |NN OP *o|I32 lex
 ApdR   |I32    |looks_like_number|NN SV *const sv
 Apd    |UV     |grok_bin       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_DQUOTE_C)
-EMpRX  |bool   |grok_bslash_x  |NN char** s             \
+ExpRX  |bool   |grok_bslash_x  |NN char** s             \
                                |NN const char* const send       \
                                |NN UV* uv                       \
                                |NN const char** error_msg       \
@@ -973,8 +1040,8 @@ EMpRX      |bool   |grok_bslash_x  |NN char** s             \
                                |const bool strict               \
                                |const bool silence_non_portable \
                                |const bool utf8
-EMpRX  |char   |grok_bslash_c  |const char source|const bool output_warning
-EMpRX  |bool   |grok_bslash_o  |NN char** s             \
+ExpRX  |char   |grok_bslash_c  |const char source|const bool output_warning
+ExpRX  |bool   |grok_bslash_o  |NN char** s             \
                                |NN const char* const send       \
                                |NN UV* uv                       \
                                |NN const char** error_msg       \
@@ -982,9 +1049,9 @@ EMpRX      |bool   |grok_bslash_o  |NN char** s             \
                                |const bool strict               \
                                |const bool silence_non_portable \
                                |const bool utf8
-EMiR   |char*|form_short_octal_warning|NN const char * const s  \
+ExiR   |char*|form_short_octal_warning|NN const char * const s  \
                                |const STRLEN len
-EiRn   |I32    |regcurly       |NN const char *s
+EiRT   |I32    |regcurly       |NN const char *s
 #endif
 Apd    |UV     |grok_hex       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
 Apd    |int    |grok_infnan    |NN const char** sp|NN const char *send
@@ -992,7 +1059,7 @@ Apd        |int    |grok_number    |NN const char *pv|STRLEN len|NULLOK UV *valuep
 Apd    |int    |grok_number_flags|NN const char *pv|STRLEN len|NULLOK UV *valuep|U32 flags
 ApdR   |bool   |grok_numeric_radix|NN const char **sp|NN const char *send
 Apd    |UV     |grok_oct       |NN const char* start|NN STRLEN* len_p|NN I32* flags|NULLOK NV *result
-EXpn   |bool   |grok_atoUV     |NN const char* pv|NN UV* valptr|NULLOK const char** endptr
+EXpT   |bool   |grok_atoUV     |NN const char* pv|NN UV* valptr|NULLOK const char** endptr
 : These are all indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_clearenv |NN SV* sv|NN MAGIC* mg
 p      |int    |magic_clear_all_env|NN SV* sv|NN MAGIC* mg
@@ -1063,7 +1130,7 @@ p |int    |magic_setcollxfrm|NN SV* sv|NN MAGIC* mg
 pb     |char*  |mem_collxfrm   |NN const char* input_string|STRLEN len|NN STRLEN* xlen
 : Defined in locale.c, used only in sv.c
 #   if defined(PERL_IN_LOCALE_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_MATHOMS_C)
-pM     |char*  |_mem_collxfrm  |NN const char* input_string    \
+px     |char*  |_mem_collxfrm  |NN const char* input_string    \
                                |STRLEN len                     \
                                |NN STRLEN* xlen                \
                                |bool utf8
@@ -1083,8 +1150,8 @@ Apd       |int    |mg_copy        |NN SV *sv|NN SV *nsv|NULLOK const char *key \
 : Defined in mg.c, used only in scope.c
 pd     |void   |mg_localize    |NN SV* sv|NN SV* nsv|bool setmagic
 Apd    |SV*    |sv_string_from_errnum|int errnum|NULLOK SV* tgtsv
-ApdRn  |MAGIC* |mg_find        |NULLOK const SV* sv|int type
-ApdRn  |MAGIC* |mg_findext     |NULLOK const SV* sv|int type|NULLOK const MGVTBL *vtbl
+ApdRT  |MAGIC* |mg_find        |NULLOK const SV* sv|int type
+ApdRT  |MAGIC* |mg_findext     |NULLOK const SV* sv|int type|NULLOK const MGVTBL *vtbl
 : exported for re.pm
 EXpR   |MAGIC* |mg_find_mglob  |NN SV* sv
 Apd    |int    |mg_free        |NN SV* sv
@@ -1092,35 +1159,35 @@ Apd     |void   |mg_free_type   |NN SV* sv|int how
 Apd    |void   |mg_freeext     |NN SV* sv|int how|NULLOK const MGVTBL *vtbl
 Apd    |int    |mg_get         |NN SV* sv
 ApdD   |U32    |mg_length      |NN SV* sv
-Apdn   |void   |mg_magical     |NN SV* sv
+ApdT   |void   |mg_magical     |NN SV* sv
 Apd    |int    |mg_set         |NN SV* sv
 Ap     |I32    |mg_size        |NN SV* sv
-Apn    |void   |mini_mktime    |NN struct tm *ptm
-AMmd   |OP*    |op_lvalue      |NULLOK OP* o|I32 type
+ApT    |void   |mini_mktime    |NN struct tm *ptm
+Axmd   |OP*    |op_lvalue      |NULLOK OP* o|I32 type
 poX    |OP*    |op_lvalue_flags|NULLOK OP* o|I32 type|U32 flags
 p      |void   |finalize_optree                |NN OP* o
 p      |void   |optimize_optree|NN OP* o
 #if defined(PERL_IN_OP_C)
-s      |void   |optimize_op    |NN OP* o
-s      |void   |finalize_op    |NN OP* o
-s      |void   |move_proto_attr|NN OP **proto|NN OP **attrs \
+S      |void   |optimize_op    |NN OP* o
+S      |void   |finalize_op    |NN OP* o
+S      |void   |move_proto_attr|NN OP **proto|NN OP **attrs \
                                |NN const GV *name|bool curstash
 #endif
 : Used in op.c and pp_sys.c
 p      |int    |mode_from_discipline|NULLOK const char* s|STRLEN len
 Ap     |const char*    |moreswitches   |NN const char* s
 Ap     |NV     |my_atof        |NN const char *s
-AnpR   |NV     |my_strtod      |NN const char * const s|NULLOK char ** e
+ATpR   |NV     |my_strtod      |NN const char * const s|NULLOK char ** e
 Apr    |void   |my_exit        |U32 status
 Apr    |void   |my_failure_exit
 Ap     |I32    |my_fflush_all
-Anp    |Pid_t  |my_fork
-Anp    |void   |atfork_lock
-Anp    |void   |atfork_unlock
+ATp    |Pid_t  |my_fork
+ATp    |void   |atfork_lock
+ATp    |void   |atfork_unlock
 Apmb   |I32    |my_lstat
 pX     |I32    |my_lstat_flags |NULLOK const U32 flags
 #if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))
-Exin   |void * |my_memrchr     |NN const char * s|const char c|const STRLEN len
+EeiT   |void * |my_memrchr     |NN const char * s|const char c|const STRLEN len
 #endif
 #if !defined(PERL_IMPLICIT_SYS)
 Ap     |I32    |my_pclose      |NULLOK PerlIO* ptr
@@ -1133,8 +1200,8 @@ pX        |I32    |my_stat_flags  |NULLOK const U32 flags
 Afp    |char * |my_strftime    |NN const char *fmt|int sec|int min|int hour|int mday|int mon|int year|int wday|int yday|int isdst
 : Used in pp_ctl.c
 p      |void   |my_unexec
-AbDMnPR        |UV     |NATIVE_TO_NEED |const UV enc|const UV ch
-AbDMnPR        |UV     |ASCII_TO_NEED  |const UV enc|const UV ch
+AbDxTPR        |UV     |NATIVE_TO_NEED |const UV enc|const UV ch
+AbDxTPR        |UV     |ASCII_TO_NEED  |const UV enc|const UV ch
 ApR    |OP*    |newANONLIST    |NULLOK OP* o
 ApR    |OP*    |newANONHASH    |NULLOK OP* o
 Ap     |OP*    |newANONSUB     |I32 floor|NULLOK OP* proto|NULLOK OP* block
@@ -1148,7 +1215,7 @@ Ap        |void   |newFORM        |I32 floor|NULLOK OP* o|NULLOK OP* block
 ApdR   |OP*    |newFOROP       |I32 flags|NULLOK OP* sv|NN OP* expr|NULLOK OP* block|NULLOK OP* cont
 ApdR   |OP*    |newGIVENOP     |NN OP* cond|NN OP* block|PADOFFSET defsv_off
 ApdR   |OP*    |newLOGOP       |I32 optype|I32 flags|NN OP *first|NN OP *other
-pM     |LOGOP* |alloc_LOGOP    |I32 type|NULLOK OP *first|NULLOK OP *other
+px     |LOGOP* |alloc_LOGOP    |I32 type|NULLOK OP *first|NULLOK OP *other
 ApdR   |OP*    |newLOOPEX      |I32 type|NN OP* label
 ApdR   |OP*    |newLOOPOP      |I32 flags|I32 debuggable|NULLOK OP* expr|NULLOK OP* block
 ApdR   |OP*    |newNULLLIST
@@ -1165,10 +1232,10 @@ pd      |CV *   |newXS_len_flags|NULLOK const char *name|STRLEN len \
                                |NULLOK const char *const proto \
                                |NULLOK SV **const_svp|U32 flags
 pX     |CV *   |newXS_deffile  |NN const char *name|NN XSUBADDR_t subaddr
-ApM    |CV *   |newXS_flags    |NULLOK const char *name|NN XSUBADDR_t subaddr\
+Apx    |CV *   |newXS_flags    |NULLOK const char *name|NN XSUBADDR_t subaddr\
                                |NN const char *const filename \
                                |NULLOK const char *const proto|U32 flags
-Apd    |CV*    |newXS          |NULLOK const char *name|NN XSUBADDR_t subaddr\
+ApdU   |CV*    |newXS          |NULLOK const char *name|NN XSUBADDR_t subaddr\
                                |NN const char *filename
 ApmdbR |AV*    |newAV
 ApR    |OP*    |newAVREF       |NN OP* o
@@ -1183,9 +1250,9 @@ ApmdbR    |HV*    |newHV
 ApR    |HV*    |newHVhv        |NULLOK HV *hv
 ApRbm  |IO*    |newIO
 ApdR   |OP*    |newLISTOP      |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last
-AMpdRn |PADNAME *|newPADNAMEouter|NN PADNAME *outer
-AMpdRn |PADNAME *|newPADNAMEpvn|NN const char *s|STRLEN len
-AMpdRn |PADNAMELIST *|newPADNAMELIST|size_t max
+AxpdRT |PADNAME *|newPADNAMEouter|NN PADNAME *outer
+AxpdRT |PADNAME *|newPADNAMEpvn|NN const char *s|STRLEN len
+AxpdRT |PADNAMELIST *|newPADNAMELIST|size_t max
 #ifdef USE_ITHREADS
 ApdR   |OP*    |newPADOP       |I32 type|I32 flags|NN SV* sv
 #endif
@@ -1236,7 +1303,7 @@ Apd       |void   |cv_set_call_checker_flags|NN CV *cv \
                                          |NN Perl_call_checker ckfun \
                                          |NN SV *ckobj|U32 ckflags
 Apd    |void   |wrap_op_checker|Optype opcode|NN Perl_check_t new_checker|NN Perl_check_t *old_checker_p
-AMpd   |void   |wrap_keyword_plugin|NN Perl_keyword_plugin_t new_plugin|NN Perl_keyword_plugin_t *old_plugin_p
+Axpd   |void   |wrap_keyword_plugin|NN Perl_keyword_plugin_t new_plugin|NN Perl_keyword_plugin_t *old_plugin_p
 ApR    |PERL_SI*|new_stackinfo|I32 stitems|I32 cxitems
 Ap     |char*  |scan_vstring   |NN const char *s|NN const char *const e \
                                |NN SV *sv
@@ -1253,15 +1320,10 @@ Apd     |SV*    |vstringify     |NN SV *vs
 Apd    |int    |vcmp           |NN SV *lhv|NN SV *rhv
 : Used in pp_hot.c and pp_sys.c
 p      |PerlIO*|nextargv       |NN GV* gv|bool nomagicopen
-#ifdef HAS_MEMMEM
-AdnopP |char*  |ninstr         |NN const char* big|NN const char* bigend \
-                               |NN const char* little|NN const char* lend
-#else
-AdnpP  |char*  |ninstr         |NN const char* big|NN const char* bigend \
+AdMTpP |char*  |ninstr         |NN const char* big|NN const char* bigend \
                                |NN const char* little|NN const char* lend
-#endif
 Apd    |void   |op_free        |NULLOK OP* arg
-Mp     |OP*    |op_unscope     |NULLOK OP* o
+xp     |OP*    |op_unscope     |NULLOK OP* o
 #ifdef PERL_CORE
 p      |void   |opslab_free    |NN OPSLAB *slab
 p      |void   |opslab_free_nopad|NN OPSLAB *slab
@@ -1275,7 +1337,7 @@ p |void   |package_version|NN OP* v
 p      |PADOFFSET|allocmy      |NN const char *const name|const STRLEN len\
                                |const U32 flags
 #ifdef USE_ITHREADS
-AMp    |PADOFFSET|alloccopstash|NN HV *hv
+Axp    |PADOFFSET|alloccopstash|NN HV *hv
 #endif
 : Used in perly.y
 pR     |OP*    |oopsAV         |NN OP* o
@@ -1286,12 +1348,12 @@ pR      |OP*    |oopsHV         |NN OP* o
 p      |void   |peep           |NULLOK OP* o
 p      |void   |rpeep          |NULLOK OP* o
 : Defined in doio.c, used only in pp_hot.c
-dopM   |PerlIO*|start_glob     |NN SV *tmpglob|NN IO *io
+dopx   |PerlIO*|start_glob     |NN SV *tmpglob|NN IO *io
 
 Ap     |void   |reentrant_size
 Ap     |void   |reentrant_init
 Ap     |void   |reentrant_free
-Anp    |void*  |reentrant_retry|NN const char *f|...
+ATp    |void*  |reentrant_retry|NN const char *f|...
 
 : "Very" special - can't use the O flag for this one:
 : (The rename from perl_atexit to Perl_call_atexit was in 864dbfa3ca8032ef)
@@ -1309,46 +1371,46 @@ ApdO    |AV*    |get_av         |NN const char *name|I32 flags
 ApdO   |HV*    |get_hv         |NN const char *name|I32 flags
 ApdO   |CV*    |get_cv         |NN const char* name|I32 flags
 Apd    |CV*    |get_cvn_flags  |NN const char* name|STRLEN len|I32 flags
-Ando   |const char*|Perl_setlocale|const int category|NULLOK const char* locale
+ATdo   |const char*|Perl_setlocale|const int category|NULLOK const char* locale
 #if defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H)
-Ando   |const char*|Perl_langinfo|const nl_item item
+ATdo   |const char*|Perl_langinfo|const nl_item item
 #else
-Ando   |const char*|Perl_langinfo|const int item
+ATdo   |const char*|Perl_langinfo|const int item
 #endif
-ApOM   |int    |init_i18nl10n  |int printwarn
-AbpOM  |int    |init_i18nl14n  |int printwarn
+ApOx   |int    |init_i18nl10n  |int printwarn
+AbpOx  |int    |init_i18nl14n  |int printwarn
 p      |char*  |my_strerror    |const int errnum
-Xpn    |void   |_warn_problematic_locale
+XpT    |void   |_warn_problematic_locale
 Xp     |void   |set_numeric_underlying
 Xp     |void   |set_numeric_standard
 Xp     |bool   |_is_in_locale_category|const bool compiling|const int category
-Apdn   |void   |switch_to_global_locale
-Apdn   |bool   |sync_locale
-ApMn   |void   |thread_locale_init
-ApMn   |void   |thread_locale_term
+ApdT   |void   |switch_to_global_locale
+ApdT   |bool   |sync_locale
+ApxT   |void   |thread_locale_init
+ApxT   |void   |thread_locale_term
 ApdO   |void   |require_pv     |NN const char* pv
 Abpd   |void   |pack_cat       |NN SV *cat|NN const char *pat|NN const char *patend \
                                |NN SV **beglist|NN SV **endlist|NN SV ***next_in_list|U32 flags
 Apd    |void   |packlist       |NN SV *cat|NN const char *pat|NN const char *patend|NN SV **beglist|NN SV **endlist
 #if defined(PERL_USES_PL_PIDSTATUS) && defined(PERL_IN_UTIL_C)
-s      |void   |pidgone        |Pid_t pid|int status
+S      |void   |pidgone        |Pid_t pid|int status
 #endif
 : Used in perly.y
 p      |OP*    |pmruntime      |NN OP *o|NN OP *expr|NULLOK OP *repl \
                                |UV flags|I32 floor
 #if defined(PERL_IN_OP_C)
-s      |OP*    |pmtrans        |NN OP* o|NN OP* expr|NN OP* repl
+S      |OP*    |pmtrans        |NN OP* o|NN OP* expr|NN OP* repl
 #endif
 Ap     |void   |pop_scope
 Ap     |void   |push_scope
 Apmb   |OP*    |ref            |NULLOK OP* o|I32 type
 #if defined(PERL_IN_OP_C)
-s      |OP*    |refkids        |NULLOK OP* o|I32 type
+S      |OP*    |refkids        |NULLOK OP* o|I32 type
 #endif
 Ap     |void   |regdump        |NN const regexp* r
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C)
 EXpR   |SV*    |_new_invlist_C_array|NN const UV* const list
-EXMp   |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
+EXxp   |bool   |_invlistEQ     |NN SV* const a|NN SV* const b|const bool complement_b
 #endif
 Ap     |I32    |pregexec       |NN REGEXP * const prog|NN char* stringarg \
                                |NN char* strend|NN char* strbeg \
@@ -1404,8 +1466,8 @@ EXp       |I32|reg_numbered_buff_length|NN REGEXP * const rx|NN const SV * const sv|co
 : FIXME - is anything in re using this now?
 EXp    |SV*|reg_qr_package|NN REGEXP * const rx
 
-Anp    |void   |repeatcpy      |NN char* to|NN const char* from|I32 len|IV count
-AdnpP  |char*  |rninstr        |NN const char* big|NN const char* bigend \
+ATp    |void   |repeatcpy      |NN char* to|NN const char* from|I32 len|IV count
+AdTpP  |char*  |rninstr        |NN const char* big|NN const char* bigend \
                                |NN const char* little|NN const char* lend
 Ap     |Sighandler_t|rsignal   |int i|Sighandler_t t
 : Used in pp_sys.c
@@ -1414,8 +1476,8 @@ p |int    |rsignal_restore|int i|NULLOK Sigsave_t* t
 p      |int    |rsignal_save   |int i|Sighandler_t t1|NN Sigsave_t* save
 Ap     |Sighandler_t|rsignal_state|int i
 #if defined(PERL_IN_PP_CTL_C)
-s      |void   |rxres_free     |NN void** rsp
-s      |void   |rxres_restore  |NN void **rsp|NN REGEXP *rx
+S      |void   |rxres_free     |NN void** rsp
+S      |void   |rxres_restore  |NN void **rsp|NN REGEXP *rx
 #endif
 : Used in pp_hot.c
 p      |void   |rxres_save     |NN void **rsp|NN REGEXP *rx
@@ -1480,14 +1542,14 @@ Ap      |void   |save_padsv_and_mortalize|PADOFFSET off
 Ap     |void   |save_sptr      |NN SV** sptr
 Xp     |void   |save_strlen    |NN STRLEN* ptr
 Ap     |SV*    |save_svref     |NN SV** sptr
-AMpo   |void   |savetmps
+Axpo   |void   |savetmps
 Ap     |void   |save_pushptr   |NULLOK void *const ptr|const int type
 Ap     |void   |save_pushi32ptr|const I32 i|NULLOK void *const ptr|const int type
 : Used by SAVESWITCHSTACK() in pp.c
 Ap     |void   |save_pushptrptr|NULLOK void *const ptr1 \
                                |NULLOK void *const ptr2|const int type
 #if defined(PERL_IN_SCOPE_C)
-s      |void   |save_pushptri32ptr|NULLOK void *const ptr1|const I32 i \
+S      |void   |save_pushptri32ptr|NULLOK void *const ptr1|const I32 i \
                                |NULLOK void *const ptr2|const int type
 #endif
 : Used in perly.y
@@ -1496,8 +1558,8 @@ Apd       |OP*    |op_contextualize|NN OP* o|I32 context
 : Used in perly.y
 p      |OP*    |scalar         |NULLOK OP* o
 #if defined(PERL_IN_OP_C)
-s      |OP*    |scalarkids     |NULLOK OP* o
-s      |OP*    |scalarseq      |NULLOK OP* o
+S      |OP*    |scalarkids     |NULLOK OP* o
+S      |OP*    |scalarseq      |NULLOK OP* o
 #endif
 : Used in pp_ctl.c
 p      |OP*    |scalarvoid     |NN OP* o
@@ -1505,18 +1567,18 @@ Apd     |NV     |scan_bin       |NN const char* start|STRLEN len|NN STRLEN* retlen
 Apd    |NV     |scan_hex       |NN const char* start|STRLEN len|NN STRLEN* retlen
 Ap     |char*  |scan_num       |NN const char* s|NN YYSTYPE *lvalp
 Apd    |NV     |scan_oct       |NN const char* start|STRLEN len|NN STRLEN* retlen
-AMpd   |OP*    |op_scope       |NULLOK OP* o
+Axpd   |OP*    |op_scope       |NULLOK OP* o
 : Only used by perl.c/miniperl.c, but defined in caretx.c
-px     |void   |set_caret_X
+pe     |void   |set_caret_X
 Apd    |void   |setdefout      |NN GV* gv
 Ap     |HEK*   |share_hek      |NN const char* str|SSize_t len|U32 hash
 #if defined(HAS_SIGACTION) && defined(SA_SIGINFO)
 : Used in perl.c
-np     |Signal_t |sighandler   |int sig|NULLOK siginfo_t *info|NULLOK void *uap
-Anp    |Signal_t |csighandler  |int sig|NULLOK siginfo_t *info|NULLOK void *uap
+Tp     |Signal_t |sighandler   |int sig|NULLOK siginfo_t *info|NULLOK void *uap
+ATp    |Signal_t |csighandler  |int sig|NULLOK siginfo_t *info|NULLOK void *uap
 #else
-np     |Signal_t |sighandler   |int sig
-Anp    |Signal_t |csighandler  |int sig
+Tp     |Signal_t |sighandler   |int sig
+ATp    |Signal_t |csighandler  |int sig
 #endif
 Ap     |SV**   |stack_grow     |NN SV** sp|NN SV** p|SSize_t n
 Ap     |I32    |start_subparse |I32 is_format|U32 flags
@@ -1529,14 +1591,14 @@ Apd     |CV*    |sv_2cv         |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \
                                |const I32 lref
 Apd    |IO*    |sv_2io         |NN SV *const sv
 #if defined(PERL_IN_SV_C)
-s      |bool   |glob_2number   |NN GV* const gv
+S      |bool   |glob_2number   |NN GV* const gv
 #endif
 Apmb   |IV     |sv_2iv         |NN SV *sv
 Apd    |IV     |sv_2iv_flags   |NN SV *const sv|const I32 flags
 Apd    |SV*    |sv_2mortal     |NULLOK SV *const sv
 Apd    |NV     |sv_2nv_flags   |NN SV *const sv|const I32 flags
 : Used in pp.c, pp_hot.c, sv.c
-pMd    |SV*    |sv_2num        |NN SV *const sv
+pxd    |SV*    |sv_2num        |NN SV *const sv
 Apmb   |char*  |sv_2pv         |NN SV *sv|NULLOK STRLEN *lp
 Apd    |char*  |sv_2pv_flags   |NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
 Apd    |char*  |sv_2pvutf8     |NN SV *sv|NULLOK STRLEN *const lp
@@ -1552,15 +1614,15 @@ Abpd    |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
 Abpd   |char*  |sv_pvbyten     |NN SV *sv|NN STRLEN *lp
 Apd    |I32    |sv_true        |NULLOK SV *const sv
 #if defined(PERL_IN_SV_C)
-sd     |void   |sv_add_arena   |NN char *const ptr|const U32 size \
+Sd     |void   |sv_add_arena   |NN char *const ptr|const U32 size \
                                |const U32 flags
 #endif
-Apdn   |void   |sv_backoff     |NN SV *const sv
+ApdT   |void   |sv_backoff     |NN SV *const sv
 Apd    |SV*    |sv_bless       |NN SV *const sv|NN HV *const stash
 #if defined(PERL_DEBUG_READONLY_COW)
 p      |void   |sv_buf_to_ro   |NN SV *sv
 # if defined(PERL_IN_SV_C)
-s      |void   |sv_buf_to_rw   |NN SV *sv
+S      |void   |sv_buf_to_rw   |NN SV *sv
 # endif
 #endif
 Afpd   |void   |sv_catpvf      |NN SV *const sv|NN const char *const pat|...
@@ -1576,12 +1638,12 @@ pd      |I32    |sv_clean_all
 pd     |void   |sv_clean_objs
 Apd    |void   |sv_clear       |NN SV *const orig_sv
 #if defined(PERL_IN_SV_C)
-s      |bool   |curse          |NN SV * const sv|const bool check_refcnt
+S      |bool   |curse          |NN SV * const sv|const bool check_refcnt
 #endif
-Aopd   |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
+AMopd  |I32    |sv_cmp         |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_flags   |NULLOK SV *const sv1|NULLOK SV *const sv2 \
                                |const U32 flags
-Aopd   |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
+AMopd  |I32    |sv_cmp_locale  |NULLOK SV *const sv1|NULLOK SV *const sv2
 Apd    |I32    |sv_cmp_locale_flags    |NULLOK SV *const sv1 \
                                |NULLOK SV *const sv2|const U32 flags
 #if defined(USE_LOCALE_COLLATE)
@@ -1605,7 +1667,7 @@ ApdR      |bool   |sv_does_pvn    |NN SV* sv|NN const char *const name|const STRLEN len \
 Apbmd  |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
 Apd    |I32    |sv_eq_flags    |NULLOK SV* sv1|NULLOK SV* sv2|const U32 flags
 Apd    |void   |sv_free        |NULLOK SV *const sv
-poMX   |void   |sv_free2       |NN SV *const sv|const U32 refcnt
+poxX   |void   |sv_free2       |NN SV *const sv|const U32 refcnt
 : Used only in perl.c
 pd     |void   |sv_free_arenas
 Apd    |char*  |sv_gets        |NN SV *const sv|NN PerlIO *const fp|I32 append
@@ -1627,7 +1689,7 @@ Apd       |void   |sv_magic       |NN SV *const sv|NULLOK SV *const obj|const int how \
 Apd    |MAGIC *|sv_magicext    |NN SV *const sv|NULLOK SV *const obj|const int how \
                                |NULLOK const MGVTBL *const vtbl|NULLOK const char *const name \
                                |const I32 namlen
-Ein    |bool   |sv_only_taint_gmagic|NN SV *sv
+EiT    |bool   |sv_only_taint_gmagic|NN SV *sv
 : exported for re.pm
 EXp    |MAGIC *|sv_magicext_mglob|NN SV *sv
 ApdbmR |SV*    |sv_mortalcopy  |NULLOK SV *const oldsv
@@ -1693,64 +1755,64 @@ Apd     |void   |sv_vsetpvfn    |NN SV *const sv|NN const char *const pat|const STRLEN pa
                                |NULLOK va_list *const args|NULLOK SV **const svargs \
                                |const Size_t sv_count|NULLOK bool *const maybe_tainted
 ApR    |NV     |str_to_version |NN SV *sv
-EXpRM  |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none
-EXpM   |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
+EXpRx  |SV*    |swash_init     |NN const char* pkg|NN const char* name|NN SV* listsv|I32 minbits|I32 none
+EXpx   |UV     |swash_fetch    |NN SV *swash|NN const U8 *ptr|bool do_utf8
 #ifdef PERL_IN_REGCOMP_C
-EiMR   |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
-EiMRn  |bool   |invlist_is_iterating|NN SV* const invlist
+EixR   |SV*    |add_cp_to_invlist      |NULLOK SV* invlist|const UV cp
+EixRT  |bool   |invlist_is_iterating|NN SV* const invlist
 #ifndef PERL_EXT_RE_BUILD
-EiMRn  |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
-EiMRn  |UV     |invlist_max    |NN SV* const invlist
-EsM    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
-EsM    |void   |invlist_extend    |NN SV* const invlist|const UV len
-EsM    |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
-EiMRn  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
-EiM    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
-EiMn   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
-EiMRn  |IV     |invlist_previous_index|NN SV* const invlist
-EiMn   |void   |invlist_trim   |NN SV* invlist
-EiM    |void   |invlist_clear  |NN SV* invlist
-sM     |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
-#endif
-EiMRn  |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
-EiMn   |void   |invlist_iterinit|NN SV* invlist
-EsMRn  |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
-EiMn   |void   |invlist_iterfinish|NN SV* invlist
-EiMRn  |UV     |invlist_highest|NN SV* const invlist
-EMRs   |SV*    |_make_exactf_invlist   |NN RExC_state_t *pRExC_state \
+EixRT  |UV*    |_invlist_array_init    |NN SV* const invlist|const bool will_have_0
+EixRT  |UV     |invlist_max    |NN SV* const invlist
+ESx    |void   |_append_range_to_invlist   |NN SV* const invlist|const UV start|const UV end
+ESx    |void   |invlist_extend    |NN SV* const invlist|const UV len
+ESx    |void   |invlist_replace_list_destroys_src|NN SV *dest|NN SV *src
+EixRT  |IV*    |get_invlist_previous_index_addr|NN SV* invlist
+Eix    |void   |invlist_set_len|NN SV* const invlist|const UV len|const bool offset
+EixT   |void   |invlist_set_previous_index|NN SV* const invlist|const IV index
+EixRT  |IV     |invlist_previous_index|NN SV* const invlist
+EixT   |void   |invlist_trim   |NN SV* invlist
+Eix    |void   |invlist_clear  |NN SV* invlist
+Sx     |void   |initialize_invlist_guts|NN SV* invlist|const Size_t initial_size
+#endif
+EixRT  |STRLEN*|get_invlist_iter_addr  |NN SV* invlist
+EixT   |void   |invlist_iterinit|NN SV* invlist
+ESxRT  |bool   |invlist_iternext|NN SV* invlist|NN UV* start|NN UV* end
+EixT   |void   |invlist_iterfinish|NN SV* invlist
+EixRT  |UV     |invlist_highest|NN SV* const invlist
+ExRS   |SV*    |_make_exactf_invlist   |NN RExC_state_t *pRExC_state \
                                        |NN regnode *node
-EsMR   |SV*    |invlist_contents|NN SV* const invlist              \
+ESxR   |SV*    |invlist_contents|NN SV* const invlist              \
                                 |const bool traditional_style
-EsRn   |bool   |new_regcurly   |NN const char *s|NN const char *e
+ESRT   |bool   |new_regcurly   |NN const char *s|NN const char *e
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_UTF8_C)
-EXmM   |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
-EXpM   |void   |_invlist_intersection_maybe_complement_2nd \
+EXmx   |void   |_invlist_intersection  |NN SV* const a|NN SV* const b|NN SV** i
+EXpx   |void   |_invlist_intersection_maybe_complement_2nd \
                |NULLOK SV* const a|NN SV* const b          \
                |const bool complement_b|NN SV** i
-EXmM   |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
-EXpM   |void   |_invlist_union_maybe_complement_2nd        \
+EXmx   |void   |_invlist_union |NULLOK SV* const a|NN SV* const b|NN SV** output
+EXpx   |void   |_invlist_union_maybe_complement_2nd        \
                |NULLOK SV* const a|NN SV* const b          \
                |const bool complement_b|NN SV** output
-EXmM   |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
-EXpM   |void   |_invlist_invert|NN SV* const invlist
-EXMpR  |SV*    |_new_invlist   |IV initial_size
-EXMpR  |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
-EXMpR  |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
+EXmx   |void   |_invlist_subtract|NN SV* const a|NN SV* const b|NN SV** result
+EXpx   |void   |_invlist_invert|NN SV* const invlist
+EXxpR  |SV*    |_new_invlist   |IV initial_size
+EXxpR  |SV*    |_add_range_to_invlist  |NULLOK SV* invlist|UV start|UV end
+EXxpR  |SV*    |_setup_canned_invlist|const STRLEN size|const UV element0|NN UV** other_elements_ptr
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_SV_C)
-EMpX   |SV*    |invlist_clone  |NN SV* const invlist|NULLOK SV* newlist
+ExpX   |SV*    |invlist_clone  |NN SV* const invlist|NULLOK SV* newlist
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C) || defined(PERL_IN_UTF8_C) || defined(PERL_IN_PP_C)
-EiMRn  |UV*    |invlist_array  |NN SV* const invlist
-EiMRn  |bool   |is_invlist     |NULLOK SV* const invlist
-EiMRn  |bool*  |get_invlist_offset_addr|NN SV* invlist
-EiMRn  |UV     |_invlist_len   |NN SV* const invlist
-EMiRn  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
-EXpMRn |SSize_t|_invlist_search        |NN SV* const invlist|const UV cp
+EixRT  |UV*    |invlist_array  |NN SV* const invlist
+EixRT  |bool   |is_invlist     |NULLOK SV* const invlist
+EixRT  |bool*  |get_invlist_offset_addr|NN SV* invlist
+EixRT  |UV     |_invlist_len   |NN SV* const invlist
+ExiRT  |bool   |_invlist_contains_cp|NN SV* const invlist|const UV cp
+EXpxRT |SSize_t|_invlist_search        |NN SV* const invlist|const UV cp
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_REGEXEC_C)
-EXpM   |SV*    |_get_regclass_nonbitmap_data                              \
+EXpx   |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK const regexp *prog                 \
                                |NN const struct regnode *node             \
                                |bool doinit                               \
@@ -1759,42 +1821,42 @@ EXpM    |SV*    |_get_regclass_nonbitmap_data                              \
                                |NULLOK SV **output_invlist
 #endif
 #if defined(PERL_IN_REGCOMP_C) || defined (PERL_IN_DUMP_C)
-EXMp   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
+EXxp   |void   |_invlist_dump  |NN PerlIO *file|I32 level   \
                                |NN const char* const indent \
                                |NN SV* const invlist
 #endif
 Ap     |void   |taint_env
 Ap     |void   |taint_proper   |NULLOK const char* f|NN const char *const s
-EpM    |char * |_byte_dump_string                                      \
+Epx    |char * |_byte_dump_string                                      \
                                |NN const U8 * const start              \
                                |const STRLEN len                       \
                                |const bool format
 #if defined(PERL_IN_UTF8_C)
-inR    |int    |does_utf8_overflow|NN const U8 * const s               \
+iTR    |int    |does_utf8_overflow|NN const U8 * const s               \
                                   |NN const U8 * e                     \
                                   |const bool consider_overlongs
-inR    |int    |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s \
+iTR    |int    |is_utf8_overlong_given_start_byte_ok|NN const U8 * const s \
                                                     |const STRLEN len
-inR    |int    |isFF_OVERLONG  |NN const U8 * const s|const STRLEN len
-sMR    |char * |unexpected_non_continuation_text                       \
+iTR    |int    |isFF_OVERLONG  |NN const U8 * const s|const STRLEN len
+SxR    |char * |unexpected_non_continuation_text                       \
                |NN const U8 * const s                                  \
                |STRLEN print_len                                       \
                |const STRLEN non_cont_byte_pos                         \
                |const STRLEN expect_len
-s      |void   |warn_on_first_deprecated_use                               \
+S      |void   |warn_on_first_deprecated_use                               \
                                |NN const char * const name                 \
                                |NN const char * const alternative          \
                                |const bool use_locale                      \
                                |NN const char * const file                 \
                                |const unsigned line
-s      |U32    |check_and_deprecate                                        \
+S      |U32    |check_and_deprecate                                        \
                                |NN const U8 * p                            \
                                |NN const U8 ** e                           \
                                |const unsigned type                        \
                                |const bool use_locale                      \
                                |NN const char * const file                 \
                                |const unsigned line
-s      |UV     |_to_utf8_case  |const UV uv1                                   \
+S      |UV     |_to_utf8_case  |const UV uv1                                   \
                                |NULLOK const U8 *p                             \
                                |NN U8* ustrp                                   \
                                |NN STRLEN *lenp                                \
@@ -1803,28 +1865,28 @@ s       |UV     |_to_utf8_case  |const UV uv1                                   \
                                |NULLOK const unsigned int * const * const aux_tables   \
                                |NULLOK const U8 * const aux_table_lengths      \
                                |NN const char * const normal
-s      |UV     |turkic_fc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
-s      |UV     |turkic_lc      |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
-s      |UV     |turkic_uc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
+S      |UV     |turkic_fc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
+S      |UV     |turkic_lc      |NN const U8 * const p0|NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
+S      |UV     |turkic_uc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN STRLEN *lenp
 #endif
 ApbmdD |UV     |to_utf8_lower  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-AMp    |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
+Axp    |UV     |_to_utf8_lower_flags|NN const U8 *p|NULLOK const U8* e         \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
                                |NN const char * const file|const int line
 ApbmdD |UV     |to_utf8_upper  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-AMp    |UV     |_to_utf8_upper_flags   |NN const U8 *p|NULLOK const U8 *e      \
+Axp    |UV     |_to_utf8_upper_flags   |NN const U8 *p|NULLOK const U8 *e      \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
                                |NN const char * const file|const int line
 ApbmdD |UV     |to_utf8_title  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-AMp    |UV     |_to_utf8_title_flags   |NN const U8 *p|NULLOK const U8* e      \
+Axp    |UV     |_to_utf8_title_flags   |NN const U8 *p|NULLOK const U8* e      \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|bool flags    \
                                |NN const char * const file|const int line
 ApbmdD |UV     |to_utf8_fold   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
-AMp    |UV     |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e          \
+Axp    |UV     |_to_utf8_fold_flags|NN const U8 *p|NULLOK const U8 *e          \
                                |NN U8* ustrp|NULLOK STRLEN *lenp|U8 flags  \
                                |NN const char * const file|const int line
 #if defined(PERL_IN_MG_C) || defined(PERL_IN_PP_C)
-pn     |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
+pT     |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
                                         |bool pos1_is_uv|IV len_iv \
                                         |bool len_is_uv|NN STRLEN *posp \
                                         |NN STRLEN *lenp
@@ -1842,64 +1904,64 @@ Ap      |void   |unsharepvn     |NULLOK const char* sv|I32 len|U32 hash
 p      |void   |unshare_hek    |NULLOK HEK* hek
 : Used in perly.y
 p      |void   |utilize        |int aver|I32 floor|NULLOK OP* version|NN OP* idop|NULLOK OP* arg
-ApM    |void   |_force_out_malformed_utf8_message                          \
+Apx    |void   |_force_out_malformed_utf8_message                          \
                |NN const U8 *const p|NN const U8 * const e|const U32 flags \
                |const bool die_here
 EXp    |U8*    |utf16_to_utf8  |NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 EXp    |U8*    |utf16_to_utf8_reversed|NN U8* p|NN U8 *d|I32 bytelen|NN I32 *newlen
 AdpR   |STRLEN |utf8_length    |NN const U8* s|NN const U8 *e
 AipdR  |IV     |utf8_distance  |NN const U8 *a|NN const U8 *b
-AipdRn |U8*    |utf8_hop       |NN const U8 *s|SSize_t off
-AipdRn |U8*    |utf8_hop_back|NN const U8 *s|SSize_t off|NN const U8 *start
-AipdRn |U8*    |utf8_hop_forward|NN const U8 *s|SSize_t off|NN const U8 *end
-AipdRn |U8*    |utf8_hop_safe  |NN const U8 *s|SSize_t off|NN const U8 *start|NN const U8 *end
-ApMd   |U8*    |utf8_to_bytes  |NN U8 *s|NN STRLEN *lenp
+AipdRT |U8*    |utf8_hop       |NN const U8 *s|SSize_t off
+AipdRT |U8*    |utf8_hop_back|NN const U8 *s|SSize_t off|NN const U8 *start
+AipdRT |U8*    |utf8_hop_forward|NN const U8 *s|SSize_t off|NN const U8 *end
+AipdRT |U8*    |utf8_hop_safe  |NN const U8 *s|SSize_t off|NN const U8 *start|NN const U8 *end
+Apxd   |U8*    |utf8_to_bytes  |NN U8 *s|NN STRLEN *lenp
 Apd    |int    |bytes_cmp_utf8 |NN const U8 *b|STRLEN blen|NN const U8 *u \
                                |STRLEN ulen
-AModp  |U8*    |bytes_from_utf8|NN const U8 *s|NN STRLEN *lenp|NN bool *is_utf8p
-AMnp   |U8*    |bytes_from_utf8_loc|NN const U8 *s                         \
+AMxdp  |U8*    |bytes_from_utf8|NN const U8 *s|NN STRLEN *lenp|NN bool *is_utf8p
+AxTp   |U8*    |bytes_from_utf8_loc|NN const U8 *s                         \
                                    |NN STRLEN *lenp                        \
                                    |NN bool *is_utf8p                      \
                                    |NULLOK const U8 ** first_unconverted
-ApMd   |U8*    |bytes_to_utf8  |NN const U8 *s|NN STRLEN *lenp
+Apxd   |U8*    |bytes_to_utf8  |NN const U8 *s|NN STRLEN *lenp
 ApdD   |UV     |utf8_to_uvchr  |NN const U8 *s|NULLOK STRLEN *retlen
 AbpdD  |UV     |utf8_to_uvuni  |NN const U8 *s|NULLOK STRLEN *retlen
-AbpMD  |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
-Aopd   |UV     |utf8_to_uvchr_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
+AbpxD  |UV     |valid_utf8_to_uvuni    |NN const U8 *s|NULLOK STRLEN *retlen
+AMpd   |UV     |utf8_to_uvchr_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
 ApdD   |UV     |utf8_to_uvuni_buf      |NN const U8 *s|NN const U8 *send|NULLOK STRLEN *retlen
-pM     |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
+px     |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
 
-Adnop  |UV     |utf8n_to_uvchr |NN const U8 *s                             \
+AdMTp  |UV     |utf8n_to_uvchr |NN const U8 *s                             \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags
-Adnop  |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
+AdMTp  |UV     |utf8n_to_uvchr_error|NN const U8 *s                        \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors
-AMndi  |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
+AxTdi  |UV     |utf8n_to_uvchr_msgs|NN const U8 *s                         \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors                        \
                                |NULLOK AV ** msgs
-AMnp   |UV     |_utf8n_to_uvchr_msgs_helper                                \
+AxTp   |UV     |_utf8n_to_uvchr_msgs_helper                                \
                                |NN const U8 *s                             \
                                |STRLEN curlen                              \
                                |NULLOK STRLEN *retlen                      \
                                |const U32 flags                            \
                                |NULLOK U32 * errors                        \
                                |NULLOK AV ** msgs
-AipnR  |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
+AipTR  |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
 Ap     |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
 
 Adm    |U8*    |uvchr_to_utf8  |NN U8 *d|UV uv
 Ap     |U8*    |uvuni_to_utf8  |NN U8 *d|UV uv
 Adm    |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
-AdmM   |U8*    |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs
-Apod   |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
-ApM    |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
+Admx   |U8*    |uvchr_to_utf8_flags_msgs|NN U8 *d|UV uv|UV flags|NULLOK HV ** msgs
+AMpod  |U8*    |uvoffuni_to_utf8_flags |NN U8 *d|UV uv|const UV flags
+Apx    |U8*    |uvoffuni_to_utf8_flags_msgs|NN U8 *d|UV uv|const UV flags|NULLOK HV** msgs
 Ap     |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 Apd    |char*  |pv_uni_display |NN SV *dsv|NN const U8 *spv|STRLEN len|STRLEN pvlim|UV flags
 ApdR   |char*  |sv_uni_display |NN SV *dsv|NN SV *ssv|STRLEN pvlim|UV flags
@@ -1915,8 +1977,8 @@ p |I32    |wait4pid       |Pid_t pid|NN int* statusp|int flags
 : Used in locale.c and perl.c
 p      |U32    |parse_unicode_opts|NN const char **popt
 Ap     |U32    |seed
-Xpno   |double |drand48_r      |NN perl_drand48_t *random_state
-Xpno   |void   |drand48_init_r |NN perl_drand48_t *random_state|U32 seed
+XpTo   |double |drand48_r      |NN perl_drand48_t *random_state
+XpTo   |void   |drand48_init_r |NN perl_drand48_t *random_state|U32 seed
 : Only used in perl.c
 p      |void   |get_hash_seed        |NN unsigned char * const seed_buffer
 : Used in doio.c, pp_hot.c, pp_sys.c
@@ -1952,7 +2014,7 @@ Ap        |I32    |whichsig_pvn   |NN const char* sig|STRLEN len
 : used to check for NULs in pathnames and other names
 AiR    |bool   |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name
 #ifdef PERL_CORE
-inR    |bool   |should_warn_nl|NN const char *pv
+iTR    |bool   |should_warn_nl|NN const char *pv
 #endif
 : Used in pp_ctl.c
 p      |void   |write_to_stderr|NN SV* msv
@@ -1974,17 +2036,17 @@ p       |void   |parser_free_nexttoke_ops|NN yy_parser *parser \
                                         |NN OPSLAB *slab
 #endif
 #if defined(PERL_IN_TOKE_C)
-s      |int    |yywarn         |NN const char *const s|U32 flags
+S      |int    |yywarn         |NN const char *const s|U32 flags
 #endif
 #if defined(MYMALLOC)
 Ap     |void   |dump_mstats    |NN const char* s
 Ap     |int    |get_mstats     |NN perl_mstats_t *buf|int buflen|int level
 #endif
-Anpa   |Malloc_t|safesysmalloc |MEM_SIZE nbytes
-Anpa   |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
-AnpR   |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
-Anp    |Free_t |safesysfree    |Malloc_t where
-Asrnx  |void   |croak_memory_wrap
+ATpa   |Malloc_t|safesysmalloc |MEM_SIZE nbytes
+ATpa   |Malloc_t|safesyscalloc |MEM_SIZE elements|MEM_SIZE size
+ATpR   |Malloc_t|safesysrealloc|Malloc_t where|MEM_SIZE nbytes
+ATp    |Free_t |safesysfree    |Malloc_t where
+AirTe  |void   |croak_memory_wrap
 #if defined(PERL_GLOBAL_STRUCT)
 Ap     |struct perl_vars *|GetVars
 Ap     |struct perl_vars*|init_global_struct
@@ -2054,7 +2116,7 @@ Apd       |void   |sv_force_normal_flags|NN SV *const sv|const U32 flags
 pX     |SSize_t|tmps_grow_p    |SSize_t ix
 Apd    |SV*    |sv_rvweaken    |NN SV *const sv
 Apd    |SV*    |sv_rvunweaken  |NN SV *const sv
-AnpMd  |SV*    |sv_get_backrefs|NN SV *const sv
+ATpxd  |SV*    |sv_get_backrefs|NN SV *const sv
 : This is indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
 Ap     |OP*    |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
@@ -2081,9 +2143,9 @@ ApR       |DIR*   |dirp_dup       |NULLOK DIR *const dp|NN CLONE_PARAMS *const param
 ApR    |GP*    |gp_dup         |NULLOK GP *const gp|NN CLONE_PARAMS *const param
 ApR    |MAGIC* |mg_dup         |NULLOK MAGIC *mg|NN CLONE_PARAMS *const param
 #if defined(PERL_IN_SV_C)
-s      |SV **  |sv_dup_inc_multiple|NN SV *const *source|NN SV **dest \
+S      |SV **  |sv_dup_inc_multiple|NN SV *const *source|NN SV **dest \
                                |SSize_t items|NN CLONE_PARAMS *const param
-sR     |SV*    |sv_dup_common  |NN const SV *const sstr \
+SR     |SV*    |sv_dup_common  |NN const SV *const sstr \
                                |NN CLONE_PARAMS *const param
 #endif
 ApR    |SV*    |sv_dup         |NULLOK const SV *const sstr|NN CLONE_PARAMS *const param
@@ -2122,31 +2184,31 @@ Adp     |int    |nothreadhook
 p      |void   |init_constants
 
 #if defined(PERL_IN_DOOP_C)
-sR     |Size_t |do_trans_simple        |NN SV * const sv
-sR     |Size_t |do_trans_count         |NN SV * const sv
-sR     |Size_t |do_trans_complex       |NN SV * const sv
-sR     |Size_t |do_trans_simple_utf8   |NN SV * const sv
-sR     |Size_t |do_trans_count_utf8    |NN SV * const sv
-sR     |Size_t |do_trans_complex_utf8  |NN SV * const sv
+SR     |Size_t |do_trans_simple        |NN SV * const sv
+SR     |Size_t |do_trans_count         |NN SV * const sv
+SR     |Size_t |do_trans_complex       |NN SV * const sv
+SR     |Size_t |do_trans_simple_utf8   |NN SV * const sv
+SR     |Size_t |do_trans_count_utf8    |NN SV * const sv
+SR     |Size_t |do_trans_complex_utf8  |NN SV * const sv
 #endif
 
 #if defined(PERL_IN_GV_C)
-s      |void   |gv_init_svtype |NN GV *gv|const svtype sv_type
-s      |void   |gv_magicalize_isa      |NN GV *gv
-s      |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \
+S      |void   |gv_init_svtype |NN GV *gv|const svtype sv_type
+S      |void   |gv_magicalize_isa      |NN GV *gv
+S      |bool|parse_gv_stash_name|NN HV **stash|NN GV **gv \
                      |NN const char **name|NN STRLEN *len \
                      |NN const char *nambeg|STRLEN full_len \
                      |const U32 is_utf8|const I32 add
-s      |bool|find_default_stash|NN HV **stash|NN const char *name \
+S      |bool|find_default_stash|NN HV **stash|NN const char *name \
                      |STRLEN len|const U32 is_utf8|const I32 add \
                      |const svtype sv_type
-s      |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \
+S      |bool|gv_magicalize|NN GV *gv|NN HV *stash|NN const char *name \
                      |STRLEN len \
                      |const svtype sv_type
-s      |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type
-s      |bool|gv_is_in_main|NN const char *name|STRLEN len \
+S      |void|maybe_multimagic_gv|NN GV *gv|NN const char *name|const svtype sv_type
+S      |bool|gv_is_in_main|NN const char *name|STRLEN len \
                       |const U32 is_utf8
-s      |void   |require_tie_mod|NN GV *gv|NN const char varname \
+S      |void   |require_tie_mod|NN GV *gv|NN const char varname \
                                |NN const char * name|STRLEN len \
                                |const U32 flags
 #endif
@@ -2156,197 +2218,197 @@ po    |SV*    |hfree_next_entry       |NN HV *hv|NN STRLEN *indexp
 #endif
 
 #if defined(PERL_IN_HV_C)
-s      |void   |hsplit         |NN HV *hv|STRLEN const oldsize|STRLEN newsize
-s      |void   |hv_free_entries|NN HV *hv
-s      |SV*    |hv_free_ent_ret|NN HV *hv|NN HE *entry
-sR     |HE*    |new_he
-sanR   |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
-sn     |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
-s      |void   |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
-sR     |HEK*   |share_hek_flags|NN const char *str|STRLEN len|U32 hash|int flags
-rs     |void   |hv_notallowed  |int flags|NN const char *key|I32 klen|NN const char *msg
-in     |U32|ptr_hash|PTRV u
-s      |struct xpvhv_aux*|hv_auxinit|NN HV *hv
-sn     |struct xpvhv_aux*|hv_auxinit_internal|NN struct xpvhv_aux *iter
-sM     |SV*    |hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \
+S      |void   |hsplit         |NN HV *hv|STRLEN const oldsize|STRLEN newsize
+S      |void   |hv_free_entries|NN HV *hv
+S      |SV*    |hv_free_ent_ret|NN HV *hv|NN HE *entry
+SR     |HE*    |new_he
+SaTR   |HEK*   |save_hek_flags |NN const char *str|I32 len|U32 hash|int flags
+ST     |void   |hv_magic_check |NN HV *hv|NN bool *needs_copy|NN bool *needs_store
+S      |void   |unshare_hek_or_pvn|NULLOK const HEK* hek|NULLOK const char* str|I32 len|U32 hash
+SR     |HEK*   |share_hek_flags|NN const char *str|STRLEN len|U32 hash|int flags
+rS     |void   |hv_notallowed  |int flags|NN const char *key|I32 klen|NN const char *msg
+iT     |U32|ptr_hash|PTRV u
+S      |struct xpvhv_aux*|hv_auxinit|NN HV *hv
+ST     |struct xpvhv_aux*|hv_auxinit_internal|NN struct xpvhv_aux *iter
+Sx     |SV*    |hv_delete_common|NULLOK HV *hv|NULLOK SV *keysv \
                |NULLOK const char *key|STRLEN klen|int k_flags|I32 d_flags \
                |U32 hash
-sM     |void   |clear_placeholders     |NN HV *hv|U32 items
+Sx     |void   |clear_placeholders     |NN HV *hv|U32 items
 #endif
 
 #if defined(PERL_IN_MG_C)
-s      |void   |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags
-s      |int    |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth
-s      |SV*    |magic_methcall1|NN SV *sv|NN const MAGIC *mg \
+S      |void   |save_magic_flags|I32 mgs_ix|NN SV *sv|U32 flags
+S      |int    |magic_methpack |NN SV *sv|NN const MAGIC *mg|NN SV *meth
+S      |SV*    |magic_methcall1|NN SV *sv|NN const MAGIC *mg \
                                |NN SV *meth|U32 flags \
                                |int n|NULLOK SV *val
-s      |void   |restore_magic  |NULLOK const void *p
-s      |void   |unwind_handler_stack|NULLOK const void *p
-s      |void   |fixup_errno_string|NN SV* sv
+S      |void   |restore_magic  |NULLOK const void *p
+S      |void   |unwind_handler_stack|NULLOK const void *p
+S      |void   |fixup_errno_string|NN SV* sv
 
 #endif
 
 #if defined(PERL_IN_OP_C)
-sRn    |bool   |is_handle_constructor|NN const OP *o|I32 numargs
-sR     |I32    |assignment_type|NULLOK const OP *o
-s      |void   |forget_pmop    |NN PMOP *const o
-s      |void   |find_and_forget_pmops  |NN OP *o
-s      |void   |cop_free       |NN COP *cop
-s      |OP*    |modkids        |NULLOK OP *o|I32 type
-s      |OP*    |scalarboolean  |NN OP *o
-sR     |OP*    |search_const   |NN OP *o
-sR     |OP*    |new_logop      |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
-s      |void   |simplify_sort  |NN OP *o
-sRn    |bool   |scalar_mod_type|NULLOK const OP *o|I32 type
-s      |OP *   |my_kid         |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
-s      |OP *   |dup_attrlist   |NN OP *o
-s      |void   |apply_attrs    |NN HV *stash|NN SV *target|NULLOK OP *attrs
-s      |void   |apply_attrs_my |NN HV *stash|NN OP *target|NULLOK OP *attrs|NN OP **imopsp
-s      |void   |bad_type_pv    |I32 n|NN const char *t|NN const OP *o|NN const OP *kid
-s      |void   |bad_type_gv    |I32 n|NN GV *gv|NN const OP *kid|NN const char *t
-s      |void   |no_bareword_allowed|NN OP *o
-sR     |OP*    |no_fh_allowed|NN OP *o
-sR     |OP*    |too_few_arguments_pv|NN OP *o|NN const char* name|U32 flags
-s      |OP*    |too_many_arguments_pv|NN OP *o|NN const char* name|U32 flags
-s      |bool   |looks_like_bool|NN const OP* o
-s      |OP*    |newGIVWHENOP   |NULLOK OP* cond|NN OP *block \
+SRT    |bool   |is_handle_constructor|NN const OP *o|I32 numargs
+SR     |I32    |assignment_type|NULLOK const OP *o
+S      |void   |forget_pmop    |NN PMOP *const o
+S      |void   |find_and_forget_pmops  |NN OP *o
+S      |void   |cop_free       |NN COP *cop
+S      |OP*    |modkids        |NULLOK OP *o|I32 type
+S      |OP*    |scalarboolean  |NN OP *o
+SR     |OP*    |search_const   |NN OP *o
+SR     |OP*    |new_logop      |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
+S      |void   |simplify_sort  |NN OP *o
+SRT    |bool   |scalar_mod_type|NULLOK const OP *o|I32 type
+S      |OP *   |my_kid         |NULLOK OP *o|NULLOK OP *attrs|NN OP **imopsp
+S      |OP *   |dup_attrlist   |NN OP *o
+S      |void   |apply_attrs    |NN HV *stash|NN SV *target|NULLOK OP *attrs
+S      |void   |apply_attrs_my |NN HV *stash|NN OP *target|NULLOK OP *attrs|NN OP **imopsp
+S      |void   |bad_type_pv    |I32 n|NN const char *t|NN const OP *o|NN const OP *kid
+S      |void   |bad_type_gv    |I32 n|NN GV *gv|NN const OP *kid|NN const char *t
+S      |void   |no_bareword_allowed|NN OP *o
+SR     |OP*    |no_fh_allowed|NN OP *o
+SR     |OP*    |too_few_arguments_pv|NN OP *o|NN const char* name|U32 flags
+S      |OP*    |too_many_arguments_pv|NN OP *o|NN const char* name|U32 flags
+S      |bool   |looks_like_bool|NN const OP* o
+S      |OP*    |newGIVWHENOP   |NULLOK OP* cond|NN OP *block \
                                |I32 enter_opcode|I32 leave_opcode \
                                |PADOFFSET entertarg
-s      |OP*    |ref_array_or_hash|NULLOK OP* cond
-s      |bool   |process_special_blocks |I32 floor \
+S      |OP*    |ref_array_or_hash|NULLOK OP* cond
+S      |bool   |process_special_blocks |I32 floor \
                                        |NN const char *const fullname\
                                        |NN GV *const gv|NN CV *const cv
-s      |void   |clear_special_blocks   |NN const char *const fullname\
+S      |void   |clear_special_blocks   |NN const char *const fullname\
                                        |NN GV *const gv|NN CV *const cv
 #endif
 XpR    |void*  |Slab_Alloc     |size_t sz
 Xp     |void   |Slab_Free      |NN void *op
 #if defined(PERL_DEBUG_READONLY_OPS)
 #    if defined(PERL_CORE)
-px     |void   |Slab_to_ro     |NN OPSLAB *slab
-px     |void   |Slab_to_rw     |NN OPSLAB *const slab
+pe     |void   |Slab_to_ro     |NN OPSLAB *slab
+pe     |void   |Slab_to_rw     |NN OPSLAB *const slab
 #    endif
 : Used in OpREFCNT_inc() in sv.c
-poxM   |OP *   |op_refcnt_inc  |NULLOK OP *o
+poex   |OP *   |op_refcnt_inc  |NULLOK OP *o
 : FIXME - can be static.
-poxM   |PADOFFSET      |op_refcnt_dec  |NN OP *o
+poex   |PADOFFSET      |op_refcnt_dec  |NN OP *o
 #endif
 
 #if defined(PERL_IN_PERL_C)
-s      |void   |find_beginning |NN SV* linestr_sv|NN PerlIO *rsfp
-s      |void   |forbid_setid   |const char flag|const bool suidscript
-s      |void   |incpush        |NN const char *const dir|STRLEN len \
+S      |void   |find_beginning |NN SV* linestr_sv|NN PerlIO *rsfp
+S      |void   |forbid_setid   |const char flag|const bool suidscript
+S      |void   |incpush        |NN const char *const dir|STRLEN len \
                                |U32 flags
-s      |SV*    |mayberelocate  |NN const char *const dir|STRLEN len \
+S      |SV*    |mayberelocate  |NN const char *const dir|STRLEN len \
                                |U32 flags
-s      |void   |incpush_use_sep|NN const char *p|STRLEN len|U32 flags
-s      |void   |init_interp
-s      |void   |init_ids
-s      |void   |init_main_stash
-s      |void   |init_perllib
-s      |void   |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env
-s      |void   |init_predump_symbols
-rs     |void   |my_exit_jump
-s      |void   |nuke_stacks
-s      |PerlIO *|open_script   |NN const char *scriptname|bool dosearch \
+S      |void   |incpush_use_sep|NN const char *p|STRLEN len|U32 flags
+S      |void   |init_interp
+S      |void   |init_ids
+S      |void   |init_main_stash
+S      |void   |init_perllib
+S      |void   |init_postdump_symbols|int argc|NN char **argv|NULLOK char **env
+S      |void   |init_predump_symbols
+rS     |void   |my_exit_jump
+S      |void   |nuke_stacks
+S      |PerlIO *|open_script   |NN const char *scriptname|bool dosearch \
                                |NN bool *suidscript
-sr     |void   |usage
+Sr     |void   |usage
 #ifndef SETUID_SCRIPTS_ARE_SECURE_NOW
-so     |void   |validate_suid  |NN PerlIO *rsfp
+So     |void   |validate_suid  |NN PerlIO *rsfp
 #endif
-sr     |void   |minus_v
+Sr     |void   |minus_v
 
-s      |void*  |parse_body     |NULLOK char **env|XSINIT_t xsinit
-rs     |void   |run_body       |I32 oldscope
+S      |void*  |parse_body     |NULLOK char **env|XSINIT_t xsinit
+rS     |void   |run_body       |I32 oldscope
 #  ifndef PERL_IS_MINIPERL
-s      |SV *   |incpush_if_exists|NN AV *const av|NN SV *dir|NN SV *const stem
+S      |SV *   |incpush_if_exists|NN AV *const av|NN SV *dir|NN SV *const stem
 #  endif
 #endif
 
 #if defined(PERL_IN_PP_C)
-s      |size_t |do_chomp       |NN SV *retval|NN SV *sv|bool chomping
-s      |OP*    |do_delete_local
-sR     |SV*    |refto          |NN SV* sv
+S      |size_t |do_chomp       |NN SV *retval|NN SV *sv|bool chomping
+S      |OP*    |do_delete_local
+SR     |SV*    |refto          |NN SV* sv
 #endif
 #if defined(PERL_IN_PP_C) || defined(PERL_IN_PP_HOT_C)
 : Used in pp_hot.c
-pRxo   |GV*    |softref2xv     |NN SV *const sv|NN const char *const what \
+pReo   |GV*    |softref2xv     |NN SV *const sv|NN const char *const what \
                                |const svtype type|NN SV ***spp
-inR    |bool   |lossless_NV_to_IV|const NV nv|NN IV * ivp
+iTR    |bool   |lossless_NV_to_IV|const NV nv|NN IV * ivp
 #endif
 
 #if defined(PERL_IN_PP_PACK_C)
-s      |SSize_t|unpack_rec     |NN struct tempsym* symptr|NN const char *s \
+S      |SSize_t|unpack_rec     |NN struct tempsym* symptr|NN const char *s \
                                |NN const char *strbeg|NN const char *strend|NULLOK const char **new_s
-s      |SV **  |pack_rec       |NN SV *cat|NN struct tempsym* symptr|NN SV **beglist|NN SV **endlist
-s      |SV*    |mul128         |NN SV *sv|U8 m
-s      |SSize_t|measure_struct |NN struct tempsym* symptr
-s      |bool   |next_symbol    |NN struct tempsym* symptr
-sR     |SV*    |is_an_int      |NN const char *s|STRLEN l
-s      |int    |div128         |NN SV *pnum|NN bool *done
-s      |const char *|group_end |NN const char *patptr|NN const char *patend \
+S      |SV **  |pack_rec       |NN SV *cat|NN struct tempsym* symptr|NN SV **beglist|NN SV **endlist
+S      |SV*    |mul128         |NN SV *sv|U8 m
+S      |SSize_t|measure_struct |NN struct tempsym* symptr
+S      |bool   |next_symbol    |NN struct tempsym* symptr
+SR     |SV*    |is_an_int      |NN const char *s|STRLEN l
+S      |int    |div128         |NN SV *pnum|NN bool *done
+S      |const char *|group_end |NN const char *patptr|NN const char *patend \
                                |char ender
-sR     |const char *|get_num   |NN const char *patptr|NN SSize_t *lenptr
-ns     |bool   |need_utf8      |NN const char *pat|NN const char *patend
-ns     |char   |first_symbol   |NN const char *pat|NN const char *patend
-sR     |char * |sv_exp_grow    |NN SV *sv|STRLEN needed
-snR    |char * |my_bytes_to_utf8|NN const U8 *start|STRLEN len|NN char *dest \
+SR     |const char *|get_num   |NN const char *patptr|NN SSize_t *lenptr
+TS     |bool   |need_utf8      |NN const char *pat|NN const char *patend
+TS     |char   |first_symbol   |NN const char *pat|NN const char *patend
+SR     |char * |sv_exp_grow    |NN SV *sv|STRLEN needed
+STR    |char * |my_bytes_to_utf8|NN const U8 *start|STRLEN len|NN char *dest \
                                |const bool needs_swap
 #endif
 
 #if defined(PERL_IN_PP_CTL_C)
-sR     |OP*    |docatch        |Perl_ppaddr_t firstpp
-sR     |OP*    |dofindlabel    |NN OP *o|NN const char *label|STRLEN len \
+SR     |OP*    |docatch        |Perl_ppaddr_t firstpp
+SR     |OP*    |dofindlabel    |NN OP *o|NN const char *label|STRLEN len \
                                 |U32 flags|NN OP **opstack|NN OP **oplimit
-s      |MAGIC *|doparseform    |NN SV *sv
-snR    |bool   |num_overflow   |NV value|I32 fldsize|I32 frcsize
-sR     |I32    |dopoptoeval    |I32 startingblock
-sR     |I32    |dopoptogivenfor|I32 startingblock
-sR     |I32    |dopoptolabel   |NN const char *label|STRLEN len|U32 flags
-sR     |I32    |dopoptoloop    |I32 startingblock
-sR     |I32    |dopoptosub_at  |NN const PERL_CONTEXT* cxstk|I32 startingblock
-sR     |I32    |dopoptowhen    |I32 startingblock
-s      |void   |save_lines     |NULLOK AV *array|NN SV *sv
-s      |bool   |doeval_compile |U8 gimme \
+S      |MAGIC *|doparseform    |NN SV *sv
+STR    |bool   |num_overflow   |NV value|I32 fldsize|I32 frcsize
+SR     |I32    |dopoptoeval    |I32 startingblock
+SR     |I32    |dopoptogivenfor|I32 startingblock
+SR     |I32    |dopoptolabel   |NN const char *label|STRLEN len|U32 flags
+SR     |I32    |dopoptoloop    |I32 startingblock
+SR     |I32    |dopoptosub_at  |NN const PERL_CONTEXT* cxstk|I32 startingblock
+SR     |I32    |dopoptowhen    |I32 startingblock
+S      |void   |save_lines     |NULLOK AV *array|NN SV *sv
+S      |bool   |doeval_compile |U8 gimme \
                                |NULLOK CV* outside|U32 seq|NULLOK HV* hh
-sR     |PerlIO *|check_type_and_open|NN SV *name
+SR     |PerlIO *|check_type_and_open|NN SV *name
 #ifndef PERL_DISABLE_PMC
-sR     |PerlIO *|doopen_pm     |NN SV *name
-#endif
-iRn    |bool   |path_is_searchable|NN const char *name
-sR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
-sR     |PMOP*  |make_matcher   |NN REGEXP* re
-sR     |bool   |matcher_matches_sv|NN PMOP* matcher|NN SV* sv
-s      |void   |destroy_matcher|NN PMOP* matcher
-s      |OP*    |do_smartmatch  |NULLOK HV* seen_this \
+SR     |PerlIO *|doopen_pm     |NN SV *name
+#endif
+iRT    |bool   |path_is_searchable|NN const char *name
+SR     |I32    |run_user_filter|int idx|NN SV *buf_sv|int maxlen
+SR     |PMOP*  |make_matcher   |NN REGEXP* re
+SR     |bool   |matcher_matches_sv|NN PMOP* matcher|NN SV* sv
+S      |void   |destroy_matcher|NN PMOP* matcher
+S      |OP*    |do_smartmatch  |NULLOK HV* seen_this \
                                |NULLOK HV* seen_other|const bool copied
 #endif
 
 #if defined(PERL_IN_PP_HOT_C)
-s      |void   |do_oddball     |NN SV **oddkey|NN SV **firstkey
+S      |void   |do_oddball     |NN SV **oddkey|NN SV **firstkey
 i      |HV*    |opmethod_stash |NN SV* meth
 #endif
 
 #if defined(PERL_IN_PP_SORT_C)
-s      |I32    |sv_ncmp        |NN SV *const a|NN SV *const b
-s      |I32    |sv_i_ncmp      |NN SV *const a|NN SV *const b
-s      |I32    |amagic_ncmp    |NN SV *const a|NN SV *const b
-s      |I32    |amagic_i_ncmp  |NN SV *const a|NN SV *const b
-s      |I32    |amagic_cmp     |NN SV *const str1|NN SV *const str2
+S      |I32    |sv_ncmp        |NN SV *const a|NN SV *const b
+S      |I32    |sv_i_ncmp      |NN SV *const a|NN SV *const b
+S      |I32    |amagic_ncmp    |NN SV *const a|NN SV *const b
+S      |I32    |amagic_i_ncmp  |NN SV *const a|NN SV *const b
+S      |I32    |amagic_cmp     |NN SV *const str1|NN SV *const str2
 #  ifdef USE_LOCALE_COLLATE
-s      |I32    |amagic_cmp_locale|NN SV *const str1|NN SV *const str2
+S      |I32    |amagic_cmp_locale|NN SV *const str1|NN SV *const str2
 #  endif
-s      |I32    |sortcv         |NN SV *const a|NN SV *const b
-s      |I32    |sortcv_xsub    |NN SV *const a|NN SV *const b
-s      |I32    |sortcv_stacked |NN SV *const a|NN SV *const b
+S      |I32    |sortcv         |NN SV *const a|NN SV *const b
+S      |I32    |sortcv_xsub    |NN SV *const a|NN SV *const b
+S      |I32    |sortcv_stacked |NN SV *const a|NN SV *const b
 #endif
 
 #if defined(PERL_IN_PP_SYS_C)
-s      |OP*    |doform         |NN CV *cv|NN GV *gv|NULLOK OP *retop
+S      |OP*    |doform         |NN CV *cv|NN GV *gv|NULLOK OP *retop
 #  if !defined(HAS_MKDIR) || !defined(HAS_RMDIR)
-sR     |int    |dooneliner     |NN const char *cmd|NN const char *filename
+SR     |int    |dooneliner     |NN const char *cmd|NN const char *filename
 #  endif
-s      |SV *   |space_join_names_mortal|NULLOK char *const *array
+S      |SV *   |space_join_names_mortal|NULLOK char *const *array
 #endif
 p      |OP *   |tied_method|NN SV *methname|NN SV **sp \
                                |NN SV *const sv|NN const MAGIC *const mg \
@@ -2358,108 +2420,108 @@ Ep    |void   |regprop        |NULLOK const regexp *prog|NN SV* sv|NN const regnode* o|NULLO
 Ep     |int    |re_printf      |NN const char *fmt|...
 #endif
 #if defined(PERL_IN_REGCOMP_C)
-Es     |regnode_offset|reg     |NN RExC_state_t *pRExC_state \
+ES     |regnode_offset|reg     |NN RExC_state_t *pRExC_state \
                                |I32 paren|NN I32 *flagp|U32 depth
-Es     |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state          \
+ES     |regnode_offset|regnode_guts|NN RExC_state_t *pRExC_state          \
                                |const U8 op                               \
                                |const STRLEN extra_len                    \
                                |NN const char* const name
-Es     |void   |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size
-Es     |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \
+ES     |void   |change_engine_size|NN RExC_state_t *pRExC_state|const Ptrdiff_t size
+ES     |regnode_offset|reganode|NN RExC_state_t *pRExC_state|U8 op \
                                |U32 arg
-Es     |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state            \
+ES     |regnode_offset|reg2Lanode|NN RExC_state_t *pRExC_state            \
                                |const U8 op                               \
                                |const U32 arg1                            \
                                |const I32 arg2
-Es     |regnode_offset|regatom |NN RExC_state_t *pRExC_state \
+ES     |regnode_offset|regatom |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |regnode_offset|regbranch       |NN RExC_state_t *pRExC_state \
+ES     |regnode_offset|regbranch       |NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|I32 first|U32 depth
-Es     |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
+ES     |void    |set_ANYOF_arg |NN RExC_state_t* const pRExC_state \
                                |NN regnode* const node                    \
                                |NULLOK SV* const cp_list                  \
                                |NULLOK SV* const runtime_defns            \
                                |NULLOK SV* const only_utf8_locale_list
-Es     |void   |output_posix_warnings                                      \
+ES     |void   |output_posix_warnings                                      \
                                |NN RExC_state_t *pRExC_state               \
                                |NN AV* posix_warnings
-Es     |AV*     |add_multi_match|NULLOK AV* multi_char_matches             \
+ES     |AV*     |add_multi_match|NULLOK AV* multi_char_matches             \
                                |NN SV* multi_string                        \
                                |const STRLEN cp_count
-Es     |regnode_offset|regclass|NN RExC_state_t *pRExC_state                 \
+ES     |regnode_offset|regclass|NN RExC_state_t *pRExC_state                 \
                                |NN I32 *flagp|U32 depth|const bool stop_at_1 \
                                |bool allow_multi_fold                        \
                                |const bool silence_non_portable              \
                                |const bool strict                            \
                                |bool optimizable                             \
                                |NULLOK SV** ret_invlist
-Es     |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \
+ES     |void|add_above_Latin1_folds|NN RExC_state_t *pRExC_state|const U8 cp \
                                |NN SV** invlist
 Ei     |regnode_offset|handle_named_backref|NN RExC_state_t *pRExC_state   \
                                |NN I32 *flagp                              \
                                |NN char * parse_start                      \
                                |char ch
-EsnR   |unsigned int|regex_set_precedence|const U8 my_operator
-Es     |regnode_offset|handle_regex_sets|NN RExC_state_t *pRExC_state \
+ESTR   |unsigned int|regex_set_precedence|const U8 my_operator
+ES     |regnode_offset|handle_regex_sets|NN RExC_state_t *pRExC_state \
                                |NULLOK SV ** return_invlist            \
                                |NN I32 *flagp|U32 depth                \
                                |NN char * const oregcomp_parse
-Es     |void   |set_regex_pv   |NN RExC_state_t *pRExC_state|NN REGEXP *Rx
+ES     |void   |set_regex_pv   |NN RExC_state_t *pRExC_state|NN REGEXP *Rx
 #if defined(DEBUGGING) && defined(ENABLE_REGEX_SETS_DEBUGGING)
-Es     |void   |dump_regex_sets_structures                                 \
+ES     |void   |dump_regex_sets_structures                                 \
                                |NN RExC_state_t *pRExC_state               \
                                |NN AV * stack                              \
                                |const IV fence|NN AV * fence_stack
 #endif
-Es     |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state
-Es     |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op
-Es     |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \
+ES     |void|parse_lparen_question_flags|NN RExC_state_t *pRExC_state
+ES     |regnode_offset|reg_node|NN RExC_state_t *pRExC_state|U8 op
+ES     |regnode_offset|regpiece|NN RExC_state_t *pRExC_state \
                                |NN I32 *flagp|U32 depth
-Es     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state               \
+ES     |bool   |grok_bslash_N  |NN RExC_state_t *pRExC_state               \
                                |NULLOK regnode_offset* nodep               \
                                |NULLOK UV *code_point_p                    \
                                |NULLOK int* cp_count                       \
                                |NN I32 *flagp                              \
                                |const bool strict                          \
                                |const U32 depth
-Es     |void   |reginsert      |NN RExC_state_t *pRExC_state \
+ES     |void   |reginsert      |NN RExC_state_t *pRExC_state \
                                |const U8 op                                \
                                |const regnode_offset operand               \
                                |const U32 depth
-Es     |bool   |regtail        |NN RExC_state_t * pRExC_state              \
+ES     |bool   |regtail        |NN RExC_state_t * pRExC_state              \
                                |NN const regnode_offset p                  \
                                |NN const regnode_offset val                \
                                |const U32 depth
-Es     |SV *   |reg_scan_name  |NN RExC_state_t *pRExC_state \
+ES     |SV *   |reg_scan_name  |NN RExC_state_t *pRExC_state \
                                |U32 flags
-Es     |U32    |join_exact     |NN RExC_state_t *pRExC_state \
+ES     |U32    |join_exact     |NN RExC_state_t *pRExC_state \
                                |NN regnode *scan|NN UV *min_subtract  \
                                |NN bool *unfolded_multi_char          \
                                |U32 flags|NULLOK regnode *val|U32 depth
-Ein    |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
-Es     |void   |nextchar       |NN RExC_state_t *pRExC_state
-Es     |void   |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state  \
+EiT    |U8   |compute_EXACTish|NN RExC_state_t *pRExC_state
+ES     |void   |nextchar       |NN RExC_state_t *pRExC_state
+ES     |void   |skip_to_be_ignored_text|NN RExC_state_t *pRExC_state  \
                                |NN char ** p                       \
                                |const bool force_to_xmod
-Ein    |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p
-Es     |void   |scan_commit    |NN const RExC_state_t *pRExC_state \
+EiT    |char * |reg_skipcomment|NN RExC_state_t *pRExC_state|NN char * p
+ES     |void   |scan_commit    |NN const RExC_state_t *pRExC_state \
                                |NN struct scan_data_t *data        \
                                |NN SSize_t *minlenp                \
                                |int is_inf
-Es     |void   |populate_ANYOF_from_invlist|NN regnode *node|NN SV** invlist_ptr
-Es     |void   |ssc_anything   |NN regnode_ssc *ssc
-EsRn   |int    |ssc_is_anything|NN const regnode_ssc *ssc
-Es     |void   |ssc_init       |NN const RExC_state_t *pRExC_state \
+ES     |void   |populate_ANYOF_from_invlist|NN regnode *node|NN SV** invlist_ptr
+ES     |void   |ssc_anything   |NN regnode_ssc *ssc
+ESRT   |int    |ssc_is_anything|NN const regnode_ssc *ssc
+ES     |void   |ssc_init       |NN const RExC_state_t *pRExC_state \
                                |NN regnode_ssc *ssc
-EsRn   |int    |ssc_is_cp_posixl_init|NN const RExC_state_t *pRExC_state \
+ESRT   |int    |ssc_is_cp_posixl_init|NN const RExC_state_t *pRExC_state \
                                |NN const regnode_ssc *ssc
-Es     |void   |ssc_and        |NN const RExC_state_t *pRExC_state \
+ES     |void   |ssc_and        |NN const RExC_state_t *pRExC_state \
                                |NN regnode_ssc *ssc                \
                                |NN const regnode_charclass *and_with
-Es     |void   |ssc_or         |NN const RExC_state_t *pRExC_state \
+ES     |void   |ssc_or         |NN const RExC_state_t *pRExC_state \
                                |NN regnode_ssc *ssc \
                                |NN const regnode_charclass *or_with
-Es     |SV*    |get_ANYOF_cp_list_for_ssc                                 \
+ES     |SV*    |get_ANYOF_cp_list_for_ssc                                 \
                                |NN const RExC_state_t *pRExC_state \
                                |NN const regnode_charclass* const node
 Ei     |void   |ssc_intersection|NN regnode_ssc *ssc \
@@ -2470,36 +2532,36 @@ Ei      |void   |ssc_add_range  |NN regnode_ssc *ssc \
                                |UV const start|UV const end
 Ei     |void   |ssc_cp_and     |NN regnode_ssc *ssc \
                                |UV const cp
-Ein    |void   |ssc_clear_locale|NN regnode_ssc *ssc
-Ens    |bool   |is_ssc_worth_it|NN const RExC_state_t * pRExC_state \
+EiT    |void   |ssc_clear_locale|NN regnode_ssc *ssc
+ETS    |bool   |is_ssc_worth_it|NN const RExC_state_t * pRExC_state \
                                |NN const regnode_ssc * ssc
-Es     |void   |ssc_finalize   |NN RExC_state_t *pRExC_state \
+ES     |void   |ssc_finalize   |NN RExC_state_t *pRExC_state \
                                |NN regnode_ssc *ssc
-Es     |SSize_t|study_chunk    |NN RExC_state_t *pRExC_state \
+ES     |SSize_t|study_chunk    |NN RExC_state_t *pRExC_state \
                                |NN regnode **scanp|NN SSize_t *minlenp \
                                |NN SSize_t *deltap|NN regnode *last \
                                |NULLOK struct scan_data_t *data \
                                 |I32 stopparen|U32 recursed_depth \
                                |NULLOK regnode_ssc *and_withp \
                                |U32 flags|U32 depth
-EsR    |SV *   |get_ANYOFM_contents|NN const regnode * n
-EsRn   |U32    |add_data       |NN RExC_state_t* const pRExC_state \
+ESR    |SV *   |get_ANYOFM_contents|NN const regnode * n
+ESRT   |U32    |add_data       |NN RExC_state_t* const pRExC_state \
                                |NN const char* const s|const U32 n
-rs     |void   |re_croak2      |bool utf8|NN const char* pat1|NN const char* pat2|...
-Es     |int    |handle_possible_posix                                      \
+rS     |void   |re_croak2      |bool utf8|NN const char* pat1|NN const char* pat2|...
+ES     |int    |handle_possible_posix                                      \
                                |NN RExC_state_t *pRExC_state               \
                                |NN const char* const s                     \
                                |NULLOK char ** updated_parse_ptr           \
                                |NULLOK AV** posix_warnings                 \
                                |const bool check_only
-Es     |I32    |make_trie      |NN RExC_state_t *pRExC_state \
+ES     |I32    |make_trie      |NN RExC_state_t *pRExC_state \
                                |NN regnode *startbranch|NN regnode *first \
                                |NN regnode *last|NN regnode *tail \
                                |U32 word_count|U32 flags|U32 depth
-Es     |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \
+ES     |regnode *|construct_ahocorasick_from_trie|NN RExC_state_t *pRExC_state \
                                 |NN regnode *source|U32 depth
-EnsR   |const char *|cntrl_to_mnemonic|const U8 c
-EnsR   |int    |edit_distance  |NN const UV *src                   \
+ETSR   |const char *|cntrl_to_mnemonic|const U8 c
+ETSR   |int    |edit_distance  |NN const UV *src                   \
                                |NN const UV *tgt                   \
                                |const STRLEN x                     \
                                |const STRLEN y                     \
@@ -2525,48 +2587,48 @@ EXp     |SV *   |handle_user_defined_property|NN const char * name          \
                                             |const STRLEN level
 #  ifdef DEBUGGING
 Ep     |int    |re_indentf     |NN const char *fmt|U32 depth|...
-Es     |void        |regdump_intflags|NULLOK const char *lead| const U32 flags
-Es     |void   |regdump_extflags|NULLOK const char *lead| const U32 flags
-Es     |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
+ES     |void        |regdump_intflags|NULLOK const char *lead| const U32 flags
+ES     |void   |regdump_extflags|NULLOK const char *lead| const U32 flags
+ES     |const regnode*|dumpuntil|NN const regexp *r|NN const regnode *start \
                                |NN const regnode *node \
                                |NULLOK const regnode *last \
                                |NULLOK const regnode *plast \
                                |NN SV* sv|I32 indent|U32 depth
-Es     |void   |put_code_point |NN SV* sv|UV c
-Es     |bool   |put_charclass_bitmap_innards|NN SV* sv             \
+ES     |void   |put_code_point |NN SV* sv|UV c
+ES     |bool   |put_charclass_bitmap_innards|NN SV* sv             \
                                |NULLOK char* bitmap                \
                                |NULLOK SV* nonbitmap_invlist       \
                                |NULLOK SV* only_utf8_locale_invlist\
                                |NULLOK const regnode * const node  \
                                |const bool force_as_is_display
-Es     |SV*    |put_charclass_bitmap_innards_common                \
+ES     |SV*    |put_charclass_bitmap_innards_common                \
                                |NN SV* invlist                     \
                                |NULLOK SV* posixes                 \
                                |NULLOK SV* only_utf8               \
                                |NULLOK SV* not_utf8                \
                                |NULLOK SV* only_utf8_locale        \
                                |const bool invert
-Es     |void   |put_charclass_bitmap_innards_invlist               \
+ES     |void   |put_charclass_bitmap_innards_invlist               \
                                |NN SV *sv                          \
                                |NN SV* invlist
-Es     |void   |put_range      |NN SV* sv|UV start|const UV end    \
+ES     |void   |put_range      |NN SV* sv|UV start|const UV end    \
                                |const bool allow_literals
-Es     |void   |dump_trie      |NN const struct _reg_trie_data *trie\
+ES     |void   |dump_trie      |NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 depth
-Es     |void   |dump_trie_interim_list|NN const struct _reg_trie_data *trie\
+ES     |void   |dump_trie_interim_list|NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 next_alloc|U32 depth
-Es     |void   |dump_trie_interim_table|NN const struct _reg_trie_data *trie\
+ES     |void   |dump_trie_interim_table|NN const struct _reg_trie_data *trie\
                                |NULLOK HV* widecharmap|NN AV *revcharmap\
                                |U32 next_alloc|U32 depth
-Es     |bool   |regtail_study  |NN RExC_state_t *pRExC_state \
+ES     |bool   |regtail_study  |NN RExC_state_t *pRExC_state \
                                |NN regnode_offset p|NN const regnode_offset val|U32 depth
 #  endif
 #endif
 
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_UTF8_C)
-EXRpM  |bool   |isFOO_lc       |const U8 classnum|const U8 character
+EXRpx  |bool   |isFOO_lc       |const U8 classnum|const U8 character
 #endif
 
 #if defined(PERL_IN_REGEXEC_C) || defined(PERL_IN_TOKE_C)
@@ -2574,92 +2636,92 @@ ERp     |bool   |_is_grapheme   |NN const U8 * strbeg|NN const U8 * s|NN const U8 *stren
 #endif
 
 #if defined(PERL_IN_REGEXEC_C)
-ERs    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character|NN const U8* e
-ERns   |U8 *   |find_next_masked|NN U8 * s                             \
+ERS    |bool   |isFOO_utf8_lc  |const U8 classnum|NN const U8* character|NN const U8* e
+ERTS   |U8 *   |find_next_masked|NN U8 * s                             \
                                 |NN const U8 * send                    \
                                 |const U8 byte|const U8 mask
-ERns   |U8 *|find_span_end     |NN U8* s|NN const U8 * send|const U8 span_byte
-ERns   |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send   \
+ERTS   |U8 *|find_span_end     |NN U8* s|NN const U8 * send|const U8 span_byte
+ERTS   |U8 *|find_span_end_mask|NN U8 * s|NN const U8 * send   \
                                |const U8 span_byte|const U8 mask
-ERs    |SSize_t|regmatch       |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
-WERs   |I32    |regrepeat      |NN regexp *prog|NN char **startposp \
+ERS    |SSize_t|regmatch       |NN regmatch_info *reginfo|NN char *startpos|NN regnode *prog
+WERS   |I32    |regrepeat      |NN regexp *prog|NN char **startposp \
                                |NN const regnode *p \
                                |NN char *loceol                \
                                |NN regmatch_info *const reginfo \
                                |I32 max
-ERs    |bool   |regtry         |NN regmatch_info *reginfo|NN char **startposp
-ERs    |bool   |reginclass     |NULLOK regexp * const prog  \
+ERS    |bool   |regtry         |NN regmatch_info *reginfo|NN char **startposp
+ERS    |bool   |reginclass     |NULLOK regexp * const prog  \
                                |NN const regnode * const n  \
                                |NN const U8 * const p       \
                                |NN const U8 * const p_end   \
                                |bool const utf8_target
-WEs    |CHECKPOINT|regcppush   |NN const regexp *rex|I32 parenfloor\
+WES    |CHECKPOINT|regcppush   |NN const regexp *rex|I32 parenfloor\
                                |U32 maxopenparen
-WEs    |void   |regcppop       |NN regexp *rex|NN U32 *maxopenparen_p
-WEs    |void   |regcp_restore  |NN regexp *rex|I32 ix|NN U32 *maxopenparen_p
-ERsn   |U8*    |reghop3        |NN U8 *s|SSize_t off|NN const U8 *lim
-ERsn   |U8*    |reghop4        |NN U8 *s|SSize_t off|NN const U8 *llim \
+WES    |void   |regcppop       |NN regexp *rex|NN U32 *maxopenparen_p
+WES    |void   |regcp_restore  |NN regexp *rex|I32 ix|NN U32 *maxopenparen_p
+ERST   |U8*    |reghop3        |NN U8 *s|SSize_t off|NN const U8 *lim
+ERST   |U8*    |reghop4        |NN U8 *s|SSize_t off|NN const U8 *llim \
                                |NN const U8 *rlim
-ERsn   |U8*    |reghopmaybe3   |NN U8 *s|SSize_t off|NN const U8 * const lim
-ERs    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c \
+ERST   |U8*    |reghopmaybe3   |NN U8 *s|SSize_t off|NN const U8 * const lim
+ERS    |char*  |find_byclass   |NN regexp * prog|NN const regnode *c \
                                |NN char *s|NN const char *strend \
                                |NULLOK regmatch_info *reginfo
-Es     |void   |to_utf8_substr |NN regexp * prog
-Es     |bool   |to_byte_substr |NN regexp * prog
-ERsn   |I32    |reg_check_named_buff_matched   |NN const regexp *rex \
+ES     |void   |to_utf8_substr |NN regexp * prog
+ES     |bool   |to_byte_substr |NN regexp * prog
+ERST   |I32    |reg_check_named_buff_matched   |NN const regexp *rex \
                                                |NN const regnode *scan
-EsR    |bool   |isGCB          |const GCB_enum before                  \
+ESR    |bool   |isGCB          |const GCB_enum before                  \
                                |const GCB_enum after                   \
                                |NN const U8 * const strbeg             \
                                |NN const U8 * const curpos             \
                                |const bool utf8_target
-EsR    |GCB_enum|backup_one_GCB|NN const U8 * const strbeg                     \
+ESR    |GCB_enum|backup_one_GCB|NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
-EsR    |bool   |isLB           |LB_enum before                         \
+ESR    |bool   |isLB           |LB_enum before                         \
                                |LB_enum after                          \
                                |NN const U8 * const strbeg             \
                                |NN const U8 * const curpos             \
                                |NN const U8 * const strend             \
                                |const bool utf8_target
-EsR    |LB_enum|advance_one_LB |NN U8 ** curpos                                \
+ESR    |LB_enum|advance_one_LB |NN U8 ** curpos                                \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |LB_enum|backup_one_LB  |NN const U8 * const strbeg                     \
+ESR    |LB_enum|backup_one_LB  |NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
-EsR    |bool   |isSB           |SB_enum before                         \
+ESR    |bool   |isSB           |SB_enum before                         \
                                |SB_enum after                          \
                                |NN const U8 * const strbeg                     \
                                |NN const U8 * const curpos                     \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |SB_enum|advance_one_SB |NN U8 ** curpos                                \
+ESR    |SB_enum|advance_one_SB |NN U8 ** curpos                                \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |SB_enum|backup_one_SB  |NN const U8 * const strbeg                     \
+ESR    |SB_enum|backup_one_SB  |NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
-EsR    |bool   |isWB           |WB_enum previous                               \
+ESR    |bool   |isWB           |WB_enum previous                               \
                                |WB_enum before                         \
                                |WB_enum after                          \
                                |NN const U8 * const strbeg                     \
                                |NN const U8 * const curpos                     \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target
-EsR    |WB_enum|advance_one_WB |NN U8 ** curpos                                \
+ESR    |WB_enum|advance_one_WB |NN U8 ** curpos                                \
                                |NN const U8 * const strend                     \
                                |const bool utf8_target                         \
                                |const bool skip_Extend_Format
-EsR    |WB_enum|backup_one_WB  |NN WB_enum * previous                  \
+ESR    |WB_enum|backup_one_WB  |NN WB_enum * previous                  \
                                |NN const U8 * const strbeg                     \
                                |NN U8 ** curpos                                \
                                |const bool utf8_target
-Ein    |I32    |foldEQ_latin1_s2_folded|NN const char* a|NN const char* b|I32 len
+EiT    |I32    |foldEQ_latin1_s2_folded|NN const char* a|NN const char* b|I32 len
 #  ifdef DEBUGGING
-Es     |void   |dump_exec_pos  |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\
+ES     |void   |dump_exec_pos  |NN const char *locinput|NN const regnode *scan|NN const char *loc_regeol\
                                |NN const char *loc_bostr|NN const char *loc_reg_starttry|const bool do_utf8|const U32 depth
-Es     |void   |debug_start_match|NN const REGEXP *prog|const bool do_utf8\
+ES     |void   |debug_start_match|NN const REGEXP *prog|const bool do_utf8\
                                |NN const char *start|NN const char *end\
                                |NN const char *blurb
 
@@ -2668,14 +2730,14 @@ Ep      |int    |re_exec_indentf        |NN const char *fmt|U32 depth|...
 #endif
 
 #if defined(PERL_IN_DUMP_C)
-s      |CV*    |deb_curcv      |I32 ix
-s      |void   |debprof        |NN const OP *o
-s      |UV     |sequence_num   |NULLOK const OP *o
-s      |SV*    |pm_description |NN const PMOP *pm
+S      |CV*    |deb_curcv      |I32 ix
+S      |void   |debprof        |NN const OP *o
+S      |UV     |sequence_num   |NULLOK const OP *o
+S      |SV*    |pm_description |NN const PMOP *pm
 #endif
 
 #if defined(PERL_IN_SCOPE_C)
-s      |SV*    |save_scalar_at |NN SV **sptr|const U32 flags
+S      |SV*    |save_scalar_at |NN SV **sptr|const U32 flags
 #endif
 
 #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_IN_OP_C)
@@ -2685,7 +2747,7 @@ po        |void   |sv_add_backref |NN SV *const tsv|NN SV *const sv
 
 #if defined(PERL_IN_HV_C) || defined(PERL_IN_MG_C) || defined(PERL_IN_SV_C)
 : Used in hv.c and mg.c
-poM    |void   |sv_kill_backrefs       |NN SV *const sv|NULLOK AV *const av
+pox    |void   |sv_kill_backrefs       |NN SV *const sv|NULLOK AV *const av
 #endif
 
 #if defined(PERL_IN_SV_C) || defined (PERL_IN_OP_C)
@@ -2696,46 +2758,46 @@ pR      |SV *   |varname        |NULLOK const GV *const gv|const char gvtype \
 
 pX     |void   |sv_del_backref |NN SV *const tsv|NN SV *const sv
 #if defined(PERL_IN_SV_C)
-niR    |char * |uiv_2buf       |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob
+TiR    |char * |uiv_2buf       |NN char *const buf|const IV iv|UV uv|const int is_uv|NN char **const peob
 i      |void   |sv_unglob      |NN SV *const sv|U32 flags
-s      |const char *|sv_display        |NN SV *const sv|NN char *tmpbuf|STRLEN tmpbuf_size
-s      |void   |not_a_number   |NN SV *const sv
-s      |void   |not_incrementable      |NN SV *const sv
-s      |I32    |visit          |NN SVFUNC_t f|const U32 flags|const U32 mask
+S      |const char *|sv_display        |NN SV *const sv|NN char *tmpbuf|STRLEN tmpbuf_size
+S      |void   |not_a_number   |NN SV *const sv
+S      |void   |not_incrementable      |NN SV *const sv
+S      |I32    |visit          |NN SVFUNC_t f|const U32 flags|const U32 mask
 #  ifdef DEBUGGING
-s      |void   |del_sv |NN SV *p
+S      |void   |del_sv |NN SV *p
 #  endif
 #  if !defined(NV_PRESERVES_UV)
 #    ifdef DEBUGGING
-s      |int    |sv_2iuv_non_preserve   |NN SV *const sv|I32 numtype
+S      |int    |sv_2iuv_non_preserve   |NN SV *const sv|I32 numtype
 #    else
-s      |int    |sv_2iuv_non_preserve   |NN SV *const sv
+S      |int    |sv_2iuv_non_preserve   |NN SV *const sv
 #    endif
 #  endif
-sR     |STRLEN |expect_number  |NN const char **const pattern
-sn     |STRLEN |sv_pos_u2b_forwards|NN const U8 *const start \
+SR     |STRLEN |expect_number  |NN const char **const pattern
+ST     |STRLEN |sv_pos_u2b_forwards|NN const U8 *const start \
                |NN const U8 *const send|NN STRLEN *const uoffset \
                |NN bool *const at_end
-sn     |STRLEN |sv_pos_u2b_midway|NN const U8 *const start \
+ST     |STRLEN |sv_pos_u2b_midway|NN const U8 *const start \
                |NN const U8 *send|STRLEN uoffset|const STRLEN uend
-s      |STRLEN |sv_pos_u2b_cached|NN SV *const sv|NN MAGIC **const mgp \
+S      |STRLEN |sv_pos_u2b_cached|NN SV *const sv|NN MAGIC **const mgp \
                |NN const U8 *const start|NN const U8 *const send \
                |STRLEN uoffset|STRLEN uoffset0|STRLEN boffset0
-s      |void   |utf8_mg_len_cache_update|NN SV *const sv|NN MAGIC **const mgp \
+S      |void   |utf8_mg_len_cache_update|NN SV *const sv|NN MAGIC **const mgp \
                |const STRLEN ulen
-s      |void   |utf8_mg_pos_cache_update|NN SV *const sv|NN MAGIC **const mgp \
+S      |void   |utf8_mg_pos_cache_update|NN SV *const sv|NN MAGIC **const mgp \
                |const STRLEN byte|const STRLEN utf8|const STRLEN blen
-s      |STRLEN |sv_pos_b2u_midway|NN const U8 *const s|NN const U8 *const target \
+S      |STRLEN |sv_pos_b2u_midway|NN const U8 *const s|NN const U8 *const target \
                |NN const U8 *end|STRLEN endu
-s      |void   |assert_uft8_cache_coherent|NN const char *const func \
+S      |void   |assert_uft8_cache_coherent|NN const char *const func \
                |STRLEN from_cache|STRLEN real|NN SV *const sv
-sn     |char * |F0convert      |NV nv|NN char *const endbuf|NN STRLEN *const len
-s      |SV *   |more_sv
-s      |bool   |sv_2iuv_common |NN SV *const sv
-s      |void   |glob_assign_glob|NN SV *const dstr|NN SV *const sstr \
+ST     |char * |F0convert      |NV nv|NN char *const endbuf|NN STRLEN *const len
+S      |SV *   |more_sv
+S      |bool   |sv_2iuv_common |NN SV *const sv
+S      |void   |glob_assign_glob|NN SV *const dstr|NN SV *const sstr \
                |const int dtype
-sRn    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *const tbl|NULLOK const void *const sv
-s      |void   |anonymise_cv_maybe     |NN GV *gv|NN CV *cv
+SRT    |PTR_TBL_ENT_t *|ptr_table_find|NN PTR_TBL_t *const tbl|NULLOK const void *const sv
+S      |void   |anonymise_cv_maybe     |NN GV *gv|NN CV *cv
 #endif
 
 : Used in sv.c and hv.c
@@ -2747,122 +2809,122 @@ EXpR  |SV*    |get_and_check_backslash_N_name|NN const char* s        \
                                |NN const char** error_msg
 
 : For use ONLY in B::Hooks::Parser, by special dispensation
-EXpMR  |char*  |scan_str       |NN char *start|int keep_quoted \
+EXpxR  |char*  |scan_str       |NN char *start|int keep_quoted \
                                |int keep_delims|int re_reparse \
                                |NULLOK char **delimp
-EXpM   |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
+EXpx   |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
                                |int allow_package|NN STRLEN *slp
-EXpMR  |char*  |skipspace_flags|NN char *s|U32 flags
+EXpxR  |char*  |skipspace_flags|NN char *s|U32 flags
 #if defined(PERL_IN_TOKE_C)
-s      |void   |check_uni
-s      |void   |force_next     |I32 type
-s      |char*  |force_version  |NN char *s|int guessing
-s      |char*  |force_strict_version   |NN char *s
-s      |char*  |force_word     |NN char *start|int token|int check_keyword \
+S      |void   |check_uni
+S      |void   |force_next     |I32 type
+S      |char*  |force_version  |NN char *s|int guessing
+S      |char*  |force_strict_version   |NN char *s
+S      |char*  |force_word     |NN char *start|int token|int check_keyword \
                                |int allow_pack
-s      |SV*    |tokeq          |NN SV *sv
-sR     |char*  |scan_const     |NN char *start
-sR     |SV*    |get_and_check_backslash_N_name_wrapper|NN const char* s \
+S      |SV*    |tokeq          |NN SV *sv
+SR     |char*  |scan_const     |NN char *start
+SR     |SV*    |get_and_check_backslash_N_name_wrapper|NN const char* s \
                                |NN const char* const e
-sR     |char*  |scan_formline  |NN char *s
-sR     |char*  |scan_heredoc   |NN char *s
-s      |char*  |scan_ident     |NN char *s|NN char *dest       \
+SR     |char*  |scan_formline  |NN char *s
+SR     |char*  |scan_heredoc   |NN char *s
+S      |char*  |scan_ident     |NN char *s|NN char *dest       \
                                |STRLEN destlen|I32 ck_uni
-sR     |char*  |scan_inputsymbol|NN char *start
-sR     |char*  |scan_pat       |NN char *start|I32 type
-sR     |char*  |scan_subst     |NN char *start
-sR     |char*  |scan_trans     |NN char *start
-s      |void   |update_debugger_info|NULLOK SV *orig_sv \
+SR     |char*  |scan_inputsymbol|NN char *start
+SR     |char*  |scan_pat       |NN char *start|I32 type
+SR     |char*  |scan_subst     |NN char *start
+SR     |char*  |scan_trans     |NN char *start
+S      |void   |update_debugger_info|NULLOK SV *orig_sv \
                                |NULLOK const char *const buf|STRLEN len
-sR     |char*  |swallow_bom    |NN U8 *s
+SR     |char*  |swallow_bom    |NN U8 *s
 #ifndef PERL_NO_UTF16_FILTER
-s      |I32    |utf16_textfilter|int idx|NN SV *sv|int maxlen
-s      |U8*    |add_utf16_textfilter|NN U8 *const s|bool reversed
+S      |I32    |utf16_textfilter|int idx|NN SV *sv|int maxlen
+S      |U8*    |add_utf16_textfilter|NN U8 *const s|bool reversed
 #endif
-s      |void   |checkcomma     |NN const char *s|NN const char *name \
+S      |void   |checkcomma     |NN const char *s|NN const char *name \
                                |NN const char *what
-s      |void   |force_ident    |NN const char *s|int kind
-s      |void   |force_ident_maybe_lex|char pit
-s      |void   |incline        |NN const char *s|NN const char *end
-s      |int    |intuit_method  |NN char *s|NULLOK SV *ioname|NULLOK CV *cv
-s      |int    |intuit_more    |NN char *s|NN char *e
-s      |I32    |lop            |I32 f|U8 x|NN char *s
-rs     |void   |missingterm    |NULLOK char *s|STRLEN len
-s      |void   |no_op          |NN const char *const what|NULLOK char *s
-s      |int    |pending_ident
-sR     |I32    |sublex_done
-sR     |I32    |sublex_push
-sR     |I32    |sublex_start
-sR     |char * |filter_gets    |NN SV *sv|STRLEN append
-sR     |HV *   |find_in_my_stash|NN const char *pkgname|STRLEN len
-sR     |char * |tokenize_use   |int is_use|NN char *s
-so     |SV*    |new_constant   |NULLOK const char *s|STRLEN len            \
+S      |void   |force_ident    |NN const char *s|int kind
+S      |void   |force_ident_maybe_lex|char pit
+S      |void   |incline        |NN const char *s|NN const char *end
+S      |int    |intuit_method  |NN char *s|NULLOK SV *ioname|NULLOK CV *cv
+S      |int    |intuit_more    |NN char *s|NN char *e
+S      |I32    |lop            |I32 f|U8 x|NN char *s
+rS     |void   |missingterm    |NULLOK char *s|STRLEN len
+S      |void   |no_op          |NN const char *const what|NULLOK char *s
+S      |int    |pending_ident
+SR     |I32    |sublex_done
+SR     |I32    |sublex_push
+SR     |I32    |sublex_start
+SR     |char * |filter_gets    |NN SV *sv|STRLEN append
+SR     |HV *   |find_in_my_stash|NN const char *pkgname|STRLEN len
+SR     |char * |tokenize_use   |int is_use|NN char *s
+So     |SV*    |new_constant   |NULLOK const char *s|STRLEN len            \
                                |NN const char *key|STRLEN keylen|NN SV *sv \
                                |NULLOK SV *pv|NULLOK const char *type      \
                                |STRLEN typelen                             \
                                |NULLOK const char ** error_msg
-s      |int    |ao             |int toketype
-s      |void|parse_ident|NN char **s|NN char **d \
+S      |int    |ao             |int toketype
+S      |void|parse_ident|NN char **s|NN char **d \
                      |NN char * const e|int allow_package \
                                |bool is_utf8|bool check_dollar \
                                |bool tick_warn
 #  if defined(PERL_CR_FILTER)
-s      |I32    |cr_textfilter  |int idx|NULLOK SV *sv|int maxlen
-s      |void   |strip_return   |NN SV *sv
+S      |I32    |cr_textfilter  |int idx|NULLOK SV *sv|int maxlen
+S      |void   |strip_return   |NN SV *sv
 #  endif
 #  if defined(DEBUGGING)
-s      |int    |tokereport     |I32 rv|NN const YYSTYPE* lvalp
-sf     |void   |printbuf       |NN const char *const fmt|NN const char *const s
+S      |int    |tokereport     |I32 rv|NN const YYSTYPE* lvalp
+Sf     |void   |printbuf       |NN const char *const fmt|NN const char *const s
 #  endif
 #endif
-EXMp   |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \
+EXxp   |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \
                |bool curstash
 
 #if defined(PERL_IN_UNIVERSAL_C)
-s      |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
+S      |bool   |isa_lookup     |NN HV *stash|NN const char * const name \
                                         |STRLEN len|U32 flags
 #endif
 
 #if defined(PERL_IN_LOCALE_C)
 #  ifdef USE_LOCALE
-sn     |const char*|category_name |const int category
-s      |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale
-s      |void   |restore_switched_locale|const int category|NULLOK const char * const original_locale
+ST     |const char*|category_name |const int category
+S      |const char*|switch_category_locale_to_template|const int switch_category|const int template_category|NULLOK const char * template_locale
+S      |void   |restore_switched_locale|const int category|NULLOK const char * const original_locale
 #  endif
 #  ifdef HAS_NL_LANGINFO
-sn     |const char*|my_nl_langinfo|const nl_item item|bool toggle
+ST     |const char*|my_nl_langinfo|const nl_item item|bool toggle
 #  else
-sn     |const char*|my_nl_langinfo|const int item|bool toggle
+ST     |const char*|my_nl_langinfo|const int item|bool toggle
 #  endif
-inR    |const char *|save_to_buffer|NULLOK const char * string \
+iTR    |const char *|save_to_buffer|NULLOK const char * string \
                                    |NULLOK char **buf          \
                                    |NN Size_t *buf_size        \
                                    |const Size_t offset
 #  if defined(USE_LOCALE)
-s      |char*  |stdize_locale  |NN char* locs
-s      |void   |new_collate    |NULLOK const char* newcoll
-s      |void   |new_ctype      |NN const char* newctype
-s      |void   |set_numeric_radix|const bool use_locale
-s      |void   |new_numeric    |NULLOK const char* newnum
+S      |char*  |stdize_locale  |NN char* locs
+S      |void   |new_collate    |NULLOK const char* newcoll
+S      |void   |new_ctype      |NN const char* newctype
+S      |void   |set_numeric_radix|const bool use_locale
+S      |void   |new_numeric    |NULLOK const char* newnum
 #    ifdef USE_POSIX_2008_LOCALE
-sn     |const char*|emulate_setlocale|const int category               \
+ST     |const char*|emulate_setlocale|const int category               \
                                    |NULLOK const char* locale          \
                                    |unsigned int index                 \
                                    |const bool is_index_valid
 #    endif
 #    ifdef WIN32
-s      |char*  |win32_setlocale|int category|NULLOK const char* locale
+S      |char*  |win32_setlocale|int category|NULLOK const char* locale
 #    endif
 #    ifdef DEBUGGING
-s      |void   |print_collxfrm_input_and_return                \
+S      |void   |print_collxfrm_input_and_return                \
                            |NN const char * const s            \
                            |NN const char * const e            \
                            |NULLOK const STRLEN * const xlen   \
                            |const bool is_utf8
-s      |void   |print_bytes_for_locale |NN const char * const s        \
+S      |void   |print_bytes_for_locale |NN const char * const s        \
                                        |NN const char * const e        \
                                        |const bool is_utf8
-snR    |char * |setlocale_debug_string |const int category                 \
+STR    |char * |setlocale_debug_string |const int category                 \
                                        |NULLOK const char* const locale    \
                                        |NULLOK const char* const retval
 #    endif
@@ -2874,16 +2936,16 @@ snR     |char * |setlocale_debug_string |const int category                 \
         || defined(PERL_IN_MG_C)       \
        || defined (PERL_EXT_POSIX)     \
        || defined (PERL_EXT_LANGINFO))
-ApM    |bool   |_is_cur_LC_category_utf8|int category
+Apx    |bool   |_is_cur_LC_category_utf8|int category
 #endif
 
 
 #if defined(PERL_IN_UTIL_C)
-s      |SV*    |mess_alloc
-s      |SV *   |with_queued_errors|NN SV *ex
-s      |bool   |invoke_exception_hook|NULLOK SV *ex|bool warn
+S      |SV*    |mess_alloc
+S      |SV *   |with_queued_errors|NN SV *ex
+S      |bool   |invoke_exception_hook|NULLOK SV *ex|bool warn
 #if defined(PERL_MEM_LOG) && !defined(PERL_MEM_LOG_NOIMPL)
-sn     |void   |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
+ST     |void   |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
                                |NN const char *type_name|NULLOK const SV *sv \
                                |Malloc_t oldalloc|Malloc_t newalloc \
                                |NN const char *filename|const int linenumber \
@@ -2892,16 +2954,16 @@ sn      |void   |mem_log_common |enum mem_log_type mlt|const UV n|const UV typesize \
 #endif
 
 #if defined(PERL_MEM_LOG)
-pn     |Malloc_t       |mem_log_alloc  |const UV nconst|UV typesize|NN const char *type_name|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
-pn     |Malloc_t       |mem_log_realloc        |const UV n|const UV typesize|NN const char *type_name|Malloc_t oldalloc|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
-pn     |Malloc_t       |mem_log_free   |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pT     |Malloc_t       |mem_log_alloc  |const UV nconst|UV typesize|NN const char *type_name|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pT     |Malloc_t       |mem_log_realloc        |const UV n|const UV typesize|NN const char *type_name|Malloc_t oldalloc|Malloc_t newalloc|NN const char *filename|const int linenumber|NN const char *funcname
+pT     |Malloc_t       |mem_log_free   |Malloc_t oldalloc|NN const char *filename|const int linenumber|NN const char *funcname
 #endif
 
 #if defined(PERL_IN_UTF8_C)
-sR     |HV *   |new_msg_hv |NN const char * const message                  \
+SR     |HV *   |new_msg_hv |NN const char * const message                  \
                            |U32 categories                                 \
                            |U32 flag
-sRM    |UV     |check_locale_boundary_crossing                             \
+SRx    |UV     |check_locale_boundary_crossing                             \
                |NN const U8* const p                                       \
                |const UV result                                            \
                |NN U8* const ustrp                                         \
@@ -2911,13 +2973,13 @@ iR      |bool   |is_utf8_common |NN const U8 *const p                       \
 iR     |bool   |is_utf8_common_with_len|NN const U8 *const p               \
                                        |NN const U8 *const e               \
                                        |NULLOK SV* const invlist
-sR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
-sRM    |U8*    |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \
+SR     |SV*    |swatch_get     |NN SV* swash|UV start|UV span
+SRx    |U8*    |swash_scan_list_line|NN U8* l|NN U8* const lend|NN UV* min \
                |NN UV* max|NN UV* val|const bool wants_value               \
                |NN const U8* const typestr
 #endif
 
-EXiMn  |void   |append_utf8_from_native_byte|const U8 byte|NN U8** dest
+EXixT  |void   |append_utf8_from_native_byte|const U8 byte|NN U8** dest
 
 Apd    |void   |sv_set_undef   |NN SV *sv
 Apd    |void   |sv_setsv_flags |NN SV *dstr|NULLOK SV *sstr|const I32 flags
@@ -2934,11 +2996,11 @@ Apmd    |void   |sv_copypv_nomg |NN SV *const dsv|NN SV *const ssv
 Apd    |void   |sv_copypv_flags        |NN SV *const dsv|NN SV *const ssv|const I32 flags
 Apo    |char*  |my_atof2       |NN const char *orig|NN NV* value
 Ap     |char*  |my_atof3       |NN const char *orig|NN NV* value|const STRLEN len
-Apn    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
-Apn    |int    |my_dirfd       |NULLOK DIR* dir
+ApT    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
+ApT    |int    |my_dirfd       |NULLOK DIR* dir
 #ifdef PERL_ANY_COW
 : Used in pp_hot.c and regexec.c
-pMXE   |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
+pxXE   |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
 #endif
 
 Aop    |const char *|PerlIO_context_layers|NULLOK const char *mode
@@ -2979,17 +3041,17 @@ ApR     |PerlIO *|PerlIO_stderr
 : Only used in dump.c
 p      |void   |deb_stack_all
 #if defined(PERL_IN_DEB_C)
-s      |void   |deb_stack_n    |NN SV** stack_base|I32 stack_min \
+S      |void   |deb_stack_n    |NN SV** stack_base|I32 stack_min \
                                |I32 stack_max|I32 mark_min|I32 mark_max
 #endif
 
 : pad API
 ApdR   |PADLIST*|pad_new       |int flags
 #ifdef DEBUGGING
-pnX    |void|set_padlist| NN CV * cv | NULLOK PADLIST * padlist
+pTX    |void|set_padlist| NN CV * cv | NULLOK PADLIST * padlist
 #endif
 #if defined(PERL_IN_PAD_C)
-s      |PADOFFSET|pad_alloc_name|NN PADNAME *name|U32 flags \
+S      |PADOFFSET|pad_alloc_name|NN PADNAME *name|U32 flags \
                                |NULLOK HV *typestash|NULLOK HV *ourstash
 #endif
 Apd    |PADOFFSET|pad_add_name_pvn|NN const char *namepv|STRLEN namelen\
@@ -3001,11 +3063,11 @@ Apd     |PADOFFSET|pad_add_name_pv|NN const char *name\
 Apd    |PADOFFSET|pad_add_name_sv|NN SV *name\
                                |U32 flags|NULLOK HV *typestash\
                                |NULLOK HV *ourstash
-AMpd   |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
+Axpd   |PADOFFSET|pad_alloc    |I32 optype|U32 tmptype
 Apd    |PADOFFSET|pad_add_anon |NN CV* func|I32 optype
 p      |void   |pad_add_weakref|NN CV* func
 #if defined(PERL_IN_PAD_C)
-sd     |void   |pad_check_dup  |NN PADNAME *name|U32 flags \
+Sd     |void   |pad_check_dup  |NN PADNAME *name|U32 flags \
                                |NULLOK const HV *ourstash
 #endif
 Apd    |PADOFFSET|pad_findmy_pvn|NN const char* namepv|STRLEN namelen|U32 flags
@@ -3014,7 +3076,7 @@ Apd       |PADOFFSET|pad_findmy_sv|NN SV* name|U32 flags
 ApdD   |PADOFFSET|find_rundefsvoffset  |
 Apd    |SV*    |find_rundefsv  |
 #if defined(PERL_IN_PAD_C)
-sd     |PADOFFSET|pad_findlex  |NN const char *namepv|STRLEN namelen|U32 flags \
+Sd     |PADOFFSET|pad_findlex  |NN const char *namepv|STRLEN namelen|U32 flags \
                                |NN const CV* cv|U32 seq|int warn \
                                |NULLOK SV** out_capture \
                                |NN PADNAME** out_name|NN int *out_flags
@@ -3028,14 +3090,14 @@ Apd     |U32    |intro_my
 pd     |OP *   |pad_leavemy
 pd     |void   |pad_swipe      |PADOFFSET po|bool refadjust
 #if defined(PERL_IN_PAD_C)
-sd     |void   |pad_reset
+Sd     |void   |pad_reset
 #endif
-AMpd   |void   |pad_tidy       |padtidy_type type
+Axpd   |void   |pad_tidy       |padtidy_type type
 pd     |void   |pad_free       |PADOFFSET po
 pd     |void   |do_dump_pad    |I32 level|NN PerlIO *file|NULLOK PADLIST *padlist|int full
 #if defined(PERL_IN_PAD_C)
 #  if defined(DEBUGGING)
-sd     |void   |cv_dump        |NN const CV *cv|NN const char *title
+Sd     |void   |cv_dump        |NN const CV *cv|NN const char *title
 #  endif
 #endif
 Apd    |CV*    |cv_clone       |NN CV* proto
@@ -3043,9 +3105,9 @@ p |CV*    |cv_clone_into  |NN CV* proto|NN CV *target
 pd     |void   |pad_fixup_inner_anons|NN PADLIST *padlist|NN CV *old_cv|NN CV *new_cv
 pdX    |void   |pad_push       |NN PADLIST *padlist|int depth
 ApbdR  |HV*    |pad_compname_type|const PADOFFSET po
-AMpdRn |PADNAME *|padnamelist_fetch|NN PADNAMELIST *pnl|SSize_t key
+AxpdRT |PADNAME *|padnamelist_fetch|NN PADNAMELIST *pnl|SSize_t key
 Xop    |void   |padnamelist_free|NN PADNAMELIST *pnl
-AMpd   |PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \
+Axpd   |PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \
                                     |NULLOK PADNAME *val
 Xop    |void   |padname_free   |NN PADNAME *pn
 #if defined(USE_ITHREADS)
@@ -3074,7 +3136,7 @@ Apod      |void   |hv_assert      |NN HV *hv
 
 ApdR   |SV*    |hv_scalar      |NN HV *hv
 p      |void   |hv_pushkv      |NN HV *hv|U32 flags
-ApdRM  |SV*    |hv_bucket_ratio|NN HV *hv
+ApdRx  |SV*    |hv_bucket_ratio|NN HV *hv
 ApoR   |I32*   |hv_riter_p     |NN HV *hv
 ApoR   |HE**   |hv_eiter_p     |NN HV *hv
 Apo    |void   |hv_riter_set   |NN HV *hv|I32 riter
@@ -3086,9 +3148,9 @@ p |void   |hv_ename_add   |NN HV *hv|NN const char *name|U32 len \
 p      |void   |hv_ename_delete|NN HV *hv|NN const char *name|U32 len \
                                |U32 flags
 : Used in dump.c and hv.c
-poM    |AV**   |hv_backreferences_p    |NN HV *hv
+pox    |AV**   |hv_backreferences_p    |NN HV *hv
 #if defined(PERL_IN_DUMP_C) || defined(PERL_IN_HV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_SCOPE_C)
-poM    |void   |hv_kill_backrefs       |NN HV *hv
+pox    |void   |hv_kill_backrefs       |NN HV *hv
 #endif
 Apd    |void   |hv_clear_placeholders  |NN HV *hv
 XpoR   |SSize_t*|hv_placeholders_p     |NN HV *hv
@@ -3099,11 +3161,11 @@ Apo     |void   |hv_placeholders_set    |NN HV *hv|I32 ph
 p      |SV*    |magic_scalarpack|NN HV *hv|NN MAGIC *mg
 
 #if defined(PERL_IN_SV_C)
-s      |SV *   |find_hash_subscript|NULLOK const HV *const hv \
+S      |SV *   |find_hash_subscript|NULLOK const HV *const hv \
                |NN const SV *const val
-s      |SSize_t|find_array_subscript|NULLOK const AV *const av \
+S      |SSize_t|find_array_subscript|NULLOK const AV *const av \
                |NN const SV *const val
-sMd    |SV*    |find_uninit_var|NULLOK const OP *const obase \
+Sxd    |SV*    |find_uninit_var|NULLOK const OP *const obase \
                |NULLOK const SV *const uninit_sv|bool match \
                |NN const char **desc_p
 #endif
@@ -3120,23 +3182,23 @@ p       |void   |dump_sv_child  |NN SV *sv
 Apbm   |GV*    |gv_SVadd       |NULLOK GV *gv
 #endif
 #if defined(PERL_IN_UTIL_C)
-s      |bool   |ckwarn_common  |U32 w
+S      |bool   |ckwarn_common  |U32 w
 #endif
 ApoP   |bool   |ckwarn         |U32 w
 ApoP   |bool   |ckwarn_d       |U32 w
 : FIXME - exported for ByteLoader - public or private?
-XEopMR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
+XEopxR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
                                |NN const char *const bits|STRLEN size
 
-Apnodf |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
-Apnod  |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
+AMpTodf        |int    |my_snprintf    |NN char *buffer|const Size_t len|NN const char *format|...
+AMpTod |int    |my_vsnprintf   |NN char *buffer|const Size_t len|NN const char *format|va_list ap
 #ifdef USE_QUADMATH
-Apnd   |const char*    |quadmath_format_single|NN const char* format
-Apnd   |bool|quadmath_format_needed|NN const char* format
+ApTd   |const char*    |quadmath_format_single|NN const char* format
+ApTd   |bool|quadmath_format_needed|NN const char* format
 #endif
 
 : Used in mg.c, sv.c
-px     |void   |my_clearenv
+pe     |void   |my_clearenv
 
 #ifdef PERL_IMPLICIT_CONTEXT
 #ifdef PERL_GLOBAL_STRUCT_PRIVATE
@@ -3147,42 +3209,42 @@ Apo     |void*  |my_cxt_init    |NN int *indexp|size_t size
 #endif
 #endif
 #if defined(PERL_IN_UTIL_C)
-so     |void   |xs_version_bootcheck|U32 items|U32 ax|NN const char *xs_p \
+So     |void   |xs_version_bootcheck|U32 items|U32 ax|NN const char *xs_p \
                                |STRLEN xs_len
 #endif
-Xpon   |I32    |xs_handshake   |const U32 key|NN void * v_my_perl\
+XpoT   |I32    |xs_handshake   |const U32 key|NN void * v_my_perl\
                                |NN const char * file| ...
 Xp     |void   |xs_boot_epilog |const I32 ax
 #ifndef HAS_STRLCAT
-Apnod  |Size_t |my_strlcat     |NULLOK char *dst|NULLOK const char *src|Size_t size
+ApTd   |Size_t |my_strlcat     |NULLOK char *dst|NULLOK const char *src|Size_t size
 #endif
 
 #ifndef HAS_STRLCPY
-Apnod  |Size_t |my_strlcpy     |NULLOK char *dst|NULLOK const char *src|Size_t size
+ApTd   |Size_t |my_strlcpy     |NULLOK char *dst|NULLOK const char *src|Size_t size
 #endif
 
 #ifndef HAS_STRNLEN
-Apnod  |Size_t |my_strnlen     |NN const char *str|Size_t maxlen
+ApTd   |Size_t |my_strnlen     |NN const char *str|Size_t maxlen
 #endif
 
 #ifndef HAS_MKOSTEMP
-pno    |int    |my_mkostemp    |NN char *templte|int flags
+pTo    |int    |my_mkostemp    |NN char *templte|int flags
 #endif
 #ifndef HAS_MKSTEMP
-pno    |int    |my_mkstemp     |NN char *templte
+pTo    |int    |my_mkstemp     |NN char *templte
 #endif
 
-APpdn  |bool   |isinfnan       |NV nv
+APpdT  |bool   |isinfnan       |NV nv
 p      |bool   |isinfnansv     |NN SV *sv
 
 #if !defined(HAS_SIGNBIT)
-AMdnoP |int    |Perl_signbit   |NV f
+AxdToP |int    |Perl_signbit   |NV f
 #endif
 
 : Used by B
-XEMop  |void   |emulate_cop_io |NN const COP *const c|NN SV *const sv
+XExop  |void   |emulate_cop_io |NN const COP *const c|NN SV *const sv
 : Used by SvRX and SvRXOK
-XEMop  |REGEXP *|get_re_arg|NULLOK SV *sv
+XExop  |REGEXP *|get_re_arg|NULLOK SV *sv
 
 Aop    |SV*    |mro_get_private_data|NN struct mro_meta *const smeta \
                                     |NN const struct mro_alg *const which
@@ -3201,13 +3263,13 @@ p       |struct mro_meta*       |mro_meta_dup   |NN struct mro_meta* smeta|NN CLONE_PARAMS* pa
 #endif
 Apd    |AV*    |mro_get_linear_isa|NN HV* stash
 #if defined(PERL_IN_MRO_C)
-sd     |AV*    |mro_get_linear_isa_dfs|NN HV* stash|U32 level
-s      |void   |mro_clean_isarev|NN HV * const isa   \
+Sd     |AV*    |mro_get_linear_isa_dfs|NN HV* stash|U32 level
+S      |void   |mro_clean_isarev|NN HV * const isa   \
                                 |NN const char * const name \
                                 |const STRLEN len \
                                 |NULLOK HV * const exceptions \
                                 |U32 hash|U32 flags
-s      |void   |mro_gather_and_rename|NN HV * const stashes \
+S      |void   |mro_gather_and_rename|NN HV * const stashes \
                                      |NN HV * const seen_stashes \
                                      |NULLOK HV *stash \
                                      |NULLOK HV *oldstash \
@@ -3216,27 +3278,27 @@ s       |void   |mro_gather_and_rename|NN HV * const stashes \
 : Used in hv.c, mg.c, pp.c, sv.c
 pd     |void   |mro_isa_changed_in|NN HV* stash
 Apd    |void   |mro_method_changed_in  |NN HV* stash
-pdx    |void   |mro_package_moved      |NULLOK HV * const stash|NULLOK HV * const oldstash|NN const GV * const gv|U32 flags
+pde    |void   |mro_package_moved      |NULLOK HV * const stash|NULLOK HV * const oldstash|NN const GV * const gv|U32 flags
 : Only used in perl.c
 p      |void   |boot_core_mro
-Apon   |void   |sys_init       |NN int* argc|NN char*** argv
-Apon   |void   |sys_init3      |NN int* argc|NN char*** argv|NN char*** env
-Apon   |void   |sys_term
-ApoM   |const char *|cop_fetch_label|NN COP *const cop \
+ApoT   |void   |sys_init       |NN int* argc|NN char*** argv
+ApoT   |void   |sys_init3      |NN int* argc|NN char*** argv|NN char*** env
+ApoT   |void   |sys_term
+AMpx   |const char *|cop_fetch_label|NN COP *const cop \
                |NULLOK STRLEN *len|NULLOK U32 *flags
 : Only used  in op.c and the perl compiler
-ApoM   |void|cop_store_label \
+AMpx   |void|cop_store_label \
                |NN COP *const cop|NN const char *label|STRLEN len|U32 flags
 
-xpo    |int    |keyword_plugin_standard|NN char* keyword_ptr|STRLEN keyword_len|NN OP** op_ptr
+epo    |int    |keyword_plugin_standard|NN char* keyword_ptr|STRLEN keyword_len|NN OP** op_ptr
 
 #if defined(USE_ITHREADS)
 #  if defined(PERL_IN_SV_C)
-s      |void   |unreferenced_to_tmp_stack|NN AV *const unreferenced
+S      |void   |unreferenced_to_tmp_stack|NN AV *const unreferenced
 #  endif
-ARnop  |CLONE_PARAMS *|clone_params_new|NN PerlInterpreter *const from \
+ARTop  |CLONE_PARAMS *|clone_params_new|NN PerlInterpreter *const from \
                |NN PerlInterpreter *const to
-Anop   |void   |clone_params_del|NN CLONE_PARAMS *param
+ATop   |void   |clone_params_del|NN CLONE_PARAMS *param
 #endif
 
 : Used in perl.c and toke.c
@@ -3255,32 +3317,32 @@ Ei      |STRLEN |sv_or_pv_pos_u2b|NN SV *sv|NN const char *pv|STRLEN pos \
 
 Ap     |void   |clear_defarray |NN AV* av|bool abandon
 
-ApM    |void   |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
+Apx    |void   |leave_adjust_stacks|NN SV **from_sp|NN SV **to_sp \
                 |U8 gimme|int filter
 
 #ifndef PERL_NO_INLINE_FUNCTIONS
-AiM    |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
-AiM    |void   |cx_popblock|NN PERL_CONTEXT *cx
-AiM    |void   |cx_topblock|NN PERL_CONTEXT *cx
-AiM    |void   |cx_pushsub      |NN PERL_CONTEXT *cx|NN CV *cv \
+Aix    |PERL_CONTEXT * |cx_pushblock|U8 type|U8 gimme|NN SV** sp|I32 saveix
+Aix    |void   |cx_popblock|NN PERL_CONTEXT *cx
+Aix    |void   |cx_topblock|NN PERL_CONTEXT *cx
+Aix    |void   |cx_pushsub      |NN PERL_CONTEXT *cx|NN CV *cv \
                                 |NULLOK OP *retop|bool hasargs
-AiM    |void   |cx_popsub_common|NN PERL_CONTEXT *cx
-AiM    |void   |cx_popsub_args  |NN PERL_CONTEXT *cx
-AiM    |void   |cx_popsub       |NN PERL_CONTEXT *cx
-AiM    |void   |cx_pushformat   |NN PERL_CONTEXT *cx|NN CV *cv \
+Aix    |void   |cx_popsub_common|NN PERL_CONTEXT *cx
+Aix    |void   |cx_popsub_args  |NN PERL_CONTEXT *cx
+Aix    |void   |cx_popsub       |NN PERL_CONTEXT *cx
+Aix    |void   |cx_pushformat   |NN PERL_CONTEXT *cx|NN CV *cv \
                                 |NULLOK OP *retop|NULLOK GV *gv
-AiM    |void   |cx_popformat    |NN PERL_CONTEXT *cx
-AiM    |void   |cx_pusheval     |NN PERL_CONTEXT *cx \
+Aix    |void   |cx_popformat    |NN PERL_CONTEXT *cx
+Aix    |void   |cx_pusheval     |NN PERL_CONTEXT *cx \
                                 |NULLOK OP *retop|NULLOK SV *namesv
-AiM    |void   |cx_popeval      |NN PERL_CONTEXT *cx
-AiM    |void   |cx_pushloop_plain|NN PERL_CONTEXT *cx
-AiM    |void   |cx_pushloop_for |NN PERL_CONTEXT *cx \
+Aix    |void   |cx_popeval      |NN PERL_CONTEXT *cx
+Aix    |void   |cx_pushloop_plain|NN PERL_CONTEXT *cx
+Aix    |void   |cx_pushloop_for |NN PERL_CONTEXT *cx \
                                 |NN void *itervarp|NULLOK SV *itersave
-AiM    |void   |cx_poploop      |NN PERL_CONTEXT *cx
-AiM    |void   |cx_pushwhen     |NN PERL_CONTEXT *cx
-AiM    |void   |cx_popwhen      |NN PERL_CONTEXT *cx
-AiM    |void   |cx_pushgiven    |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv
-AiM    |void   |cx_popgiven     |NN PERL_CONTEXT *cx
+Aix    |void   |cx_poploop      |NN PERL_CONTEXT *cx
+Aix    |void   |cx_pushwhen     |NN PERL_CONTEXT *cx
+Aix    |void   |cx_popwhen      |NN PERL_CONTEXT *cx
+Aix    |void   |cx_pushgiven    |NN PERL_CONTEXT *cx|NULLOK SV *orig_defsv
+Aix    |void   |cx_popgiven     |NN PERL_CONTEXT *cx
 #endif
 
 #ifdef USE_DTRACE
diff --git a/embed.h b/embed.h
index aa1b2c2..506327f 100644 (file)
--- a/embed.h
+++ b/embed.h
 #define whichsig_sv(a)         Perl_whichsig_sv(aTHX_ a)
 #define wrap_keyword_plugin(a,b)       Perl_wrap_keyword_plugin(aTHX_ a,b)
 #define wrap_op_checker(a,b,c) Perl_wrap_op_checker(aTHX_ a,b,c)
-#if !(defined(HAS_MEMMEM))
-#define ninstr                 Perl_ninstr
-#endif
 #if !(defined(HAS_SIGACTION) && defined(SA_SIGINFO))
 #define csighandler            Perl_csighandler
 #endif
 #if !defined(EBCDIC)
 #define _variant_byte_number   S__variant_byte_number
 #endif
+#if !defined(HAS_STRLCAT)
+#define my_strlcat             Perl_my_strlcat
+#endif
+#if !defined(HAS_STRLCPY)
+#define my_strlcpy             Perl_my_strlcpy
+#endif
+#if !defined(HAS_STRNLEN)
+#define my_strnlen             Perl_my_strnlen
+#endif
 #if !defined(HAS_TRUNCATE) && !defined(HAS_CHSIZE) && defined(F_FREESP)
 #define my_chsize(a,b)         Perl_my_chsize(aTHX_ a,b)
 #endif
diff --git a/hv.c b/hv.c
index 1371b2f..6f27876 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -1671,7 +1671,7 @@ Perl_newHVhv(pTHX_ HV *ohv)
 }
 
 /*
-=for apidoc Am|HV *|hv_copy_hints_hv|HV *ohv
+=for apidoc hv_copy_hints_hv
 
 A specialised version of L</newHVhv> for copying C<%^H>.  C<ohv> must be
 a pointer to a hash (which may have C<%^H> magic, but should be generally
@@ -3249,7 +3249,7 @@ S_refcounted_he_value(pTHX_ const struct refcounted_he *he)
 }
 
 /*
-=for apidoc m|HV *|refcounted_he_chain_2hv|const struct refcounted_he *c|U32 flags
+=for apidoc refcounted_he_chain_2hv
 
 Generates and returns a C<HV *> representing the content of a
 C<refcounted_he> chain.
@@ -3357,7 +3357,7 @@ Perl_refcounted_he_chain_2hv(pTHX_ const struct refcounted_he *chain, U32 flags)
 }
 
 /*
-=for apidoc m|SV *|refcounted_he_fetch_pvn|const struct refcounted_he *chain|const char *keypv|STRLEN keylen|U32 hash|U32 flags
+=for apidoc refcounted_he_fetch_pvn
 
 Search along a C<refcounted_he> chain for an entry with the key specified
 by C<keypv> and C<keylen>.  If C<flags> has the C<REFCOUNTED_HE_KEY_UTF8>
@@ -3447,7 +3447,7 @@ Perl_refcounted_he_fetch_pvn(pTHX_ const struct refcounted_he *chain,
 }
 
 /*
-=for apidoc m|SV *|refcounted_he_fetch_pv|const struct refcounted_he *chain|const char *key|U32 hash|U32 flags
+=for apidoc refcounted_he_fetch_pv
 
 Like L</refcounted_he_fetch_pvn>, but takes a nul-terminated string
 instead of a string/length pair.
@@ -3464,7 +3464,7 @@ Perl_refcounted_he_fetch_pv(pTHX_ const struct refcounted_he *chain,
 }
 
 /*
-=for apidoc m|SV *|refcounted_he_fetch_sv|const struct refcounted_he *chain|SV *key|U32 hash|U32 flags
+=for apidoc refcounted_he_fetch_sv
 
 Like L</refcounted_he_fetch_pvn>, but takes a Perl scalar instead of a
 string/length pair.
@@ -3491,7 +3491,7 @@ Perl_refcounted_he_fetch_sv(pTHX_ const struct refcounted_he *chain,
 }
 
 /*
-=for apidoc m|struct refcounted_he *|refcounted_he_new_pvn|struct refcounted_he *parent|const char *keypv|STRLEN keylen|U32 hash|SV *value|U32 flags
+=for apidoc refcounted_he_new_pvn
 
 Creates a new C<refcounted_he>.  This consists of a single key/value
 pair and a reference to an existing C<refcounted_he> chain (which may
@@ -3635,7 +3635,7 @@ Perl_refcounted_he_new_pvn(pTHX_ struct refcounted_he *parent,
 }
 
 /*
-=for apidoc m|struct refcounted_he *|refcounted_he_new_pv|struct refcounted_he *parent|const char *key|U32 hash|SV *value|U32 flags
+=for apidoc refcounted_he_new_pv
 
 Like L</refcounted_he_new_pvn>, but takes a nul-terminated string instead
 of a string/length pair.
@@ -3652,7 +3652,7 @@ Perl_refcounted_he_new_pv(pTHX_ struct refcounted_he *parent,
 }
 
 /*
-=for apidoc m|struct refcounted_he *|refcounted_he_new_sv|struct refcounted_he *parent|SV *key|U32 hash|SV *value|U32 flags
+=for apidoc refcounted_he_new_sv
 
 Like L</refcounted_he_new_pvn>, but takes a Perl scalar instead of a
 string/length pair.
@@ -3679,7 +3679,7 @@ Perl_refcounted_he_new_sv(pTHX_ struct refcounted_he *parent,
 }
 
 /*
-=for apidoc m|void|refcounted_he_free|struct refcounted_he *he
+=for apidoc refcounted_he_free
 
 Decrements the reference count of a C<refcounted_he> by one.  If the
 reference count reaches zero the structure's memory is freed, which
@@ -3719,7 +3719,7 @@ Perl_refcounted_he_free(pTHX_ struct refcounted_he *he) {
 }
 
 /*
-=for apidoc m|struct refcounted_he *|refcounted_he_inc|struct refcounted_he *he
+=for apidoc refcounted_he_inc
 
 Increment the reference count of a C<refcounted_he>.  The pointer to the
 C<refcounted_he> is also returned.  It is safe to pass a null pointer
index de1e33e..442c08e 100644 (file)
--- a/inline.h
+++ b/inline.h
@@ -1013,7 +1013,7 @@ Perl_is_utf8_string_loclen(const U8 *s, STRLEN len, const U8 **ep, STRLEN *el)
 
 /*
 
-=for apidoc Am|STRLEN|isUTF8_CHAR|const U8 *s|const U8 *e
+=for apidoc isUTF8_CHAR
 
 Evaluates to non-zero if the first few bytes of the string starting at C<s> and
 looking no further than S<C<e - 1>> are well-formed UTF-8, as extended by Perl,
@@ -1156,7 +1156,7 @@ S_isSTRICT_UTF8_CHAR(const U8 * const s0, const U8 * const e)
 
 /*
 
-=for apidoc Am|STRLEN|isC9_STRICT_UTF8_CHAR|const U8 *s|const U8 *e
+=for apidoc isC9_STRICT_UTF8_CHAR
 
 Evaluates to non-zero if the first few bytes of the string starting at C<s> and
 looking no further than S<C<e - 1>> are well-formed UTF-8 that represents some
@@ -1847,7 +1847,7 @@ S_utf8n_to_uvchr_msgs(const U8 *s,
 /*
 =head1 Miscellaneous Functions
 
-=for apidoc AiR|bool|is_safe_syscall|const char *pv|STRLEN len|const char *what|const char *op_name
+=for apidoc is_safe_syscall
 
 Test that the given C<pv> doesn't contain any internal C<NUL> characters.
 If it does, set C<errno> to C<ENOENT>, optionally warn, and return FALSE.
index 42436c7..d7c32c7 100644 (file)
@@ -752,7 +752,7 @@ unless ($define{'USE_QUADMATH'}) {
 {
     my %seen;
     my ($embed) = setup_embed($ARGS{TARG_DIR});
-    my $excludedre = $define{'NO_MATHOMS'} ? qr/[xmib]/ : qr/[xmi]/;
+    my $excludedre = $define{'NO_MATHOMS'} ? qr/[emib]/ : qr/[emi]/;
 
     foreach (@$embed) {
        my ($flags, $retval, $func, @args) = @$_;
index b8dcb89..e2dc11c 100644 (file)
--- a/mathoms.c
+++ b/mathoms.c
@@ -1729,7 +1729,7 @@ Perl_utf8_to_uvuni(pTHX_ const U8 *s, STRLEN *retlen)
 }
 
 /*
-=for apidoc Am|HV *|pad_compname_type|PADOFFSET po
+=for apidoc pad_compname_type
 
 Looks up the type of the lexical variable at position C<po> in the
 currently-compiling pad.  If the variable is typed, the stash of the
diff --git a/mg.c b/mg.c
index afe452f..f4783fb 100644 (file)
--- a/mg.c
+++ b/mg.c
@@ -600,7 +600,7 @@ Perl_mg_free(pTHX_ SV *sv)
 }
 
 /*
-=for apidoc Am|void|mg_free_type|SV *sv|int how
+=for apidoc mg_free_type
 
 Remove any magic of type C<how> from the SV C<sv>.  See L</sv_magic>.
 
@@ -851,7 +851,7 @@ S_fixup_errno_string(pTHX_ SV* sv)
 }
 
 /*
-=for apidoc Am|SV *|sv_string_from_errnum|int errnum|SV *tgtsv
+=for apidoc sv_string_from_errnum
 
 Generates the message string describing an OS error and returns it as
 an SV.  C<errnum> must be a value that C<errno> could take, identifying
diff --git a/op.c b/op.c
index dba7ac7..98a438d 100644 (file)
--- a/op.c
+++ b/op.c
@@ -805,7 +805,7 @@ S_op_destroy(pTHX_ OP *o)
 /* Destructor */
 
 /*
-=for apidoc Am|void|op_free|OP *o
+=for apidoc op_free
 
 Free an op.  Only use this when an op is no longer linked to from any
 optree.
@@ -1323,7 +1323,7 @@ S_find_and_forget_pmops(pTHX_ OP *o)
 }
 
 /*
-=for apidoc Am|void|op_null|OP *o
+=for apidoc op_null
 
 Neutralizes an op when it is no longer needed, but is still linked to from
 other ops.
@@ -1593,7 +1593,7 @@ Perl_alloc_LOGOP(pTHX_ I32 type, OP *first, OP* other)
 /* Contextualizers */
 
 /*
-=for apidoc Am|OP *|op_contextualize|OP *o|I32 context
+=for apidoc op_contextualize
 
 Applies a syntactic context to an op tree representing an expression.
 C<o> is the op tree, and C<context> must be C<G_SCALAR>, C<G_ARRAY>,
@@ -1619,7 +1619,7 @@ Perl_op_contextualize(pTHX_ OP *o, I32 context)
 
 /*
 
-=for apidoc Am|OP*|op_linklist|OP *o
+=for apidoc op_linklist
 This function is the implementation of the L</LINKLIST> macro.  It should
 not be called directly.
 
@@ -3587,7 +3587,7 @@ S_op_relocate_sv(pTHX_ SV** svp, PADOFFSET* targp)
 #endif
 
 /*
-=for apidoc s|OP*|traverse_op_tree|OP* top|OP* o
+=for apidoc traverse_op_tree
 
 Return the next op in a depth-first traversal of the op tree,
 returning NULL when the traversal is complete.
@@ -3800,7 +3800,7 @@ S_finalize_op(pTHX_ OP* o)
 }
 
 /*
-=for apidoc Amx|OP *|op_lvalue|OP *o|I32 type
+=for apidoc op_lvalue
 
 Propagate lvalue ("modifiable") context to an op and its children.
 C<type> represents the context type, roughly based on the type of op that
@@ -5135,7 +5135,7 @@ Perl_invert(pTHX_ OP *o)
 }
 
 /*
-=for apidoc Amx|OP *|op_scope|OP *o
+=for apidoc op_scope
 
 Wraps up an op tree with some additional ops so that at runtime a dynamic
 scope will be created.  The original ops run in the new dynamic scope,
@@ -5190,7 +5190,7 @@ Perl_op_unscope(pTHX_ OP *o)
 }
 
 /*
-=for apidoc Am|int|block_start|int full
+=for apidoc block_start
 
 Handles compile-time scope entry.
 Arranges for hints to be restored on block
@@ -5221,7 +5221,7 @@ Perl_block_start(pTHX_ int full)
 }
 
 /*
-=for apidoc Am|OP *|block_end|I32 floor|OP *seq
+=for apidoc block_end
 
 Handles compile-time scope exit.  C<floor>
 is the savestack index returned by
@@ -5320,7 +5320,7 @@ Perl_block_end(pTHX_ I32 floor, OP *seq)
 /*
 =head1 Compile-time scope hooks
 
-=for apidoc Aox||blockhook_register
+=for apidoc blockhook_register
 
 Register a set of hooks to be called when the Perl lexical scope changes
 at compile time.  See L<perlguts/"Compile-time scope hooks">.
@@ -5860,7 +5860,7 @@ S_gen_constant_list(pTHX_ OP *o)
 /* List constructors */
 
 /*
-=for apidoc Am|OP *|op_append_elem|I32 optype|OP *first|OP *last
+=for apidoc op_append_elem
 
 Append an item to the list of ops contained directly within a list-type
 op, returning the lengthened list.  C<first> is the list-type op,
@@ -5893,7 +5893,7 @@ Perl_op_append_elem(pTHX_ I32 type, OP *first, OP *last)
 }
 
 /*
-=for apidoc Am|OP *|op_append_list|I32 optype|OP *first|OP *last
+=for apidoc op_append_list
 
 Concatenate the lists of ops contained directly within two list-type ops,
 returning the combined list.  C<first> and C<last> are the list-type ops
@@ -5931,7 +5931,7 @@ Perl_op_append_list(pTHX_ I32 type, OP *first, OP *last)
 }
 
 /*
-=for apidoc Am|OP *|op_prepend_elem|I32 optype|OP *first|OP *last
+=for apidoc op_prepend_elem
 
 Prepend an item to the list of ops contained directly within a list-type
 op, returning the lengthened list.  C<first> is the op to prepend to the
@@ -5969,7 +5969,7 @@ Perl_op_prepend_elem(pTHX_ I32 type, OP *first, OP *last)
 }
 
 /*
-=for apidoc Am|OP *|op_convert_list|I32 type|I32 flags|OP *o
+=for apidoc op_convert_list
 
 Converts C<o> into a list op if it is not one already, and then converts it
 into the specified C<type>, calling its check function, allocating a target if
@@ -6029,7 +6029,7 @@ Perl_op_convert_list(pTHX_ I32 type, I32 flags, OP *o)
 /*
 =head1 Optree construction
 
-=for apidoc Am|OP *|newNULLLIST
+=for apidoc newNULLLIST
 
 Constructs, checks, and returns a new C<stub> op, which represents an
 empty list expression.
@@ -6076,7 +6076,7 @@ S_force_list(pTHX_ OP *o, bool nullit)
 }
 
 /*
-=for apidoc Am|OP *|newLISTOP|I32 type|I32 flags|OP *first|OP *last
+=for apidoc newLISTOP
 
 Constructs, checks, and returns an op of any list type.  C<type> is
 the opcode.  C<flags> gives the eight bits of C<op_flags>, except that
@@ -6136,7 +6136,7 @@ Perl_newLISTOP(pTHX_ I32 type, I32 flags, OP *first, OP *last)
 }
 
 /*
-=for apidoc Am|OP *|newOP|I32 type|I32 flags
+=for apidoc newOP
 
 Constructs, checks, and returns an op of any base type (any type that
 has no extra fields).  C<type> is the opcode.  C<flags> gives the
@@ -6176,7 +6176,7 @@ Perl_newOP(pTHX_ I32 type, I32 flags)
 }
 
 /*
-=for apidoc Am|OP *|newUNOP|I32 type|I32 flags|OP *first
+=for apidoc newUNOP
 
 Constructs, checks, and returns an op of any unary type.  C<type> is
 the opcode.  C<flags> gives the eight bits of C<op_flags>, except that
@@ -6265,7 +6265,7 @@ Perl_newUNOP_AUX(pTHX_ I32 type, I32 flags, OP *first, UNOP_AUX_item *aux)
 }
 
 /*
-=for apidoc Am|OP *|newMETHOP|I32 type|I32 flags|OP *first
+=for apidoc newMETHOP
 
 Constructs, checks, and returns an op of method type with a method name
 evaluated at runtime.  C<type> is the opcode.  C<flags> gives the eight
@@ -6322,7 +6322,7 @@ Perl_newMETHOP (pTHX_ I32 type, I32 flags, OP* dynamic_meth) {
 }
 
 /*
-=for apidoc Am|OP *|newMETHOP_named|I32 type|I32 flags|SV *const_meth
+=for apidoc newMETHOP_named
 
 Constructs, checks, and returns an op of method type with a constant
 method name.  C<type> is the opcode.  C<flags> gives the eight bits of
@@ -6341,7 +6341,7 @@ Perl_newMETHOP_named (pTHX_ I32 type, I32 flags, SV* const_meth) {
 }
 
 /*
-=for apidoc Am|OP *|newBINOP|I32 type|I32 flags|OP *first|OP *last
+=for apidoc newBINOP
 
 Constructs, checks, and returns an op of any binary type.  C<type>
 is the opcode.  C<flags> gives the eight bits of C<op_flags>, except
@@ -6844,7 +6844,7 @@ S_pmtrans(pTHX_ OP *o, OP *expr, OP *repl)
 
 
 /*
-=for apidoc Am|OP *|newPMOP|I32 type|I32 flags
+=for apidoc newPMOP
 
 Constructs, checks, and returns an op of any pattern matching type.
 C<type> is the opcode.  C<flags> gives the eight bits of C<op_flags>
@@ -7328,7 +7328,7 @@ Perl_pmruntime(pTHX_ OP *o, OP *expr, OP *repl, UV flags, I32 floor)
 }
 
 /*
-=for apidoc Am|OP *|newSVOP|I32 type|I32 flags|SV *sv
+=for apidoc newSVOP
 
 Constructs, checks, and returns an op of any type that involves an
 embedded SV.  C<type> is the opcode.  C<flags> gives the eight bits
@@ -7365,7 +7365,7 @@ Perl_newSVOP(pTHX_ I32 type, I32 flags, SV *sv)
 }
 
 /*
-=for apidoc Am|OP *|newDEFSVOP|
+=for apidoc newDEFSVOP
 
 Constructs and returns an op to access C<$_>.
 
@@ -7381,7 +7381,7 @@ Perl_newDEFSVOP(pTHX)
 #ifdef USE_ITHREADS
 
 /*
-=for apidoc Am|OP *|newPADOP|I32 type|I32 flags|SV *sv
+=for apidoc newPADOP
 
 Constructs, checks, and returns an op of any type that involves a
 reference to a pad element.  C<type> is the opcode.  C<flags> gives the
@@ -7426,7 +7426,7 @@ Perl_newPADOP(pTHX_ I32 type, I32 flags, SV *sv)
 #endif /* USE_ITHREADS */
 
 /*
-=for apidoc Am|OP *|newGVOP|I32 type|I32 flags|GV *gv
+=for apidoc newGVOP
 
 Constructs, checks, and returns an op of any type that involves an
 embedded reference to a GV.  C<type> is the opcode.  C<flags> gives the
@@ -7450,7 +7450,7 @@ Perl_newGVOP(pTHX_ I32 type, I32 flags, GV *gv)
 }
 
 /*
-=for apidoc Am|OP *|newPVOP|I32 type|I32 flags|char *pv
+=for apidoc newPVOP
 
 Constructs, checks, and returns an op of any type that involves an
 embedded C-level pointer (PV).  C<type> is the opcode.  C<flags> gives
@@ -7785,7 +7785,7 @@ Perl_dofile(pTHX_ OP *term, I32 force_builtin)
 /*
 =head1 Optree construction
 
-=for apidoc Am|OP *|newSLICEOP|I32 flags|OP *subscript|OP *listval
+=for apidoc newSLICEOP
 
 Constructs, checks, and returns an C<lslice> (list slice) op.  C<flags>
 gives the eight bits of C<op_flags>, except that C<OPf_KIDS> will
@@ -7899,7 +7899,7 @@ S_newONCEOP(pTHX_ OP *initop, OP *padop)
 }
 
 /*
-=for apidoc Am|OP *|newASSIGNOP|I32 flags|OP *left|I32 optype|OP *right
+=for apidoc newASSIGNOP
 
 Constructs, checks, and returns an assignment op.  C<left> and C<right>
 supply the parameters of the assignment; they are consumed by this
@@ -8116,7 +8116,7 @@ Perl_newASSIGNOP(pTHX_ I32 flags, OP *left, I32 optype, OP *right)
 }
 
 /*
-=for apidoc Am|OP *|newSTATEOP|I32 flags|char *label|OP *o
+=for apidoc newSTATEOP
 
 Constructs a state op (COP).  The state op is normally a C<nextstate> op,
 but will be a C<dbstate> op if debugging is enabled for currently-compiled
@@ -8207,7 +8207,7 @@ Perl_newSTATEOP(pTHX_ I32 flags, char *label, OP *o)
 }
 
 /*
-=for apidoc Am|OP *|newLOGOP|I32 type|I32 flags|OP *first|OP *other
+=for apidoc newLOGOP
 
 Constructs, checks, and returns a logical (flow control) op.  C<type>
 is the opcode.  C<flags> gives the eight bits of C<op_flags>, except
@@ -8470,7 +8470,7 @@ S_new_logop(pTHX_ I32 type, I32 flags, OP** firstp, OP** otherp)
 }
 
 /*
-=for apidoc Am|OP *|newCONDOP|I32 flags|OP *first|OP *trueop|OP *falseop
+=for apidoc newCONDOP
 
 Constructs, checks, and returns a conditional-expression (C<cond_expr>)
 op.  C<flags> gives the eight bits of C<op_flags>, except that C<OPf_KIDS>
@@ -8545,7 +8545,7 @@ Perl_newCONDOP(pTHX_ I32 flags, OP *first, OP *trueop, OP *falseop)
 }
 
 /*
-=for apidoc Am|OP *|newRANGE|I32 flags|OP *left|OP *right
+=for apidoc newRANGE
 
 Constructs and returns a C<range> op, with subordinate C<flip> and
 C<flop> ops.  C<flags> gives the eight bits of C<op_flags> for the
@@ -8612,7 +8612,7 @@ Perl_newRANGE(pTHX_ I32 flags, OP *left, OP *right)
 }
 
 /*
-=for apidoc Am|OP *|newLOOPOP|I32 flags|I32 debuggable|OP *expr|OP *block
+=for apidoc newLOOPOP
 
 Constructs, checks, and returns an op tree expressing a loop.  This is
 only a loop in the control flow through the op tree; it does not have
@@ -8713,7 +8713,7 @@ Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP *expr, OP *block)
 }
 
 /*
-=for apidoc Am|OP *|newWHILEOP|I32 flags|I32 debuggable|LOOP *loop|OP *expr|OP *block|OP *cont|I32 has_my
+=for apidoc newWHILEOP
 
 Constructs, checks, and returns an op tree expressing a C<while> loop.
 This is a heavyweight loop, with structure that allows exiting the loop
@@ -8839,7 +8839,7 @@ Perl_newWHILEOP(pTHX_ I32 flags, I32 debuggable, LOOP *loop,
 }
 
 /*
-=for apidoc Am|OP *|newFOROP|I32 flags|OP *sv|OP *expr|OP *block|OP *cont
+=for apidoc newFOROP
 
 Constructs, checks, and returns an op tree expressing a C<foreach>
 loop (iteration through a list of values).  This is a heavyweight loop,
@@ -8980,7 +8980,7 @@ Perl_newFOROP(pTHX_ I32 flags, OP *sv, OP *expr, OP *block, OP *cont)
 }
 
 /*
-=for apidoc Am|OP *|newLOOPEX|I32 type|OP *label
+=for apidoc newLOOPEX
 
 Constructs, checks, and returns a loop-exiting op (such as C<goto>
 or C<last>).  C<type> is the opcode.  C<label> supplies the parameter
@@ -9209,7 +9209,7 @@ S_looks_like_bool(pTHX_ const OP *o)
 }
 
 /*
-=for apidoc Am|OP *|newGIVENOP|OP *cond|OP *block|PADOFFSET defsv_off
+=for apidoc newGIVENOP
 
 Constructs, checks, and returns an op tree expressing a C<given> block.
 C<cond> supplies the expression to whose value C<$_> will be locally
@@ -9235,7 +9235,7 @@ Perl_newGIVENOP(pTHX_ OP *cond, OP *block, PADOFFSET defsv_off)
 }
 
 /*
-=for apidoc Am|OP *|newWHENOP|OP *cond|OP *block
+=for apidoc newWHENOP
 
 Constructs, checks, and returns an op tree expressing a C<when> block.
 C<cond> supplies the test expression, and C<block> supplies the block
@@ -9853,7 +9853,7 @@ Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
 }
 
 /*
-=for apidoc m|CV *|newATTRSUB_x|I32 floor|OP *o|OP *proto|OP *attrs|OP *block|bool o_is_gv
+=for apidoc newATTRSUB_x
 
 Construct a Perl subroutine, also performing some surrounding jobs.
 
@@ -10518,7 +10518,7 @@ S_process_special_blocks(pTHX_ I32 floor, const char *const fullname,
 }
 
 /*
-=for apidoc Am|CV *|newCONSTSUB|HV *stash|const char *name|SV *sv
+=for apidoc newCONSTSUB
 
 Behaves like L</newCONSTSUB_flags>, except that C<name> is nul-terminated
 rather than of counted length, and no flags are set.  (This means that
@@ -10534,7 +10534,7 @@ Perl_newCONSTSUB(pTHX_ HV *stash, const char *name, SV *sv)
 }
 
 /*
-=for apidoc Am|CV *|newCONSTSUB_flags|HV *stash|const char *name|STRLEN len|U32 flags|SV *sv
+=for apidoc newCONSTSUB_flags
 
 Construct a constant subroutine, also performing some surrounding
 jobs.  A scalar constant-valued subroutine is eligible for inlining
@@ -10656,7 +10656,7 @@ Perl_newCONSTSUB_flags(pTHX_ HV *stash, const char *name, STRLEN len,
 }
 
 /*
-=for apidoc U||newXS
+=for apidoc newXS
 
 Used by C<xsubpp> to hook up XSUBs as Perl subs.  C<filename> needs to be
 static storage, as it is used directly as CvFILE(), without a copy being made.
@@ -10694,7 +10694,7 @@ Perl_newXS_deffile(pTHX_ const char *name, XSUBADDR_t subaddr)
 }
 
 /*
-=for apidoc m|CV *|newXS_len_flags|const char *name|STRLEN len|XSUBADDR_t subaddr|const char *const filename|const char *const proto|SV **const_svp|U32 flags
+=for apidoc newXS_len_flags
 
 Construct an XS subroutine, also performing some surrounding jobs.
 
@@ -13013,7 +13013,7 @@ Perl_ck_join(pTHX_ OP *o)
 }
 
 /*
-=for apidoc Am|CV *|rv2cv_op_cv|OP *cvop|U32 flags
+=for apidoc rv2cv_op_cv
 
 Examines an op, which is expected to identify a subroutine at runtime,
 and attempts to determine at compile time which subroutine it identifies.
@@ -13141,7 +13141,7 @@ Perl_rv2cv_op_cv(pTHX_ OP *cvop, U32 flags)
 }
 
 /*
-=for apidoc Am|OP *|ck_entersub_args_list|OP *entersubop
+=for apidoc ck_entersub_args_list
 
 Performs the default fixup of the arguments part of an C<entersub>
 op tree.  This consists of applying list context to each of the
@@ -13178,7 +13178,7 @@ Perl_ck_entersub_args_list(pTHX_ OP *entersubop)
 }
 
 /*
-=for apidoc Am|OP *|ck_entersub_args_proto|OP *entersubop|GV *namegv|SV *protosv
+=for apidoc ck_entersub_args_proto
 
 Performs the fixup of the arguments part of an C<entersub> op tree
 based on a subroutine prototype.  This makes various modifications to
@@ -13426,7 +13426,7 @@ Perl_ck_entersub_args_proto(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
 }
 
 /*
-=for apidoc Am|OP *|ck_entersub_args_proto_or_list|OP *entersubop|GV *namegv|SV *protosv
+=for apidoc ck_entersub_args_proto_or_list
 
 Performs the fixup of the arguments part of an C<entersub> op tree either
 based on a subroutine prototype or using default list-context processing.
@@ -13578,7 +13578,7 @@ Perl_ck_entersub_args_core(pTHX_ OP *entersubop, GV *namegv, SV *protosv)
 }
 
 /*
-=for apidoc Am|void|cv_get_call_checker_flags|CV *cv|U32 gflags|Perl_call_checker *ckfun_p|SV **ckobj_p|U32 *ckflags_p
+=for apidoc cv_get_call_checker_flags
 
 Retrieves the function that will be used to fix up a call to C<cv>.
 Specifically, the function is applied to an C<entersub> op tree for a
@@ -13624,7 +13624,7 @@ C<gflags> is a bitset passed into C<cv_get_call_checker_flags>, in which
 only the C<CALL_CHECKER_REQUIRE_GV> bit currently has a defined meaning
 (for which see above).  All other bits should be clear.
 
-=for apidoc Am|void|cv_get_call_checker|CV *cv|Perl_call_checker *ckfun_p|SV **ckobj_p
+=for apidoc cv_get_call_checker
 
 The original form of L</cv_get_call_checker_flags>, which does not return
 checker flags.  When using a checker function returned by this function,
@@ -13663,7 +13663,7 @@ Perl_cv_get_call_checker(pTHX_ CV *cv, Perl_call_checker *ckfun_p, SV **ckobj_p)
 }
 
 /*
-=for apidoc Am|void|cv_set_call_checker_flags|CV *cv|Perl_call_checker ckfun|SV *ckobj|U32 ckflags
+=for apidoc cv_set_call_checker_flags
 
 Sets the function that will be used to fix up a call to C<cv>.
 Specifically, the function is applied to an C<entersub> op tree for a
@@ -13699,7 +13699,7 @@ bits should be clear.
 The current setting for a particular CV can be retrieved by
 L</cv_get_call_checker_flags>.
 
-=for apidoc Am|void|cv_set_call_checker|CV *cv|Perl_call_checker ckfun|SV *ckobj
+=for apidoc cv_set_call_checker
 
 The original form of L</cv_set_call_checker_flags>, which passes it the
 C<CALL_CHECKER_REQUIRE_GV> flag for backward-compatibility.  The effect
@@ -16647,7 +16647,7 @@ Perl_peep(pTHX_ OP *o)
 /*
 =head1 Custom Operators
 
-=for apidoc Ao||custom_op_xop
+=for apidoc custom_op_xop
 Return the XOP structure for a given custom op.  This macro should be
 considered internal to C<OP_NAME> and the other access macros: use them instead.
 This macro does call a function.  Prior
@@ -16804,7 +16804,7 @@ Perl_custom_op_get_field(pTHX_ const OP *o, const xop_flags_enum field)
 }
 
 /*
-=for apidoc Ao||custom_op_register
+=for apidoc custom_op_register
 Register a custom op.  See L<perlguts/"Custom Operators">.
 
 =cut
@@ -17058,7 +17058,7 @@ hook variables.
 */
 
 /*
-=for apidoc Am|void|wrap_op_checker|Optype opcode|Perl_check_t new_checker|Perl_check_t *old_checker_p
+=for apidoc wrap_op_checker
 
 Puts a C function into the chain of check functions for a specified op
 type.  This is the preferred way to manipulate the L</PL_check> array.
diff --git a/pad.c b/pad.c
index f73fc55..7d54172 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -173,7 +173,7 @@ Perl_set_padlist(CV * cv, PADLIST *padlist){
 #endif
 
 /*
-=for apidoc Am|PADLIST *|pad_new|int flags
+=for apidoc pad_new
 
 Create a new padlist, updating the global variables for the
 currently-compiling padlist to point to the new padlist.  The following
@@ -516,7 +516,7 @@ Perl_cv_forget_slab(pTHX_ CV *cv)
 }
 
 /*
-=for apidoc m|PADOFFSET|pad_alloc_name|PADNAME *name|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_alloc_name
 
 Allocates a place in the currently-compiling
 pad (via L<perlapi/pad_alloc>) and
@@ -561,7 +561,7 @@ S_pad_alloc_name(pTHX_ PADNAME *name, U32 flags, HV *typestash,
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_name_pvn|const char *namepv|STRLEN namelen|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_add_name_pvn
 
 Allocates a place in the currently-compiling pad for a named lexical
 variable.  Stores the name and other metadata in the name part of the
@@ -633,7 +633,7 @@ Perl_pad_add_name_pvn(pTHX_ const char *namepv, STRLEN namelen,
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_name_pv|const char *name|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_add_name_pv
 
 Exactly like L</pad_add_name_pvn>, but takes a nul-terminated string
 instead of a string/length pair.
@@ -650,7 +650,7 @@ Perl_pad_add_name_pv(pTHX_ const char *name,
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_name_sv|SV *name|U32 flags|HV *typestash|HV *ourstash
+=for apidoc pad_add_name_sv
 
 Exactly like L</pad_add_name_pvn>, but takes the name string in the form
 of an SV instead of a string/length pair.
@@ -669,7 +669,7 @@ Perl_pad_add_name_sv(pTHX_ SV *name, U32 flags, HV *typestash, HV *ourstash)
 }
 
 /*
-=for apidoc Amx|PADOFFSET|pad_alloc|I32 optype|U32 tmptype
+=for apidoc pad_alloc
 
 Allocates a place in the currently-compiling pad,
 returning the offset of the allocated pad slot.
@@ -769,7 +769,7 @@ Perl_pad_alloc(pTHX_ I32 optype, U32 tmptype)
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_add_anon|CV *func|I32 optype
+=for apidoc pad_add_anon
 
 Allocates a place in the currently-compiling pad (via L</pad_alloc>)
 for an anonymous function that is lexically scoped inside the
@@ -917,7 +917,7 @@ S_pad_check_dup(pTHX_ PADNAME *name, U32 flags, const HV *ourstash)
 
 
 /*
-=for apidoc Am|PADOFFSET|pad_findmy_pvn|const char *namepv|STRLEN namelen|U32 flags
+=for apidoc pad_findmy_pvn
 
 Given the name of a lexical variable, find its position in the
 currently-compiling pad.
@@ -982,7 +982,7 @@ Perl_pad_findmy_pvn(pTHX_ const char *namepv, STRLEN namelen, U32 flags)
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_findmy_pv|const char *name|U32 flags
+=for apidoc pad_findmy_pv
 
 Exactly like L</pad_findmy_pvn>, but takes a nul-terminated string
 instead of a string/length pair.
@@ -998,7 +998,7 @@ Perl_pad_findmy_pv(pTHX_ const char *name, U32 flags)
 }
 
 /*
-=for apidoc Am|PADOFFSET|pad_findmy_sv|SV *name|U32 flags
+=for apidoc pad_findmy_sv
 
 Exactly like L</pad_findmy_pvn>, but takes the name string in the form
 of an SV instead of a string/length pair.
@@ -1017,7 +1017,7 @@ Perl_pad_findmy_sv(pTHX_ SV *name, U32 flags)
 }
 
 /*
-=for apidoc Amp|PADOFFSET|find_rundefsvoffset
+=for apidoc find_rundefsvoffset
 
 Until the lexical C<$_> feature was removed, this function would
 find the position of the lexical C<$_> in the pad of the
@@ -1037,7 +1037,7 @@ Perl_find_rundefsvoffset(pTHX)
 }
 
 /*
-=for apidoc Am|SV *|find_rundefsv
+=for apidoc find_rundefsv
 
 Returns the global variable C<$_>.
 
@@ -1051,7 +1051,7 @@ Perl_find_rundefsv(pTHX)
 }
 
 /*
-=for apidoc m|PADOFFSET|pad_findlex|const char *namepv|STRLEN namelen|U32 flags|const CV* cv|U32 seq|int warn|SV** out_capture|PADNAME** out_name|int *out_flags
+=for apidoc pad_findlex
 
 Find a named lexical anywhere in a chain of nested pads.  Add fake entries
 in the inner pads if it's found in an outer one.
@@ -1334,7 +1334,7 @@ S_pad_findlex(pTHX_ const char *namepv, STRLEN namelen, U32 flags, const CV* cv,
 #ifdef DEBUGGING
 
 /*
-=for apidoc Am|SV *|pad_sv|PADOFFSET po
+=for apidoc pad_sv
 
 Get the value at offset C<po> in the current (compiling or executing) pad.
 Use macro C<PAD_SV> instead of calling this function directly.
@@ -1357,7 +1357,7 @@ Perl_pad_sv(pTHX_ PADOFFSET po)
 }
 
 /*
-=for apidoc Am|void|pad_setsv|PADOFFSET po|SV *sv
+=for apidoc pad_setsv
 
 Set the value at offset C<po> in the current (compiling or executing) pad.
 Use the macro C<PAD_SETSV()> rather than calling this function directly.
@@ -1382,7 +1382,7 @@ Perl_pad_setsv(pTHX_ PADOFFSET po, SV* sv)
 #endif /* DEBUGGING */
 
 /*
-=for apidoc m|void|pad_block_start|int full
+=for apidoc pad_block_start
 
 Update the pad compilation state variables on entry to a new block.
 
@@ -1415,7 +1415,7 @@ Perl_pad_block_start(pTHX_ int full)
 }
 
 /*
-=for apidoc Am|U32|intro_my
+=for apidoc intro_my
 
 "Introduce" C<my> variables to visible status.  This is called during parsing
 at the end of each statement to make lexical variables visible to subsequent
@@ -1468,7 +1468,7 @@ Perl_intro_my(pTHX)
 }
 
 /*
-=for apidoc m|void|pad_leavemy
+=for apidoc pad_leavemy
 
 Cleanup at end of scope during compilation: set the max seq number for
 lexicals in this scope and warn of any lexicals that never got introduced.
@@ -1524,7 +1524,7 @@ Perl_pad_leavemy(pTHX)
 }
 
 /*
-=for apidoc m|void|pad_swipe|PADOFFSET po|bool refadjust
+=for apidoc pad_swipe
 
 Abandon the tmp in the current pad at offset C<po> and replace with a
 new one.
@@ -1576,7 +1576,7 @@ Perl_pad_swipe(pTHX_ PADOFFSET po, bool refadjust)
 }
 
 /*
-=for apidoc m|void|pad_reset
+=for apidoc pad_reset
 
 Mark all the current temporaries for reuse
 
@@ -1611,7 +1611,7 @@ S_pad_reset(pTHX)
 }
 
 /*
-=for apidoc Amx|void|pad_tidy|padtidy_type type
+=for apidoc pad_tidy
 
 Tidy up a pad at the end of compilation of the code to which it belongs.
 Jobs performed here are: remove most stuff from the pads of anonsub
@@ -1729,7 +1729,7 @@ Perl_pad_tidy(pTHX_ padtidy_type type)
 }
 
 /*
-=for apidoc m|void|pad_free|PADOFFSET po
+=for apidoc pad_free
 
 Free the SV at offset po in the current pad.
 
@@ -1767,7 +1767,7 @@ Perl_pad_free(pTHX_ PADOFFSET po)
 }
 
 /*
-=for apidoc m|void|do_dump_pad|I32 level|PerlIO *file|PADLIST *padlist|int full
+=for apidoc do_dump_pad
 
 Dump the contents of a padlist
 
@@ -1839,7 +1839,7 @@ Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padlist, int full)
 #ifdef DEBUGGING
 
 /*
-=for apidoc m|void|cv_dump|CV *cv|const char *title
+=for apidoc cv_dump
 
 dump the contents of a CV
 
@@ -1878,7 +1878,7 @@ S_cv_dump(pTHX_ const CV *cv, const char *title)
 #endif /* DEBUGGING */
 
 /*
-=for apidoc Am|CV *|cv_clone|CV *proto
+=for apidoc cv_clone
 
 Clone a CV, making a lexical closure.  C<proto> supplies the prototype
 of the function: its code, pad structure, and other attributes.
@@ -2316,7 +2316,7 @@ Perl_cv_name(pTHX_ CV *cv, SV *sv, U32 flags)
 }
 
 /*
-=for apidoc m|void|pad_fixup_inner_anons|PADLIST *padlist|CV *old_cv|CV *new_cv
+=for apidoc pad_fixup_inner_anons
 
 For any anon CVs in the pad, change C<CvOUTSIDE> of that CV from
 C<old_cv> to C<new_cv> if necessary.  Needed when a newly-compiled CV has to be
@@ -2388,7 +2388,7 @@ Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
 }
 
 /*
-=for apidoc m|void|pad_push|PADLIST *padlist|int depth
+=for apidoc pad_push
 
 Push a new pad frame onto the padlist, unless there's already a pad at
 this depth, in which case don't bother creating a new one.  Then give
diff --git a/perl.c b/perl.c
index f2de479..f2c87f4 100644 (file)
--- a/perl.c
+++ b/perl.c
@@ -574,7 +574,7 @@ Perl_dump_sv_child(pTHX_ SV *sv)
 #endif
 
 /*
-=for apidoc Am|int|perl_destruct|PerlInterpreter *my_perl
+=for apidoc perl_destruct
 
 Shuts down a Perl interpreter.  See L<perlembed> for a tutorial.
 
@@ -1583,7 +1583,7 @@ Perl_call_atexit(pTHX_ ATEXIT_t fn, void *ptr)
 }
 
 /*
-=for apidoc Am|int|perl_parse|PerlInterpreter *my_perl|XSINIT_t xsinit|int argc|char **argv|char **env
+=for apidoc perl_parse
 
 Tells a Perl interpreter to parse a Perl script.  This performs most
 of the initialisation of a Perl interpreter.  See L<perlembed> for
@@ -2567,7 +2567,7 @@ S_parse_body(pTHX_ char **env, XSINIT_t xsinit)
 }
 
 /*
-=for apidoc Am|int|perl_run|PerlInterpreter *my_perl
+=for apidoc perl_run
 
 Tells a Perl interpreter to run its main program.  See L<perlembed>
 for a tutorial.
@@ -2722,7 +2722,7 @@ S_run_body(pTHX_ I32 oldscope)
 /*
 =head1 SV Manipulation Functions
 
-=for apidoc p||get_sv
+=for apidoc get_sv
 
 Returns the SV of the specified Perl scalar.  C<flags> are passed to
 C<gv_fetchpv>.  If C<GV_ADD> is set and the
@@ -2748,7 +2748,7 @@ Perl_get_sv(pTHX_ const char *name, I32 flags)
 /*
 =head1 Array Manipulation Functions
 
-=for apidoc p||get_av
+=for apidoc get_av
 
 Returns the AV of the specified Perl global or package array with the given
 name (so it won't work on lexical variables).  C<flags> are passed 
@@ -2778,7 +2778,7 @@ Perl_get_av(pTHX_ const char *name, I32 flags)
 /*
 =head1 Hash Manipulation Functions
 
-=for apidoc p||get_hv
+=for apidoc get_hv
 
 Returns the HV of the specified Perl hash.  C<flags> are passed to
 C<gv_fetchpv>.  If C<GV_ADD> is set and the
@@ -2805,7 +2805,7 @@ Perl_get_hv(pTHX_ const char *name, I32 flags)
 /*
 =head1 CV Manipulation Functions
 
-=for apidoc p||get_cvn_flags
+=for apidoc get_cvn_flags
 
 Returns the CV of the specified Perl subroutine.  C<flags> are passed to
 C<gv_fetchpvn_flags>.  If C<GV_ADD> is set and the Perl subroutine does not
@@ -2813,7 +2813,7 @@ exist then it will be declared (which has the same effect as saying
 C<sub name;>).  If C<GV_ADD> is not set and the subroutine does not exist
 then NULL is returned.
 
-=for apidoc p||get_cv
+=for apidoc get_cv
 
 Uses C<strlen> to get the length of C<name>, then calls C<get_cvn_flags>.
 
@@ -2857,7 +2857,7 @@ Perl_get_cv(pTHX_ const char *name, I32 flags)
 
 =head1 Callback Functions
 
-=for apidoc p||call_argv
+=for apidoc call_argv
 
 Performs a callback to the specified named and package-scoped Perl subroutine 
 with C<argv> (a C<NULL>-terminated array of strings) as arguments.  See
@@ -2888,7 +2888,7 @@ Perl_call_argv(pTHX_ const char *sub_name, I32 flags, char **argv)
 }
 
 /*
-=for apidoc p||call_pv
+=for apidoc call_pv
 
 Performs a callback to the specified Perl sub.  See L<perlcall>.
 
@@ -2906,7 +2906,7 @@ Perl_call_pv(pTHX_ const char *sub_name, I32 flags)
 }
 
 /*
-=for apidoc p||call_method
+=for apidoc call_method
 
 Performs a callback to the specified Perl method.  The blessed object must
 be on the stack.  See L<perlcall>.
@@ -2933,7 +2933,7 @@ Perl_call_method(pTHX_ const char *methname, I32 flags)
 
 /* May be called with any of a CV, a GV, or an SV containing the name. */
 /*
-=for apidoc p||call_sv
+=for apidoc call_sv
 
 Performs a callback to the Perl sub specified by the SV.
 
@@ -3096,7 +3096,7 @@ Perl_call_sv(pTHX_ SV *sv, volatile I32 flags)
 /* Eval a string. The G_EVAL flag is always assumed. */
 
 /*
-=for apidoc p||eval_sv
+=for apidoc eval_sv
 
 Tells Perl to C<eval> the string in the SV.  It supports the same flags
 as C<call_sv>, with the obvious exception of C<G_EVAL>.  See L<perlcall>.
@@ -3204,7 +3204,7 @@ Perl_eval_sv(pTHX_ SV *sv, I32 flags)
 }
 
 /*
-=for apidoc p||eval_pv
+=for apidoc eval_pv
 
 Tells Perl to C<eval> the given string in scalar context and return an SV* result.
 
@@ -3243,7 +3243,7 @@ Perl_eval_pv(pTHX_ const char *p, I32 croak_on_error)
 /*
 =head1 Embedding Functions
 
-=for apidoc p||require_pv
+=for apidoc require_pv
 
 Tells Perl to C<require> the file named by the string argument.  It is
 analogous to the Perl code C<eval "require '$file'">.  It's even
diff --git a/perl.h b/perl.h
index 06f62b1..04ff997 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -1675,8 +1675,6 @@ EXTERN_C char *crypt(const char *, const char *);
 
 #ifdef HAS_STRLCAT
 #  define my_strlcat    strlcat
-#else
-#  define my_strlcat    Perl_my_strlcat
 #endif
 
 #if defined(PERL_CORE) || defined(PERL_EXT)
@@ -1689,14 +1687,10 @@ EXTERN_C char *crypt(const char *, const char *);
 
 #ifdef HAS_STRLCPY
 #  define my_strlcpy   strlcpy
-#else
-#  define my_strlcpy   Perl_my_strlcpy
 #endif
 
 #ifdef HAS_STRNLEN
 #  define my_strnlen   strnlen
-#else
-#  define my_strnlen   Perl_my_strnlen
 #endif
 
 /*
index 34d92a4..e16885b 100644 (file)
@@ -2599,91 +2599,9 @@ that table:
 
     Apd |SV**   |av_fetch   |AV* ar|I32 key|I32 lval
 
-The second column is the return type, the third column the name.  Columns
-after that are the arguments.  The first column is a set of flags:
-
-=over 3
-
-=item A
-
-This function is a part of the public
-API.  All such functions should also
-have 'd', very few do not.
-
-=item p
-
-This function has a C<Perl_> prefix; i.e. it is defined as
-C<Perl_av_fetch>.
-
-=item d
-
-This function has documentation using the C<apidoc> feature which we'll
-look at in a second.  Some functions have 'd' but not 'A'; docs are good.
-
-=back
-
-Other available flags are:
-
-=over 3
-
-=item s
-
-This is a static function and is defined as C<STATIC S_whatever>, and
-usually called within the sources as C<whatever(...)>.
-
-=item n
-
-This does not need an interpreter context, so the definition has no
-C<pTHX>, and it follows that callers don't use C<aTHX>.  (See
-L</Background and PERL_IMPLICIT_CONTEXT>.)
-
-=item r
-
-This function never returns; C<croak>, C<exit> and friends.
-
-=item f
-
-This function takes a variable number of arguments, C<printf> style.
-The argument list should end with C<...>, like this:
-
-    Afprd   |void   |croak          |const char* pat|...
-
-=item M
-
-This function is part of the experimental development API, and may change
-or disappear without notice.
-
-=item o
-
-This function should not have a compatibility macro to define, say,
-C<Perl_parse> to C<parse>.  It must be called as C<Perl_parse>.
-
-=item x
-
-This function isn't exported out of the Perl core.
-
-=item m
-
-This is implemented as a macro.
-
-=item X
-
-This function is explicitly exported.
-
-=item E
-
-This function is visible to extensions included in the Perl core.
-
-=item b
-
-Binary backward compatibility; this function is a macro but also has
-a C<Perl_> implementation (which is exported).
-
-=item others
-
-See the comments at the top of C<embed.fnc> for others.
-
-=back
+The first column is a set of flags, the second column the return type,
+the third column the name.  Columns after that are the arguments.
+The flags are documented at the top of F<embed.fnc>.
 
 If you edit F<embed.pl> or F<embed.fnc>, you will need to run
 C<make regen_headers> to force a rebuild of F<embed.h> and other
diff --git a/pp.h b/pp.h
index 98540be..54a19ed 100644 (file)
--- a/pp.h
+++ b/pp.h
@@ -24,7 +24,7 @@ Stack marker variable for the XSUB.  See C<L</dMARK>>.
 Opening bracket for arguments on a callback.  See C<L</PUTBACK>> and
 L<perlcall>.
 
-=for apidoc Ams||dSP
+=for apidoc Amns||dSP
 Declares a local copy of perl's stack pointer for the XSUB, available via
 the C<SP> macro.  See C<L</SP>>.
 
@@ -35,17 +35,17 @@ a local copy of perl's stack pointer, available via the C<SP> macro.
 See C<L<perlapi/SP>>.  (Available for backward source code compatibility with
 the old (Perl 5.005) thread model.)
 
-=for apidoc Ams||dMARK
+=for apidoc Amns||dMARK
 Declare a stack marker variable, C<mark>, for the XSUB.  See C<L</MARK>> and
 C<L</dORIGMARK>>.
 
-=for apidoc Ams||dORIGMARK
+=for apidoc Amns||dORIGMARK
 Saves the original stack mark for the XSUB.  See C<L</ORIGMARK>>.
 
 =for apidoc AmU||ORIGMARK
 The original stack mark for the XSUB.  See C<L</dORIGMARK>>.
 
-=for apidoc Ams||SPAGAIN
+=for apidoc Amns||SPAGAIN
 Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
 
 =cut */
@@ -102,7 +102,7 @@ Refetch the stack pointer.  Used after a callback.  See L<perlcall>.
 #define DIE return Perl_die
 
 /*
-=for apidoc Ams||PUTBACK
+=for apidoc Amns||PUTBACK
 Closing bracket for XSUB arguments.  This is usually handled by C<xsubpp>.
 See C<L</PUSHMARK>> and L<perlcall> for other uses.
 
diff --git a/proto.h b/proto.h
index 74a8e46..0fc2adc 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -619,7 +619,7 @@ PERL_CALLCONV_NO_RET void   Perl_croak_caller(const char* pat, ...)
                        __attribute__noreturn__
                        __attribute__format__null_ok__(__printf__,1,2);
 
-PERL_STATIC_NO_RET void        S_croak_memory_wrap(void)
+PERL_STATIC_INLINE_NO_RET void S_croak_memory_wrap(void)
                        __attribute__noreturn__;
 
 PERL_CALLCONV_NO_RET void      Perl_croak_no_mem(void)
@@ -2581,6 +2581,12 @@ PERL_CALLCONV STRLEN *   Perl_new_warnings_bitfield(pTHX_ STRLEN *buffer, const ch
 PERL_CALLCONV PerlIO*  Perl_nextargv(pTHX_ GV* gv, bool nomagicopen);
 #define PERL_ARGS_ASSERT_NEXTARGV      \
        assert(gv)
+PERL_CALLCONV char*    Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__;
+#define PERL_ARGS_ASSERT_NINSTR        \
+       assert(big); assert(bigend); assert(little); assert(lend)
+
 PERL_CALLCONV_NO_RET void      Perl_noperl_die(const char* pat, ...)
                        __attribute__noreturn__
                        __attribute__format__(__printf__,1,2);
@@ -4063,14 +4069,6 @@ STATIC int       S_sv_2iuv_non_preserve(pTHX_ SV *const sv);
 #    endif
 #  endif
 #endif
-#if !(defined(HAS_MEMMEM))
-PERL_CALLCONV char*    Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__;
-#define PERL_ARGS_ASSERT_NINSTR        \
-       assert(big); assert(bigend); assert(little); assert(lend)
-
-#endif
 #if !(defined(HAS_NL_LANGINFO) && defined(PERL_LANGINFO_H))
 PERL_CALLCONV const char*      Perl_langinfo(const int item);
 #endif
@@ -4495,14 +4493,6 @@ PERL_CALLCONV void       Perl_dump_sv_child(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_DUMP_SV_CHILD \
        assert(sv)
 #endif
-#if defined(HAS_MEMMEM)
-PERL_CALLCONV char*    Perl_ninstr(const char* big, const char* bigend, const char* little, const char* lend)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__;
-#define PERL_ARGS_ASSERT_NINSTR        \
-       assert(big); assert(bigend); assert(little); assert(lend)
-
-#endif
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
 PERL_CALLCONV I32      Perl_do_ipcctl(pTHX_ I32 optype, SV** mark, SV** sp);
 #define PERL_ARGS_ASSERT_DO_IPCCTL     \
index ed49f5f..d5b04b4 100755 (executable)
@@ -51,7 +51,7 @@ sub full_name ($$) { # Returns the function name with potentially the
     my ($func, $flags) = @_;
 
     return "Perl_$func" if $flags =~ /p/;
-    return "S_$func" if $flags =~ /[si]/;
+    return "S_$func" if $flags =~ /[Si]/;
     return $func;
 }
 
@@ -81,12 +81,12 @@ my ($embed, $core, $ext, $api) = setup_embed();
        }
 
        my ($flags,$retval,$plain_func,@args) = @$_;
-        if ($flags =~ / ( [^AabDdEfiMmnOoPpRrsUWXx] ) /x) {
+        if ($flags =~ / ( [^AabDdEefiMmTOoPpRrSUWXx] ) /x) {
            die_at_end "flag $1 is not legal (for function $plain_func)";
        }
        my @nonnull;
         my $has_depth = ( $flags =~ /W/ );
-       my $has_context = ( $flags !~ /n/ );
+       my $has_context = ( $flags !~ /T/ );
        my $never_returns = ( $flags =~ /r/ );
        my $binarycompat = ( $flags =~ /b/ );
        my $commented_out = ( ! $binarycompat && $flags =~ /m/ );
@@ -99,17 +99,17 @@ my ($embed, $core, $ext, $api) = setup_embed();
            warn "It is nonsensical to require the return value of a void function ($plain_func) to be checked";
        }
 
-       die_at_end "$plain_func: s flag is mutually exclusive from the i and p plags"
-                                           if $flags =~ /s/ && $flags =~ /[ip]/;
+       die_at_end "$plain_func: S flag is mutually exclusive from the i and p plags"
+                                           if $flags =~ /S/ && $flags =~ /[ip]/;
 
        my $static_inline = 0;
-       if ($flags =~ /([si])/) {
+       if ($flags =~ /([Si])/) {
            my $type;
            if ($never_returns) {
-               $type = $1 eq 's' ? "PERL_STATIC_NO_RET" : "PERL_STATIC_INLINE_NO_RET";
+               $type = $1 eq 'S' ? "PERL_STATIC_NO_RET" : "PERL_STATIC_INLINE_NO_RET";
            }
            else {
-               $type = $1 eq 's' ? "STATIC" : "PERL_STATIC_INLINE";
+               $type = $1 eq 'S' ? "STATIC" : "PERL_STATIC_INLINE";
            }
            $retval = "$type $retval";
            die_at_end "Don't declare static function '$plain_func' pure" if $flags =~ /P/;
@@ -123,6 +123,9 @@ my ($embed, $core, $ext, $api) = setup_embed();
                $retval = "PERL_CALLCONV $retval";
            }
        }
+
+       die_at_end "M flag requires p flag" if $flags =~ /M/ && $flags !~ /p/;
+
        $func = full_name($plain_func, $flags);
        $ret = "";
        $ret .= "#ifndef NO_MATHOMS\n" if $binarycompat;
@@ -302,9 +305,9 @@ sub embed_h {
        }
        my $ret = "";
        my ($flags,$retval,$func,@args) = @$_;
-       unless ($flags =~ /[om]/) {
+       unless ($flags =~ /[omM]/) {
            my $args = scalar @args;
-           if ($flags =~ /n/) {
+           if ($flags =~ /T/) {
                my $full_name = full_name($func, $flags);
                next if $full_name eq $func;    # Don't output a no-op.
                $ret = hide($func, $full_name);
diff --git a/scope.h b/scope.h
index c6f4bc4..5fde315 100644 (file)
--- a/scope.h
+++ b/scope.h
 /*
 =head1 Callback Functions
 
-=for apidoc Ams||SAVETMPS
+=for apidoc Amns||SAVETMPS
 Opening bracket for temporaries on a callback.  See C<L</FREETMPS>> and
 L<perlcall>.
 
-=for apidoc Ams||FREETMPS
+=for apidoc Amns||FREETMPS
 Closing bracket for temporaries on a callback.  See C<L</SAVETMPS>> and
 L<perlcall>.
 
-=for apidoc Ams||ENTER
+=for apidoc Amns||ENTER
 Opening bracket on a callback.  See C<L</LEAVE>> and L<perlcall>.
 
-=for apidoc Ams||LEAVE
+=for apidoc Amns||LEAVE
 Closing bracket on a callback.  See C<L</ENTER>> and L<perlcall>.
 
-=for apidoc Ams||ENTER_with_name(name)
+=for apidoc Ams||ENTER_with_name|const char * name
 
 Same as C<L</ENTER>>, but when debugging is enabled it also associates the
 given literal string with the new scope.
 
-=for apidoc Ams||LEAVE_with_name(name)
+=for apidoc Ams||LEAVE_with_name|const char * name
 
 Same as C<L</LEAVE>>, but when debugging is enabled it first checks that the
 scope has the given name. C<name> must be a literal string.
index b892dfa..e6b9b93 100644 (file)
@@ -34,10 +34,10 @@ foreach (@{(setup_embed())[0]}) {
   next if @$_ < 2;
   next unless $_->[2]  =~ /warn|(?<!ov)err|(\b|_)die|croak/i;
   # The flag p means that this function may have a 'Perl_' prefix
-  # The flag s means that this function may have a 'S_' prefix
+  # The flag S means that this function may have a 'S_' prefix
   push @functions, $_->[2];
   push @functions, 'Perl_' . $_->[2] if $_->[0] =~ /p/;
-  push @functions, 'S_' . $_->[2] if $_->[0] =~ /s/;
+  push @functions, 'S_' . $_->[2] if $_->[0] =~ /S/;
 };
 push @functions, 'Perl_mess';
 
diff --git a/toke.c b/toke.c
index b0fa2c3..cecfa82 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -666,7 +666,7 @@ S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen)
 #endif
 
 /*
-=for apidoc Amx|void|lex_start|SV *line|PerlIO *rsfp|U32 flags
+=for apidoc lex_start
 
 Creates and initialises a new lexer/parser state object, supplying
 a context in which to lex and parse from a new source of Perl code.
@@ -831,7 +831,7 @@ Perl_parser_free_nexttoke_ops(pTHX_  yy_parser *parser, OPSLAB *slab)
 
 
 /*
-=for apidoc AmxU|SV *|PL_parser-E<gt>linestr
+=for apidoc AmxUN|SV *|PL_parser-E<gt>linestr
 
 Buffer scalar containing the chunk currently under consideration of the
 text currently being lexed.  This is always a plain string scalar (for
@@ -858,7 +858,7 @@ lexing position is pointed to by L</PL_parser-E<gt>bufptr>.  Direct use
 of these pointers is usually preferable to examination of the scalar
 through normal scalar means.
 
-=for apidoc AmxU|char *|PL_parser-E<gt>bufend
+=for apidoc AmxUN|char *|PL_parser-E<gt>bufend
 
 Direct pointer to the end of the chunk of text currently being lexed, the
 end of the lexer buffer.  This is equal to C<SvPVX(PL_parser-E<gt>linestr)
@@ -866,7 +866,7 @@ end of the lexer buffer.  This is equal to C<SvPVX(PL_parser-E<gt>linestr)
 always located at the end of the buffer, and does not count as part of
 the buffer's contents.
 
-=for apidoc AmxU|char *|PL_parser-E<gt>bufptr
+=for apidoc AmxUN|char *|PL_parser-E<gt>bufptr
 
 Points to the current position of lexing inside the lexer buffer.
 Characters around this point may be freely examined, within
@@ -884,7 +884,7 @@ Interpretation of the buffer's octets can be abstracted out by
 using the slightly higher-level functions L</lex_peek_unichar> and
 L</lex_read_unichar>.
 
-=for apidoc AmxU|char *|PL_parser-E<gt>linestart
+=for apidoc AmxUN|char *|PL_parser-E<gt>linestart
 
 Points to the start of the current line inside the lexer buffer.
 This is useful for indicating at which column an error occurred, and
@@ -895,7 +895,7 @@ a newline; the function L</lex_read_to> handles this detail.
 */
 
 /*
-=for apidoc Amx|bool|lex_bufutf8
+=for apidoc lex_bufutf8
 
 Indicates whether the octets in the lexer buffer
 (L</PL_parser-E<gt>linestr>) should be interpreted as the UTF-8 encoding
@@ -926,7 +926,7 @@ Perl_lex_bufutf8(pTHX)
 }
 
 /*
-=for apidoc Amx|char *|lex_grow_linestr|STRLEN len
+=for apidoc lex_grow_linestr
 
 Reallocates the lexer buffer (L</PL_parser-E<gt>linestr>) to accommodate
 at least C<len> octets (including terminating C<NUL>).  Returns a
@@ -989,7 +989,7 @@ Perl_lex_grow_linestr(pTHX_ STRLEN len)
 }
 
 /*
-=for apidoc Amx|void|lex_stuff_pvn|const char *pv|STRLEN len|U32 flags
+=for apidoc lex_stuff_pvn
 
 Insert characters into the lexer buffer (L</PL_parser-E<gt>linestr>),
 immediately after the current lexing point (L</PL_parser-E<gt>bufptr>),
@@ -1084,7 +1084,7 @@ Perl_lex_stuff_pvn(pTHX_ const char *pv, STRLEN len, U32 flags)
 }
 
 /*
-=for apidoc Amx|void|lex_stuff_pv|const char *pv|U32 flags
+=for apidoc lex_stuff_pv
 
 Insert characters into the lexer buffer (L</PL_parser-E<gt>linestr>),
 immediately after the current lexing point (L</PL_parser-E<gt>bufptr>),
@@ -1113,7 +1113,7 @@ Perl_lex_stuff_pv(pTHX_ const char *pv, U32 flags)
 }
 
 /*
-=for apidoc Amx|void|lex_stuff_sv|SV *sv|U32 flags
+=for apidoc lex_stuff_sv
 
 Insert characters into the lexer buffer (L</PL_parser-E<gt>linestr>),
 immediately after the current lexing point (L</PL_parser-E<gt>bufptr>),
@@ -1145,7 +1145,7 @@ Perl_lex_stuff_sv(pTHX_ SV *sv, U32 flags)
 }
 
 /*
-=for apidoc Amx|void|lex_unstuff|char *ptr
+=for apidoc lex_unstuff
 
 Discards text about to be lexed, from L</PL_parser-E<gt>bufptr> up to
 C<ptr>.  Text following C<ptr> will be moved, and the buffer shortened.
@@ -1179,7 +1179,7 @@ Perl_lex_unstuff(pTHX_ char *ptr)
 }
 
 /*
-=for apidoc Amx|void|lex_read_to|char *ptr
+=for apidoc lex_read_to
 
 Consume text in the lexer buffer, from L</PL_parser-E<gt>bufptr> up
 to C<ptr>.  This advances L</PL_parser-E<gt>bufptr> to match C<ptr>,
@@ -1210,7 +1210,7 @@ Perl_lex_read_to(pTHX_ char *ptr)
 }
 
 /*
-=for apidoc Amx|void|lex_discard_to|char *ptr
+=for apidoc lex_discard_to
 
 Discards the first part of the L</PL_parser-E<gt>linestr> buffer,
 up to C<ptr>.  The remaining content of the buffer will be moved, and
@@ -1282,7 +1282,7 @@ Perl_notify_parser_that_changed_to_utf8(pTHX)
 }
 
 /*
-=for apidoc Amx|bool|lex_next_chunk|U32 flags
+=for apidoc lex_next_chunk
 
 Reads in the next chunk of text to be lexed, appending it to
 L</PL_parser-E<gt>linestr>.  This should be called when lexing code has
@@ -1422,7 +1422,7 @@ Perl_lex_next_chunk(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|I32|lex_peek_unichar|U32 flags
+=for apidoc lex_peek_unichar
 
 Looks ahead one (Unicode) character in the text currently being lexed.
 Returns the codepoint (unsigned integer value) of the next character,
@@ -1491,7 +1491,7 @@ Perl_lex_peek_unichar(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|I32|lex_read_unichar|U32 flags
+=for apidoc lex_read_unichar
 
 Reads the next (Unicode) character in the text currently being lexed.
 Returns the codepoint (unsigned integer value) of the character read,
@@ -1529,7 +1529,7 @@ Perl_lex_read_unichar(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|void|lex_read_space|U32 flags
+=for apidoc lex_read_space
 
 Reads optional spaces, in Perl style, in the text currently being
 lexed.  The spaces may include ordinary whitespace characters and
@@ -1604,7 +1604,7 @@ Perl_lex_read_space(pTHX_ U32 flags)
 
 /*
 
-=for apidoc EXMp|bool|validate_proto|SV *name|SV *proto|bool warn
+=for apidoc validate_proto
 
 This function performs syntax checking on a prototype, C<proto>.
 If C<warn> is true, any illegal characters or mismatched brackets
@@ -12268,7 +12268,7 @@ Perl_keyword_plugin_standard(pTHX_
 }
 
 /*
-=for apidoc Amx|void|wrap_keyword_plugin|Perl_keyword_plugin_t new_plugin|Perl_keyword_plugin_t *old_plugin_p
+=for apidoc wrap_keyword_plugin
 
 Puts a C function into the chain of keyword plugins.  This is the
 preferred way to manipulate the L</PL_keyword_plugin> variable.
@@ -12387,7 +12387,7 @@ S_parse_expr(pTHX_ I32 fakeeof, U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_arithexpr|U32 flags
+=for apidoc parse_arithexpr
 
 Parse a Perl arithmetic expression.  This may contain operators of precedence
 down to the bit shift operators.  The expression must be followed (and thus
@@ -12419,7 +12419,7 @@ Perl_parse_arithexpr(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_termexpr|U32 flags
+=for apidoc parse_termexpr
 
 Parse a Perl term expression.  This may contain operators of precedence
 down to the assignment operators.  The expression must be followed (and thus
@@ -12451,7 +12451,7 @@ Perl_parse_termexpr(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_listexpr|U32 flags
+=for apidoc parse_listexpr
 
 Parse a Perl list expression.  This may contain operators of precedence
 down to the comma operator.  The expression must be followed (and thus
@@ -12483,7 +12483,7 @@ Perl_parse_listexpr(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_fullexpr|U32 flags
+=for apidoc parse_fullexpr
 
 Parse a single complete Perl expression.  This allows the full
 expression grammar, including the lowest-precedence operators such
@@ -12516,7 +12516,7 @@ Perl_parse_fullexpr(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_block|U32 flags
+=for apidoc parse_block
 
 Parse a single complete Perl code block.  This consists of an opening
 brace, a sequence of statements, and a closing brace.  The block
@@ -12552,7 +12552,7 @@ Perl_parse_block(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_barestmt|U32 flags
+=for apidoc parse_barestmt
 
 Parse a single unadorned Perl statement.  This may be a normal imperative
 statement or a declaration that has compile-time effect.  It does not
@@ -12590,7 +12590,7 @@ Perl_parse_barestmt(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|SV *|parse_label|U32 flags
+=for apidoc parse_label
 
 Parse a single label, possibly optional, of the type that may prefix a
 Perl statement.  It is up to the caller to ensure that the dynamic parser
@@ -12660,7 +12660,7 @@ Perl_parse_label(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_fullstmt|U32 flags
+=for apidoc parse_fullstmt
 
 Parse a single complete Perl statement.  This may be a normal imperative
 statement or a declaration that has compile-time effect, and may include
@@ -12695,7 +12695,7 @@ Perl_parse_fullstmt(pTHX_ U32 flags)
 }
 
 /*
-=for apidoc Amx|OP *|parse_stmtseq|U32 flags
+=for apidoc parse_stmtseq
 
 Parse a sequence of zero or more Perl statements.  These may be normal
 imperative statements, including optional labels, or declarations
diff --git a/util.c b/util.c
index e5320c8..e6863f6 100644 (file)
--- a/util.c
+++ b/util.c
@@ -591,7 +591,7 @@ Perl_delimcpy_no_escape(char *to, const char *toend, const char *from,
 /*
 =head1 Miscellaneous Functions
 
-=for apidoc Am|char *|ninstr|char * big|char * bigend|char * little|char * little_end
+=for apidoc ninstr
 
 Find the first (leftmost) occurrence of a sequence of bytes within another
 sequence.  This is the Perl version of C<strstr()>, extended to handle
@@ -652,7 +652,7 @@ Perl_ninstr(const char *big, const char *bigend, const char *little, const char
 /*
 =head1 Miscellaneous Functions
 
-=for apidoc Am|char *|rninstr|char * big|char * bigend|char * little|char * little_end
+=for apidoc rninstr
 
 Like C<L</ninstr>>, but instead finds the final (rightmost) occurrence of a
 sequence of bytes within another sequence, returning C<NULL> if there is no
@@ -1287,7 +1287,7 @@ Perl_vform(pTHX_ const char *pat, va_list *args)
 }
 
 /*
-=for apidoc Am|SV *|mess|const char *pat|...
+=for apidoc mess
 
 Take a sprintf-style format pattern and argument list.  These are used to
 generate a string message.  If the message does not end with a newline,
@@ -1368,7 +1368,7 @@ Perl_closest_cop(pTHX_ const COP *cop, const OP *o, const OP *curop,
 }
 
 /*
-=for apidoc Am|SV *|mess_sv|SV *basemsg|bool consume
+=for apidoc mess_sv
 
 Expands a message, intended for the user, to include an indication of
 the current location in the code, if the message does not already appear
@@ -1472,7 +1472,7 @@ Perl_mess_sv(pTHX_ SV *basemsg, bool consume)
 }
 
 /*
-=for apidoc Am|SV *|vmess|const char *pat|va_list *args
+=for apidoc vmess
 
 C<pat> and C<args> are a sprintf-style format pattern and encapsulated
 argument list, respectively.  These are used to generate a string message.  If
@@ -1584,7 +1584,7 @@ S_invoke_exception_hook(pTHX_ SV *ex, bool warn)
 }
 
 /*
-=for apidoc Am|OP *|die_sv|SV *baseex
+=for apidoc die_sv
 
 Behaves the same as L</croak_sv>, except for the return type.
 It should be used only where the C<OP *> return type is required.
@@ -1606,7 +1606,7 @@ Perl_die_sv(pTHX_ SV *baseex)
 MSVC_DIAG_RESTORE
 
 /*
-=for apidoc Am|OP *|die|const char *pat|...
+=for apidoc die
 
 Behaves the same as L</croak>, except for the return type.
 It should be used only where the C<OP *> return type is required.
@@ -1649,7 +1649,7 @@ Perl_die(pTHX_ const char* pat, ...)
 MSVC_DIAG_RESTORE
 
 /*
-=for apidoc Am|void|croak_sv|SV *baseex
+=for apidoc croak_sv
 
 This is an XS interface to Perl's C<die> function.
 
@@ -1679,7 +1679,7 @@ Perl_croak_sv(pTHX_ SV *baseex)
 }
 
 /*
-=for apidoc Am|void|vcroak|const char *pat|va_list *args
+=for apidoc vcroak
 
 This is an XS interface to Perl's C<die> function.
 
@@ -1712,7 +1712,7 @@ Perl_vcroak(pTHX_ const char* pat, va_list *args)
 }
 
 /*
-=for apidoc Am|void|croak|const char *pat|...
+=for apidoc croak
 
 This is an XS interface to Perl's C<die> function.
 
@@ -1759,7 +1759,7 @@ Perl_croak(pTHX_ const char *pat, ...)
 }
 
 /*
-=for apidoc Am|void|croak_no_modify
+=for apidoc croak_no_modify
 
 Exactly equivalent to C<Perl_croak(aTHX_ "%s", PL_no_modify)>, but generates
 terser object code than using C<Perl_croak>.  Less code used on exception code
@@ -1802,7 +1802,7 @@ Perl_croak_popstack(void)
 }
 
 /*
-=for apidoc Am|void|warn_sv|SV *baseex
+=for apidoc warn_sv
 
 This is an XS interface to Perl's C<warn> function.
 
@@ -1830,7 +1830,7 @@ Perl_warn_sv(pTHX_ SV *baseex)
 }
 
 /*
-=for apidoc Am|void|vwarn|const char *pat|va_list *args
+=for apidoc vwarn
 
 This is an XS interface to Perl's C<warn> function.
 
@@ -1858,7 +1858,7 @@ Perl_vwarn(pTHX_ const char* pat, va_list *args)
 }
 
 /*
-=for apidoc Am|void|warn|const char *pat|...
+=for apidoc warn
 
 This is an XS interface to Perl's C<warn> function.
 
diff --git a/util.h b/util.h
index 71531c7..d8fa3e8 100644 (file)
--- a/util.h
+++ b/util.h
@@ -239,6 +239,8 @@ means arg not present, 1 is empty string/null byte */
 #   define ninstr(big, bigend, little, lend)                                \
             ((char *) memmem((big), (bigend) - (big),                       \
                              (little), (lend) - (little)))
+#else
+#   define ninstr(a,b,c,d) Perl_ninstr(a,b,c,d)
 #endif
 
 #ifdef __Lynx__