This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perlguts: Document save_item
[perl5.git] / embed.fnc
index 4c444ea..a58a1fc 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):
+:   A  Accessible fully everywhere (usually part of the public API):
 :
 :         add entry to the list of exported symbols (unless e 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
+:         any doc entry goes in perlapi.pod rather than perlintern.pod.  If
+:            no documentation is furnished, x controls what happens: If x
+:            isn't specified, autodoc.pl lists this in perlapi as existing and
+:           being undocumented; otherwise it simply isn't listed.
 :         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 +98,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 if 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/
 :
 :         proto.h: add __attribute__format__ (or ...null_ok__)
 :
+:   h  Hide any documentation.  This is used typically when the documentation
+:      is atypical of the rest of perlapi and perlintern.  In other words the
+:      item is documented, but just not the standard way.  One reason would be
+:      if there are a bunch of macros which follow a common paradigm in their
+:      naming, so rather than having an entry for each slight variation, there
+:      is an overarchinge one.  It is also used when the documentation is in
+:      another pod, such as perlguts or warnings.h.  This flag is useful for
+:      downstream programs, such as Devel::PPPort.
+:
 :   i  Static inline: function in source code has a S_ prefix:
 :
 :         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  There is an extra macro that bypasses this function
 :
 :      (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 with out the 'Perl_' prefix that bypasses the function call,
+:      available without the 'Perl_' prefix that bypasses the function call,
 :      such as when the function has been reduced to a wrapper around another
 :      one.
 :
 :         suppress entry in the list of exported symbols
 :         suppress embed.h entry
 :
+:   N  The name in the entry isn't strictly a name
+:
+:      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
 :
 :   R  Return value must not be ignored (also implied by 'a' and 'P' flags):
 :
+:      gcc has a bug (which they claim is a feature) in which casting the
+:       result of one of these to (void) doesn't silence the warning that the
+:      result is ignored.
+:
 :        proto.h: add __attribute__warn_unused_result__
 :
 :   r  Function never returns:
 :             "#define foo Perl_foo",      rather than
 :             "#define foo(a,b,c) Perl_foo(aTHX_ a,b,c)
 :
-:   U  Suppress usage example in autogenerated documentation
-:
-:         (currently no effect)
+:   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
 :         any doc entry is marked that it may change.  Also used to suppress
 :        making a doc entry if it would just be a placeholder.
 :
-: (see also L<perlguts/Internal Functions> for those flags.)
-:
-: 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)
 ATo    |PerlInterpreter*|perl_alloc_using \
@@ -254,9 +321,9 @@ ATo |PerlInterpreter*|perl_clone_using \
 #  endif
 #endif
 
-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
+AaTophd        |Malloc_t|malloc        |MEM_SIZE nbytes
+AaTophd        |Malloc_t|calloc        |MEM_SIZE elements|MEM_SIZE size
+ARTophd        |Malloc_t|realloc       |Malloc_t where|MEM_SIZE nbytes
 ATop   |Free_t |mfree          |Malloc_t where
 #if defined(MYMALLOC)
 TpR    |MEM_SIZE|malloced_size |NN void *p
@@ -303,7 +370,7 @@ EXp |void   |av_reify       |NN AV *av
 ApdR   |SV*    |av_shift       |NN AV *av
 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
+AmdR   |SSize_t|av_tindex      |NN AV *av
 Apd    |void   |av_undef       |NN AV *av
 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
@@ -370,11 +437,11 @@ 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|...
+AbfTpD |int    |fprintf_nocontext|NN PerlIO *stream|NN const char *format|...
+AbfTpD |int    |printf_nocontext|NN const char *format|...
 #endif
 : Used in pp.c
-p      |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
+pd     |SV *   |core_prototype |NULLOK SV *sv|NN const char *name \
                                |const int code|NULLOK int * const opnum
 : Used in gv.c
 p      |OP *   |coresub_op     |NN SV *const coreargssv|const int code \
@@ -390,11 +457,11 @@ 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
-p      |void   |cv_forget_slab |NULLOK CV *cv
+pd     |void   |cv_forget_slab |NULLOK CV *cv
 Ap     |void   |cx_dump        |NN PERL_CONTEXT* cx
-Ap     |SV*    |filter_add     |NULLOK filter_t funcp|NULLOK SV* datasv
+Aphd   |SV*    |filter_add     |NULLOK filter_t funcp|NULLOK SV* datasv
 Ap     |void   |filter_del     |NN filter_t funcp
-ApR    |I32    |filter_read    |int idx|NN SV *buf_sv|int maxlen
+ApRhd  |I32    |filter_read    |int idx|NN SV *buf_sv|int maxlen
 ApPR   |char** |get_op_descs
 ApPR   |char** |get_op_names
 : FIXME discussion on p5p
@@ -427,10 +494,10 @@ Afrpd     |OP*    |die            |NULLOK const char* pat|...
 pr     |void   |die_unwind     |NN SV* msv
 Ap     |void   |dounwind       |I32 cxix
 : FIXME
-pmb    |bool|do_aexec  |NULLOK SV* really|NN SV** mark|NN SV** sp
+pMb    |bool|do_aexec  |NULLOK SV* really|NN SV** mark|NN SV** sp
 : Used in pp_sys.c
 p      |bool|do_aexec5 |NULLOK SV* really|NN SV** mark|NN SV** sp|int fd|int do_report
-Abp    |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
+AbpD   |int    |do_binmode     |NN PerlIO *fp|int iotype|int mode
 : Used in pp.c
 Ap     |bool   |do_close       |NULLOK GV* gv|bool not_implicit
 : Defined in doio.c, used only in pp_sys.c
@@ -473,9 +540,9 @@ Ap  |void   |do_join        |NN SV *sv|NN SV *delim|NN SV **mark|NN SV **sp
 : p    |OP*    |do_kv
 : used in pp.c, pp_hot.c
 pR     |I32    |do_ncmp        |NN SV *const left|NN SV *const right
-Apmb   |bool   |do_open        |NN GV* gv|NN const char* name|I32 len|int as_raw \
+ApMb   |bool   |do_open        |NN GV* gv|NN const char* name|I32 len|int as_raw \
                                |int rawmode|int rawperm|NULLOK PerlIO* supplied_fp
-Abp    |bool   |do_open9       |NN GV *gv|NN const char *name|I32 len|int as_raw \
+AbpD   |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
 pT     |void   |setfd_cloexec|int fd
@@ -488,6 +555,7 @@ 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
 pToR   |int    |my_mkstemp_cloexec|NN char *templte
+pToR   |int    |my_mkostemp_cloexec|NN char *templte|int flags
 #ifdef HAS_PIPE
 pR     |int    |PerlProc_pipe_cloexec|NN int *pipefd
 #endif
@@ -545,15 +613,15 @@ p |void   |do_vop         |I32 optype|NN SV* sv|NN SV* left|NN SV* right
 : Used in perly.y
 p      |OP*    |dofile         |NN OP* term|I32 force_builtin
 ApR    |U8     |dowantarray
-A    |void   |dump_all
+Adp    |void   |dump_all
 p      |void   |dump_all_perl  |bool justperl
 Ap     |void   |dump_eval
 Ap     |void   |dump_form      |NN const GV* gv
 Ap     |void   |gv_dump        |NULLOK GV* gv
 Apd    |OPclass|op_class       |NULLOK const OP *o
-Ap     |void   |op_dump        |NN const OP *o
+Apd    |void   |op_dump        |NN const OP *o
 Ap     |void   |pmop_dump      |NULLOK PMOP* pm
-Ap     |void   |dump_packsubs  |NN const HV* stash
+Apd    |void   |dump_packsubs  |NN const HV* stash
 p      |void   |dump_packsubs_perl     |NN const HV* stash|bool justperl
 Ap     |void   |dump_sub       |NN const GV* gv
 p      |void   |dump_sub_perl  |NN const GV* gv|bool justperl
@@ -575,13 +643,13 @@ 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
+Sd     |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      |void   |gen_constant_list|NULLOK OP* o
 #endif
 #if !defined(HAS_GETENV_LEN)
 : Used in hv.c
@@ -592,9 +660,9 @@ 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
-Apmb   |GV*    |gv_AVadd       |NULLOK GV *gv
-Apmb   |GV*    |gv_HVadd       |NULLOK GV *gv
-Apmb   |GV*    |gv_IOadd       |NULLOK GV* gv
+ApMb   |GV*    |gv_AVadd       |NULLOK GV *gv
+ApMb   |GV*    |gv_HVadd       |NULLOK GV *gv
+ApMb   |GV*    |gv_IOadd       |NULLOK GV* gv
 AmR    |GV*    |gv_autoload4   |NULLOK HV* stash|NN const char* name \
                                |STRLEN len|I32 method
 ApR    |GV*    |gv_autoload_sv |NULLOK HV* stash|NN SV* namesv|U32 flags
@@ -603,8 +671,8 @@ ApR |GV*    |gv_autoload_pv |NULLOK HV* stash|NN const char* namepv \
 ApR    |GV*    |gv_autoload_pvn        |NULLOK HV* stash|NN const char* name \
                                         |STRLEN len|U32 flags
 Ap     |void   |gv_check       |NN HV* stash
-Abp    |void   |gv_efullname   |NN SV* sv|NN const GV* gv
-Apmb   |void   |gv_efullname3  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
+AbpD   |void   |gv_efullname   |NN SV* sv|NN const GV* gv
+ApMb   |void   |gv_efullname3  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix
 Ap     |void   |gv_efullname4  |NN SV* sv|NN const GV* gv|NULLOK const char* prefix|bool keepmain
 Ap     |GV*    |gv_fetchfile   |NN const char* name
 Ap     |GV*    |gv_fetchfile_flags|NN const char *const name|const STRLEN len\
@@ -624,7 +692,7 @@ Apd |GV*    |gv_fetchmeth_pv_autoload       |NULLOK HV* stash|NN const char* name \
                                         |I32 level|U32 flags
 Apd    |GV*    |gv_fetchmeth_pvn_autoload      |NULLOK HV* stash|NN const char* name \
                                         |STRLEN len|I32 level|U32 flags
-Apdmb  |GV*    |gv_fetchmethod |NN 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
 Apx    |GV*    |gv_fetchmethod_sv_flags|NN HV* stash|NN SV* namesv|U32 flags
@@ -633,8 +701,8 @@ Apx |GV*    |gv_fetchmethod_pv_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
+AbpD   |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
 pxoe   |GP *   |newGP          |NN GV *const gv
@@ -643,10 +711,10 @@ poX       |GV *   |cvgv_from_hek  |NN CV* cv
 pX     |void   |cvstash_set    |NN CV* cv|NULLOK HV* stash
 Amd    |void   |gv_init        |NN GV* gv|NULLOK HV* stash \
                                 |NN const char* name|STRLEN len|int multi
-Ap     |void   |gv_init_sv     |NN GV* gv|NULLOK HV* stash|NN SV* namesv|U32 flags
-Ap     |void   |gv_init_pv     |NN GV* gv|NULLOK HV* stash|NN const char* name \
+Apd    |void   |gv_init_sv     |NN GV* gv|NULLOK HV* stash|NN SV* namesv|U32 flags
+Apd    |void   |gv_init_pv     |NN GV* gv|NULLOK HV* stash|NN const char* name \
                                 |U32 flags
-Ap     |void   |gv_init_pvn    |NN GV* gv|NULLOK HV* stash|NN const char* name \
+Apd    |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
 pe     |GV *   |gv_override    |NN const char * const name \
@@ -666,14 +734,14 @@ Apd       |void   |hv_clear       |NULLOK HV *hv
 : used in SAVEHINTS() and op.c
 ApdR   |HV *   |hv_copy_hints_hv|NULLOK HV *const ohv
 Ap     |void   |hv_delayfree_ent|NN HV *hv|NULLOK HE *entry
-Abmdp  |SV*    |hv_delete      |NULLOK HV *hv|NN const char *key|I32 klen \
+AbMdp  |SV*    |hv_delete      |NULLOK HV *hv|NN const char *key|I32 klen \
                                |I32 flags
-Abmdp  |SV*    |hv_delete_ent  |NULLOK HV *hv|NN SV *keysv|I32 flags|U32 hash
-AbmdRp |bool   |hv_exists      |NULLOK HV *hv|NN const char *key|I32 klen
-AbmdRp |bool   |hv_exists_ent  |NULLOK HV *hv|NN SV *keysv|U32 hash
-Abmdp  |SV**   |hv_fetch       |NULLOK HV *hv|NN const char *key|I32 klen \
+AbMdp  |SV*    |hv_delete_ent  |NULLOK HV *hv|NN SV *keysv|I32 flags|U32 hash
+AbMdRp |bool   |hv_exists      |NULLOK HV *hv|NN const char *key|I32 klen
+AbMdRp |bool   |hv_exists_ent  |NULLOK HV *hv|NN SV *keysv|U32 hash
+AbMdp  |SV**   |hv_fetch       |NULLOK HV *hv|NN const char *key|I32 klen \
                                |I32 lval
-Abmdp  |HE*    |hv_fetch_ent   |NULLOK HV *hv|NN SV *keysv|I32 lval|U32 hash
+AbMdp  |HE*    |hv_fetch_ent   |NULLOK HV *hv|NN SV *keysv|I32 lval|U32 hash
 Ap     |void*  |hv_common      |NULLOK HV *hv|NULLOK SV *keysv \
                                |NULLOK const char* key|STRLEN klen|int flags \
                                |int action|NULLOK SV *val|U32 hash
@@ -685,12 +753,12 @@ 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
+ApdRbM |HE*    |hv_iternext    |NN HV *hv
 ApdR   |SV*    |hv_iternextsv  |NN HV *hv|NN char **key|NN I32 *retlen
 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
+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
 #endif
@@ -715,18 +783,18 @@ Xpd       |struct refcounted_he *|refcounted_he_new_sv \
                                |U32 hash|NULLOK SV *value|U32 flags
 Xpd    |void   |refcounted_he_free|NULLOK struct refcounted_he *he
 Xpd    |struct refcounted_he *|refcounted_he_inc|NULLOK struct refcounted_he *he
-Apbmd  |SV**   |hv_store       |NULLOK HV *hv|NULLOK const char *key \
+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\
+ApbMd  |HE*    |hv_store_ent   |NULLOK HV *hv|NULLOK SV *key|NULLOK SV *val\
                                |U32 hash
-Apbmx  |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
-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
-AiTp   |I32    |foldEQ_locale  |NN const char* a|NN const char* b|I32 len
+AdmP   |I32    |ibcmp          |NN const char* a|NN const char* b|I32 len
+AdiTp  |I32    |foldEQ         |NN const char* a|NN const char* b|I32 len
+AdmP   |I32    |ibcmp_locale   |NN const char* a|NN const char* b|I32 len
+AiTpd  |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
@@ -749,7 +817,7 @@ p   |void   |init_debugger
 Ap     |void   |init_stacks
 Ap     |void   |init_tm        |NN struct tm *ptm
 : Used in perly.y
-AbmTpPR        |char*  |instr          |NN const char* big|NN const char* little
+AbMTpPRd|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
@@ -826,29 +894,29 @@ ATidR     |bool   |is_utf8_invariant_string_loc|NN const U8* const s          \
 ATiR   |unsigned int|_variant_byte_number|PERL_UINTMAX_T word
 #endif
 #if defined(PERL_CORE) || defined(PERL_EXT)
-EiTR   |Size_t |variant_under_utf8_count|NN const U8* const s              \
+EiTRd  |Size_t |variant_under_utf8_count|NN const U8* const s              \
                |NN const U8* const e
 #endif
-AmTpdRP        |bool   |is_ascii_string|NN const U8* const s|STRLEN len
-AmTpdRP        |bool   |is_invariant_string|NN const U8* const s|STRLEN len
+AmTdRP |bool   |is_ascii_string|NN const U8* const s|STRLEN len
+AmTdRP |bool   |is_invariant_string|NN const U8* const s|STRLEN len
 #if defined(PERL_CORE) || defined (PERL_EXT)
 EXTidR |bool   |is_utf8_non_invariant_string|NN const U8* const s          \
                |STRLEN len
 #endif
 AbTpdD |STRLEN |is_utf8_char   |NN const U8 *s
-AbmTpd |STRLEN |is_utf8_char_buf|NN const U8 *buf|NN const U8 *buf_end
+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
 ATidR  |Size_t |isSTRICT_UTF8_CHAR |NN const U8 * const s0                 \
                                    |NN const U8 * const e
 ATidR  |Size_t |isC9_STRICT_UTF8_CHAR |NN const U8 * const s0              \
                                       |NN const U8 * const e
-ATmdpR |bool   |is_utf8_string |NN const U8 *s|STRLEN len
+ATmd |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
-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                                         \
+ATmd |bool   |is_strict_utf8_string|NN const U8 *s|STRLEN len
+ATmd |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
 ATdm   |bool   |is_utf8_string_loc_flags                                   \
                |NN const U8 *s|STRLEN len|NN const U8 **ep                 \
@@ -957,6 +1025,7 @@ Axpd       |OP*    |parse_barestmt |U32 flags
 Axpd   |SV*    |parse_label    |U32 flags
 Axpd   |OP*    |parse_fullstmt |U32 flags
 Axpd   |OP*    |parse_stmtseq  |U32 flags
+Axpd   |OP*    |parse_subsignature|U32 flags
 : Used in various files
 Apd    |void   |op_null        |NN OP* o
 : FIXME. Used by Data::Alias
@@ -1004,7 +1073,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
-EXp  |bool   |grok_atoUV     |NN const char* pv|NN UV* valptr|NULLOK const char** endptr
+EXpdT  |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
@@ -1072,7 +1141,7 @@ pod       |SV*    |magic_methcall |NN SV *sv|NN const MAGIC *mg \
 Ap     |I32 *  |markstack_grow
 #if defined(USE_LOCALE_COLLATE)
 p      |int    |magic_setcollxfrm|NN SV* sv|NN MAGIC* mg
-pb     |char*  |mem_collxfrm   |NN const char* input_string|STRLEN len|NN STRLEN* xlen
+pbD    |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)
 px     |char*  |_mem_collxfrm  |NN const char* input_string    \
@@ -1110,8 +1179,8 @@ Ap        |I32    |mg_size        |NN SV* sv
 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
+pd     |void   |finalize_optree                |NN OP* o
+pd     |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
@@ -1122,14 +1191,14 @@ S       |void   |move_proto_attr|NN OP **proto|NN OP **attrs \
 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
-ATpR   |NV     |my_strtod      |NN const char * const s|NULLOK char ** e
-Apr    |void   |my_exit        |U32 status
+ATdpR  |NV     |my_strtod      |NN const char * const s|NULLOK char ** e
+Aprd   |void   |my_exit        |U32 status
 Apr    |void   |my_failure_exit
 Ap     |I32    |my_fflush_all
 ATp    |Pid_t  |my_fork
 ATp    |void   |atfork_lock
 ATp    |void   |atfork_unlock
-Apmb   |I32    |my_lstat
+ApMb   |I32    |my_lstat
 pX     |I32    |my_lstat_flags |NULLOK const U32 flags
 #if ! defined(HAS_MEMRCHR) && (defined(PERL_CORE) || defined(PERL_EXT))
 EeiT   |void * |my_memrchr     |NN const char * s|const char c|const STRLEN len
@@ -1139,8 +1208,8 @@ Ap        |I32    |my_pclose      |NULLOK PerlIO* ptr
 Ap     |PerlIO*|my_popen       |NN const char* cmd|NN const char* mode
 #endif
 Ap     |PerlIO*|my_popen_list  |NN const char* mode|int n|NN SV ** args
-Ap     |void   |my_setenv      |NULLOK const char* nam|NULLOK const char* val
-Apmb   |I32    |my_stat
+Apd    |void   |my_setenv      |NULLOK const char* nam|NULLOK const char* val
+ApMb   |I32    |my_stat
 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
@@ -1169,7 +1238,7 @@ Ap        |void   |newPROG        |NN OP* o
 ApdR   |OP*    |newRANGE       |I32 flags|NN OP* left|NN OP* right
 ApdR   |OP*    |newSLICEOP     |I32 flags|NULLOK OP* subscript|NULLOK OP* listop
 ApdR   |OP*    |newSTATEOP     |I32 flags|NULLOK char* label|NULLOK OP* o
-Apbm   |CV*    |newSUB         |I32 floor|NULLOK OP* o|NULLOK OP* proto \
+ApbM   |CV*    |newSUB         |I32 floor|NULLOK OP* o|NULLOK OP* proto \
                                |NULLOK OP* block
 pd     |CV *   |newXS_len_flags|NULLOK const char *name|STRLEN len \
                                |NN XSUBADDR_t subaddr\
@@ -1180,9 +1249,9 @@ pX        |CV *   |newXS_deffile  |NN 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
+ApMdbR |AV*    |newAV
 ApR    |OP*    |newAVREF       |NN OP* o
 ApdR   |OP*    |newBINOP       |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last
 ApR    |OP*    |newCVREF       |I32 flags|NULLOK OP* o
@@ -1191,9 +1260,9 @@ Am        |GV*    |newGVgen       |NN const char* pack
 ApR    |GV*    |newGVgen_flags |NN const char* pack|U32 flags
 ApR    |OP*    |newGVREF       |I32 type|NULLOK OP* o
 ApR    |OP*    |newHVREF       |NN OP* o
-ApmdbR |HV*    |newHV
+ApMdbR |HV*    |newHV
 ApR    |HV*    |newHVhv        |NULLOK HV *hv
-ApRbm  |IO*    |newIO
+ApRbM  |IO*    |newIO
 ApdR   |OP*    |newLISTOP      |I32 type|I32 flags|NULLOK OP* first|NULLOK OP* last
 AxpdRT |PADNAME *|newPADNAMEouter|NN PADNAME *outer
 AxpdRT |PADNAME *|newPADNAMEpvn|NN const char *s|STRLEN len
@@ -1222,8 +1291,8 @@ ApdR      |SV*    |newSVpv_share  |NULLOK const char* s|U32 hash
 AfpdR  |SV*    |newSVpvf       |NN const char *const pat|...
 ApR    |SV*    |vnewSVpvf      |NN const char *const pat|NULLOK va_list *const args
 Apd    |SV*    |newSVrv        |NN SV *const rv|NULLOK const char *const classname
-ApmbdR |SV*    |newSVsv        |NULLOK SV *const old
-ApmdR  |SV*    |newSVsv_nomg   |NULLOK SV *const old
+ApMbdR |SV*    |newSVsv        |NULLOK SV *const old
+AmdR   |SV*    |newSVsv_nomg   |NULLOK SV *const old
 ApR    |SV*    |newSVsv_flags  |NULLOK SV *const old|I32 flags
 ApdR   |SV*    |newSV_type     |const svtype type
 ApdR   |OP*    |newUNOP        |I32 type|I32 flags|NULLOK OP* first
@@ -1282,7 +1351,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
-Axp    |PADOFFSET|alloccopstash|NN HV *hv
+Adxp   |PADOFFSET|alloccopstash|NN HV *hv
 #endif
 : Used in perly.y
 pR     |OP*    |oopsAV         |NN OP* o
@@ -1323,7 +1392,7 @@ ATdo      |const char*|Perl_langinfo|const nl_item item
 ATdo   |const char*|Perl_langinfo|const int item
 #endif
 ApOx   |int    |init_i18nl10n  |int printwarn
-AbpOx  |int    |init_i18nl14n  |int printwarn
+AbpOxD |int    |init_i18nl14n  |int printwarn
 p      |char*  |my_strerror    |const int errnum
 XpT    |void   |_warn_problematic_locale
 Xp     |void   |set_numeric_underlying
@@ -1334,7 +1403,7 @@ 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 \
+AbpdM  |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)
@@ -1348,7 +1417,7 @@ 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
+ApMb   |OP*    |ref            |NULLOK OP* o|I32 type
 #if defined(PERL_IN_OP_C)
 S      |OP*    |refkids        |NULLOK OP* o|I32 type
 #endif
@@ -1414,7 +1483,7 @@ EXp       |SV*|reg_qr_package|NN REGEXP * const rx
 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
+Apd    |Sighandler_t|rsignal   |int i|Sighandler_t t
 : Used in pp_sys.c
 p      |int    |rsignal_restore|int i|NULLOK Sigsave_t* t
 : Used in pp_sys.c
@@ -1454,10 +1523,10 @@ Ap      |void   |save_hdelete   |NN HV *hv|NN SV *keysv
 Ap     |void   |save_adelete   |NN AV *av|SSize_t key
 Ap     |void   |save_destructor|DESTRUCTORFUNC_NOCONTEXT_t f|NN void* p
 Ap     |void   |save_destructor_x|DESTRUCTORFUNC_t f|NULLOK void* p
-Apmb   |void   |save_freesv    |NULLOK SV* sv
+ApMb   |void   |save_freesv    |NULLOK SV* sv
 : Used in SAVEFREOP(), used in op.c, pp_ctl.c
-Apmb   |void   |save_freeop    |NULLOK OP* o
-Apmb   |void   |save_freepv    |NULLOK char* pv
+ApMb   |void   |save_freeop    |NULLOK OP* o
+ApMb   |void   |save_freepv    |NULLOK char* pv
 Ap     |void   |save_generic_svref|NN SV** sptr
 Ap     |void   |save_generic_pvref|NN char** str
 Ap     |void   |save_shared_pvref|NN char** str
@@ -1471,14 +1540,14 @@ Ap      |void   |save_I16       |NN I16* intp
 Ap     |void   |save_I32       |NN I32* intp
 Ap     |void   |save_I8        |NN I8* bytep
 Ap     |void   |save_int       |NN int* intp
-Ap     |void   |save_item      |NN SV* item
+Apdh   |void   |save_item      |NN SV* item
 Ap     |void   |save_iv        |NN IV *ivp
-Abp    |void   |save_list      |NN SV** sarg|I32 maxsarg
-Abp    |void   |save_long      |NN long* longp
-Apmb   |void   |save_mortalizesv|NN SV* sv
-Abp    |void   |save_nogv      |NN GV* gv
+AbpD   |void   |save_list      |NN SV** sarg|I32 maxsarg
+AbpD   |void   |save_long      |NN long* longp
+ApMb   |void   |save_mortalizesv|NN SV* sv
+AbpD   |void   |save_nogv      |NN GV* gv
 : Used in SAVEFREOP(), used in gv.c, op.c, perl.c, pp_ctl.c, pp_sort.c
-Apmb   |void   |save_op
+ApMb   |void   |save_op
 Ap     |SV*    |save_scalar    |NN GV* gv
 Ap     |void   |save_pptr      |NN char** pptr
 Ap     |void   |save_vptr      |NN void *ptr
@@ -1530,7 +1599,7 @@ Ap        |I32    |start_subparse |I32 is_format|U32 flags
 Xp     |void   |init_named_cv  |NN CV *cv|NN OP *nameop
 : Used in pp_ctl.c
 p      |void   |sub_crush_depth|NN CV* cv
-Apbmd  |bool   |sv_2bool       |NN SV *const sv
+ApbMd  |bool   |sv_2bool       |NN SV *const sv
 Apd    |bool   |sv_2bool_flags |NN SV *sv|I32 flags
 Apd    |CV*    |sv_2cv         |NULLOK SV* sv|NN HV **const st|NN GV **const gvp \
                                |const I32 lref
@@ -1538,25 +1607,27 @@ Apd     |IO*    |sv_2io         |NN SV *const sv
 #if defined(PERL_IN_SV_C)
 S      |bool   |glob_2number   |NN GV* const gv
 #endif
-Apmb   |IV     |sv_2iv         |NN SV *sv
+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
 pxd    |SV*    |sv_2num        |NN SV *const sv
-Apmb   |char*  |sv_2pv         |NN SV *sv|NULLOK STRLEN *lp
+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
-Apd    |char*  |sv_2pvbyte     |NN SV *sv|NULLOK STRLEN *const lp
-Abp    |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
-Apmb   |UV     |sv_2uv         |NN SV *sv
+ApdMb  |char*  |sv_2pvutf8     |NN SV *sv|NULLOK STRLEN *const lp
+Ap     |char*  |sv_2pvutf8_flags       |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags
+ApdMb  |char*  |sv_2pvbyte     |NN SV *sv|NULLOK STRLEN *const lp
+Ap     |char*  |sv_2pvbyte_flags       |NN SV *sv|NULLOK STRLEN *const lp|const U32 flags
+AbpD   |char*  |sv_pvn_nomg    |NN SV* sv|NULLOK STRLEN* lp
+ApMb   |UV     |sv_2uv         |NN SV *sv
 Apd    |UV     |sv_2uv_flags   |NN SV *const sv|const I32 flags
-Abpd   |IV     |sv_iv          |NN SV* sv
-Abpd   |UV     |sv_uv          |NN SV* sv
-Abpd   |NV     |sv_nv          |NN SV* sv
-Abpd   |char*  |sv_pvn         |NN SV *sv|NN STRLEN *lp
-Abpd   |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
-Abpd   |char*  |sv_pvbyten     |NN SV *sv|NN STRLEN *lp
+AbpdD  |IV     |sv_iv          |NN SV* sv
+AbpdD  |UV     |sv_uv          |NN SV* sv
+AbpdD  |NV     |sv_nv          |NN SV* sv
+AbpdD  |char*  |sv_pvn         |NN SV *sv|NN STRLEN *lp
+AbpdD  |char*  |sv_pvutf8n     |NN SV *sv|NN STRLEN *lp
+AbpdD  |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 \
@@ -1574,8 +1645,8 @@ Afpd      |void   |sv_catpvf      |NN SV *const sv|NN const char *const pat|...
 Apd    |void   |sv_vcatpvf     |NN SV *const sv|NN const char *const pat \
                                |NULLOK va_list *const args
 Apd    |void   |sv_catpv       |NN SV *const sv|NULLOK const char* ptr
-Apmdb  |void   |sv_catpvn      |NN SV *dsv|NN const char *sstr|STRLEN len
-Apmdb  |void   |sv_catsv       |NN SV *dstr|NULLOK SV *sstr
+ApMdb  |void   |sv_catpvn      |NN SV *dsv|NN const char *sstr|STRLEN len
+ApMdb  |void   |sv_catsv       |NN SV *dstr|NULLOK SV *sstr
 Apd    |void   |sv_chop        |NN SV *const sv|NULLOK const char *const ptr
 : Used only in perl.c
 pd     |I32    |sv_clean_all
@@ -1592,13 +1663,13 @@ 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)
-Apbmd  |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
+ApbMd  |char*  |sv_collxfrm    |NN SV *const sv|NN STRLEN *const nxp
 Apd    |char*  |sv_collxfrm_flags      |NN SV *const sv|NN STRLEN *const nxp|I32 const flags
 #endif
 Apd    |int    |getcwd_sv      |NN SV* sv
 Apd    |void   |sv_dec         |NULLOK SV *const sv
 Apd    |void   |sv_dec_nomg    |NULLOK SV *const sv
-Ap     |void   |sv_dump        |NULLOK SV* sv
+Apd    |void   |sv_dump        |NULLOK SV* sv
 ApdR   |bool   |sv_derived_from|NN SV* sv|NN const char *const name
 ApdR   |bool   |sv_derived_from_sv|NN SV* sv|NN SV *namesv|U32 flags
 ApdR   |bool   |sv_derived_from_pv|NN SV* sv|NN const char *const name|U32 flags
@@ -1609,7 +1680,7 @@ ApdR      |bool   |sv_does_sv     |NN SV* sv|NN SV* namesv|U32 flags
 ApdR   |bool   |sv_does_pv     |NN SV* sv|NN const char *const name|U32 flags
 ApdR   |bool   |sv_does_pvn    |NN SV* sv|NN const char *const name|const STRLEN len \
                                 |U32 flags
-Apbmd  |I32    |sv_eq          |NULLOK SV* sv1|NULLOK SV* sv2
+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
 poxX   |void   |sv_free2       |NN SV *const sv|const U32 refcnt
@@ -1619,7 +1690,7 @@ Apd       |char*  |sv_gets        |NN SV *const sv|NN PerlIO *const fp|I32 append
 Apd    |char*  |sv_grow        |NN SV *const sv|STRLEN newlen
 Apd    |void   |sv_inc         |NULLOK SV *const sv
 Apd    |void   |sv_inc_nomg    |NULLOK SV *const sv
-Apmdb  |void   |sv_insert      |NN SV *const bigstr|const STRLEN offset \
+ApMdb  |void   |sv_insert      |NN SV *const bigstr|const STRLEN offset \
                                |const STRLEN len|NN const char *const little \
                                |const STRLEN littlelen
 Apd    |void   |sv_insert_flags|NN SV *const bigstr|const STRLEN offset|const STRLEN len \
@@ -1637,7 +1708,7 @@ Apd       |MAGIC *|sv_magicext    |NN SV *const sv|NULLOK SV *const obj|const int how \
 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
+ApdbMR |SV*    |sv_mortalcopy  |NULLOK SV *const oldsv
 ApdR   |SV*    |sv_mortalcopy_flags|NULLOK SV *const oldsv|U32 flags
 ApdR   |SV*    |sv_newmortal
 Apd    |SV*    |sv_newref      |NULLOK SV *const sv
@@ -1648,7 +1719,7 @@ Apd       |STRLEN |sv_pos_u2b_flags|NN SV *const sv|STRLEN uoffset \
 Apd    |void   |sv_pos_b2u     |NULLOK SV *const sv|NN I32 *const offsetp
 Apd    |STRLEN |sv_pos_b2u_flags|NN SV *const sv|STRLEN const offset \
                                 |U32 flags
-Apmdb  |char*  |sv_pvn_force   |NN SV* sv|NULLOK STRLEN* lp
+ApMdb  |char*  |sv_pvn_force   |NN SV* sv|NULLOK STRLEN* lp
 Apd    |char*  |sv_pvutf8n_force|NN SV *const sv|NULLOK STRLEN *const lp
 Apd    |char*  |sv_pvbyten_force|NN SV *const sv|NULLOK STRLEN *const lp
 Apd    |char*  |sv_recode_to_utf8      |NN SV* sv|NN SV *encoding
@@ -1664,7 +1735,7 @@ p |void   |sv_resetpvn    |NULLOK const char* s|STRLEN len \
 Afpd   |void   |sv_setpvf      |NN SV *const sv|NN const char *const pat|...
 Apd    |void   |sv_vsetpvf     |NN SV *const sv|NN const char *const pat|NULLOK va_list *const args
 Apd    |void   |sv_setiv       |NN SV *const sv|const IV num
-Apdb   |void   |sv_setpviv     |NN SV *const sv|const IV num
+ApdbD  |void   |sv_setpviv     |NN SV *const sv|const IV num
 Apd    |void   |sv_setuv       |NN SV *const sv|const UV num
 Apd    |void   |sv_setnv       |NN SV *const sv|const NV num
 Apd    |SV*    |sv_setref_iv   |NN SV *const rv|NULLOK const char *const classname|const IV iv
@@ -1678,16 +1749,16 @@ Apd     |void   |sv_setpv       |NN SV *const sv|NULLOK const char *const ptr
 Apd    |void   |sv_setpvn      |NN SV *const sv|NULLOK const char *const ptr|const STRLEN len
 Apd    |char  *|sv_setpv_bufsize|NN SV *const sv|const STRLEN cur|const STRLEN len
 Xp     |void   |sv_sethek      |NN SV *const sv|NULLOK const HEK *const hek
-Apmdb  |void   |sv_setsv       |NN SV *dstr|NULLOK SV *sstr
-Apmdb  |void   |sv_taint       |NN SV* sv
+ApMdb  |void   |sv_setsv       |NN SV *dstr|NULLOK SV *sstr
+ApMdb  |void   |sv_taint       |NN SV* sv
 ApdR   |bool   |sv_tainted     |NN SV *const sv
 Apd    |int    |sv_unmagic     |NN SV *const sv|const int type
 Apd    |int    |sv_unmagicext  |NN SV *const sv|const int type|NULLOK MGVTBL *vtbl
-Apdmb  |void   |sv_unref       |NN SV* sv
+ApdMb  |void   |sv_unref       |NN SV* sv
 Apd    |void   |sv_unref_flags |NN SV *const ref|const U32 flags
 Apd    |void   |sv_untaint     |NN SV *const sv
 Apd    |void   |sv_upgrade     |NN SV *const sv|svtype new_type
-Apdmb  |void   |sv_usepvn      |NN SV* sv|NULLOK char* ptr|STRLEN len
+ApdMb  |void   |sv_usepvn      |NN SV* sv|NULLOK char* ptr|STRLEN len
 Apd    |void   |sv_usepvn_flags|NN SV *const sv|NULLOK char* ptr|const STRLEN len\
                                |const U32 flags
 Apd    |void   |sv_vcatpvfn    |NN SV *const sv|NN const char *const pat|const STRLEN patlen \
@@ -1814,19 +1885,19 @@ S       |UV     |turkic_fc      |NN const U8 * const p |NN const U8 * const e|NN U8* ustrp|NN S
 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
+ApbMdD |UV     |to_utf8_lower  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 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
+ApbMdD |UV     |to_utf8_upper  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 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
+ApbMdD |UV     |to_utf8_title  |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 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
+ApbMdD |UV     |to_utf8_fold   |NN const U8 *p|NN U8* ustrp|NULLOK STRLEN *lenp
 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
@@ -1839,7 +1910,7 @@ pT        |bool   |translate_substr_offsets|STRLEN curlen|IV pos1_iv \
 #if defined(UNLINK_ALL_VERSIONS)
 Ap     |I32    |unlnk          |NN const char* f
 #endif
-Abpd   |SSize_t|unpack_str     |NN const char *pat|NN const char *patend|NN const char *s \
+AbpdD  |SSize_t|unpack_str     |NN const char *pat|NN const char *patend|NN const char *s \
                                |NULLOK const char *strbeg|NN const char *strend|NULLOK char **new_s \
                                |I32 ocnt|U32 flags
 Apd    |SSize_t|unpackstring   |NN const char *pat|NN const char *patend|NN const char *s \
@@ -1873,6 +1944,7 @@ ApdD      |UV     |utf8_to_uvchr  |NN const U8 *s|NULLOK STRLEN *retlen
 AbpdD  |UV     |utf8_to_uvuni  |NN const U8 *s|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
+Ai     |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
 px     |bool   |check_utf8_print       |NN const U8 *s|const STRLEN len
 
@@ -1898,8 +1970,8 @@ AxTp      |UV     |_utf8n_to_uvchr_msgs_helper                                \
                                |const U32 flags                            \
                                |NULLOK U32 * errors                        \
                                |NULLOK AV ** msgs
-AipTR  |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
-A    |UV     |utf8n_to_uvuni|NN const U8 *s|STRLEN curlen|NULLOK STRLEN *retlen|U32 flags
+AipTRd |UV     |valid_utf8_to_uvchr    |NN const U8 *s|NULLOK STRLEN *retlen
+Adp    |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
@@ -1907,7 +1979,7 @@ Adm       |U8*    |uvchr_to_utf8_flags    |NN U8 *d|UV uv|UV flags
 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
-A    |U8*    |uvuni_to_utf8_flags    |NN U8 *d|UV uv|UV flags
+Adp    |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
 EXpR   |Size_t |_inverse_folds |const UV cp                                \
@@ -1957,7 +2029,7 @@ Ap        |I32    |whichsig_sv    |NN SV* sigsv
 Ap     |I32    |whichsig_pv    |NN const char* sig
 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
+AiRd   |bool   |is_safe_syscall|NN const char *pv|STRLEN len|NN const char *what|NN const char *op_name
 #ifdef PERL_CORE
 iTR    |bool   |should_warn_nl|NN const char *pv
 #endif
@@ -2003,19 +2075,19 @@ Afpd    |void   |sv_catpvf_mg   |NN SV *const sv|NN const char *const pat|...
 Apd    |void   |sv_vcatpvf_mg  |NN SV *const sv|NN const char *const pat \
                                |NULLOK va_list *const args
 Apd    |void   |sv_catpv_mg    |NN SV *const sv|NULLOK const char *const ptr
-Apdbm  |void   |sv_catpvn_mg   |NN SV *sv|NN const char *ptr|STRLEN len
-Apdbm  |void   |sv_catsv_mg    |NN SV *dsv|NULLOK SV *ssv
+ApdbM  |void   |sv_catpvn_mg   |NN SV *sv|NN const char *ptr|STRLEN len
+ApdbM  |void   |sv_catsv_mg    |NN SV *dsv|NULLOK SV *ssv
 Afpd   |void   |sv_setpvf_mg   |NN SV *const sv|NN const char *const pat|...
 Apd    |void   |sv_vsetpvf_mg  |NN SV *const sv|NN const char *const pat \
                                |NULLOK va_list *const args
 Apd    |void   |sv_setiv_mg    |NN SV *const sv|const IV i
-Apdb   |void   |sv_setpviv_mg  |NN SV *const sv|const IV iv
+ApdbD  |void   |sv_setpviv_mg  |NN SV *const sv|const IV iv
 Apd    |void   |sv_setuv_mg    |NN SV *const sv|const UV u
 Apd    |void   |sv_setnv_mg    |NN SV *const sv|const NV num
 Apd    |void   |sv_setpv_mg    |NN SV *const sv|NULLOK const char *const ptr
 Apd    |void   |sv_setpvn_mg   |NN SV *const sv|NN const char *const ptr|const STRLEN len
 Apd    |void   |sv_setsv_mg    |NN SV *const dstr|NULLOK SV *const sstr
-Apdbm  |void   |sv_usepvn_mg   |NN SV *sv|NULLOK char *ptr|STRLEN len
+ApdbM  |void   |sv_usepvn_mg   |NN SV *sv|NULLOK char *ptr|STRLEN len
 ApR    |MGVTBL*|get_vtbl       |int vtbl_id
 Apd    |char*  |pv_display     |NN SV *dsv|NN const char *pv|STRLEN cur|STRLEN len \
                                |STRLEN pvlim
@@ -2045,18 +2117,20 @@ Ap      |void   |do_sv_dump     |I32 level|NN PerlIO *file|NULLOK SV *sv|I32 nest \
                                |I32 maxnest|bool dumpops|STRLEN pvlim
 Ap     |void   |magic_dump     |NULLOK const MAGIC *mg
 Ap     |void   |reginitcolors
-ApdRmb |char*  |sv_2pv_nolen   |NN SV* sv
-ApdRmb |char*  |sv_2pvutf8_nolen|NN SV* sv
-ApdRmb |char*  |sv_2pvbyte_nolen|NN SV* sv
-ApmdbR |char*  |sv_pv          |NN SV *sv
-ApmdbR |char*  |sv_pvutf8      |NN SV *sv
-ApmdbR |char*  |sv_pvbyte      |NN SV *sv
-Apmdb  |STRLEN |sv_utf8_upgrade|NN SV *sv
+ApdRMb |char*  |sv_2pv_nolen   |NN SV* sv
+ApdRMb |char*  |sv_2pvutf8_nolen|NN SV* sv
+ApdRMb |char*  |sv_2pvbyte_nolen|NN SV* sv
+ApMdbR |char*  |sv_pv          |NN SV *sv
+ApMdbR |char*  |sv_pvutf8      |NN SV *sv
+ApMdbR |char*  |sv_pvbyte      |NN SV *sv
+ApMdb  |STRLEN |sv_utf8_upgrade|NN SV *sv
 Amd    |STRLEN |sv_utf8_upgrade_nomg|NN SV *sv
-Apd    |bool   |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok
+ApdMb  |bool   |sv_utf8_downgrade|NN SV *const sv|const bool fail_ok
+Amd    |bool   |sv_utf8_downgrade_nomg|NN SV *const sv|const bool fail_ok
+Apd    |bool   |sv_utf8_downgrade_flags|NN SV *const sv|const bool fail_ok|const U32 flags
 Apd    |void   |sv_utf8_encode |NN SV *const sv
 Apd    |bool   |sv_utf8_decode |NN SV *const sv
-Apdmb  |void   |sv_force_normal|NN SV *sv
+ApdMb  |void   |sv_force_normal|NN SV *sv
 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
@@ -2114,17 +2188,17 @@ Ap      |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #  endif
 #endif
 
-Amop   |const XOP *    |custom_op_xop  |NN const OP *o
-AbpR   |const char *   |custom_op_name |NN const OP *o
-AbpR   |const char *   |custom_op_desc |NN const OP *o
+Admop  |const XOP *    |custom_op_xop  |NN const OP *o
+AbpRdD |const char *   |custom_op_name |NN const OP *o
+AbpRdD |const char *   |custom_op_desc |NN const OP *o
 pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
-Aop    |void   |custom_op_register     |NN Perl_ppaddr_t ppaddr \
+Adop   |void   |custom_op_register     |NN Perl_ppaddr_t ppaddr \
                        |NN const XOP *xop
 
-Adp    |void   |sv_nosharing   |NULLOK SV *sv
-Adpbm  |void   |sv_nolocking   |NULLOK SV *sv
+AdpD   |void   |sv_nosharing   |NULLOK SV *sv
+AdpbD  |void   |sv_nolocking   |NULLOK SV *sv
 Adp    |bool   |sv_destroyable |NULLOK SV *sv
-Adpb   |void   |sv_nounlocking |NULLOK SV *sv
+AdpbD  |void   |sv_nounlocking |NULLOK SV *sv
 Adp    |int    |nothreadhook
 p      |void   |init_constants
 
@@ -2302,7 +2376,7 @@ STR       |char * |my_bytes_to_utf8|NN const U8 *start|STRLEN len|NN char *dest \
 #endif
 
 #if defined(PERL_IN_PP_CTL_C)
-S    |OP*    |docatch        |Perl_ppaddr_t firstpp
+SdR    |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
@@ -2433,7 +2507,7 @@ 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              \
+ESR    |bool   |regtail        |NN RExC_state_t * pRExC_state              \
                                |NN const regnode_offset p                  \
                                |NN const regnode_offset val                \
                                |const U32 depth
@@ -2567,7 +2641,7 @@ ES        |void   |dump_trie_interim_list|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 \
+ESR    |bool   |regtail_study  |NN RExC_state_t *pRExC_state \
                                |NN regnode_offset p|NN const regnode_offset val|U32 depth
 #  endif
 #endif
@@ -2822,7 +2896,7 @@ S |int    |tokereport     |I32 rv|NN const YYSTYPE* lvalp
 Sf     |void   |printbuf       |NN const char *const fmt|NN const char *const s
 #  endif
 #endif
-EXxp   |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \
+EdXxp  |bool   |validate_proto |NN SV *name|NULLOK SV *proto|bool warn \
                |bool curstash
 
 #if defined(PERL_IN_UNIVERSAL_C)
@@ -2933,10 +3007,10 @@ Apd     |void   |sv_catpvn_flags|NN SV *const dstr|NN const char *sstr|const STRLEN le
 Apd    |void   |sv_catpv_flags |NN SV *dstr|NN const char *sstr \
                                |const I32 flags
 Apd    |void   |sv_catsv_flags |NN SV *const dsv|NULLOK SV *const ssv|const I32 flags
-Apmd   |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags
-A    |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
+Amd    |STRLEN |sv_utf8_upgrade_flags|NN SV *const sv|const I32 flags
+Adp    |STRLEN |sv_utf8_upgrade_flags_grow|NN SV *const sv|const I32 flags|STRLEN extra
 Apd    |char*  |sv_pvn_force_flags|NN SV *const sv|NULLOK STRLEN *const lp|const I32 flags
-Apmb   |void   |sv_copypv      |NN SV *const dsv|NN SV *const ssv
+AdpMb  |void   |sv_copypv      |NN SV *const dsv|NN SV *const ssv
 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
@@ -2951,36 +3025,36 @@ pxXE    |SV*    |sv_setsv_cow   |NULLOK SV* dstr|NN SV* sstr
 Aop    |const char *|PerlIO_context_layers|NULLOK const char *mode
 
 #if defined(USE_PERLIO)
-Ap     |int    |PerlIO_close           |NULLOK PerlIO *f
+Apdh   |int    |PerlIO_close           |NULLOK PerlIO *f
 Ap     |int    |PerlIO_fill            |NULLOK PerlIO *f
-Ap     |int    |PerlIO_fileno          |NULLOK PerlIO *f
-Ap     |int    |PerlIO_eof             |NULLOK PerlIO *f
-Ap     |int    |PerlIO_error           |NULLOK PerlIO *f
-Ap     |int    |PerlIO_flush           |NULLOK PerlIO *f
-Ap     |void   |PerlIO_clearerr        |NULLOK PerlIO *f
-Ap     |void   |PerlIO_set_cnt         |NULLOK PerlIO *f|SSize_t cnt
-Ap     |void   |PerlIO_set_ptrcnt      |NULLOK PerlIO *f|NULLOK STDCHAR *ptr \
+Apdh   |int    |PerlIO_fileno          |NULLOK PerlIO *f
+Apdh   |int    |PerlIO_eof             |NULLOK PerlIO *f
+Apdh   |int    |PerlIO_error           |NULLOK PerlIO *f
+Apdh   |int    |PerlIO_flush           |NULLOK PerlIO *f
+Apdh   |void   |PerlIO_clearerr        |NULLOK PerlIO *f
+Apdh   |void   |PerlIO_set_cnt         |NULLOK PerlIO *f|SSize_t cnt
+Apdh   |void   |PerlIO_set_ptrcnt      |NULLOK PerlIO *f|NULLOK STDCHAR *ptr \
                                        |SSize_t cnt
-Ap     |void   |PerlIO_setlinebuf      |NULLOK PerlIO *f
-Ap     |SSize_t|PerlIO_read            |NULLOK PerlIO *f|NN void *vbuf \
+Apdh   |void   |PerlIO_setlinebuf      |NULLOK PerlIO *f
+Apdh   |SSize_t|PerlIO_read            |NULLOK PerlIO *f|NN void *vbuf \
                                        |Size_t count
-Ap     |SSize_t|PerlIO_write           |NULLOK PerlIO *f|NN const void *vbuf \
+Apdh   |SSize_t|PerlIO_write           |NULLOK PerlIO *f|NN const void *vbuf \
                                        |Size_t count
 Ap     |SSize_t|PerlIO_unread          |NULLOK PerlIO *f|NN const void *vbuf \
                                        |Size_t count
-Ap     |Off_t  |PerlIO_tell            |NULLOK PerlIO *f
-Ap     |int    |PerlIO_seek            |NULLOK PerlIO *f|Off_t offset|int whence
+Apdh   |Off_t  |PerlIO_tell            |NULLOK PerlIO *f
+Apdh   |int    |PerlIO_seek            |NULLOK PerlIO *f|Off_t offset|int whence
 Xp     |void   |PerlIO_save_errno      |NULLOK PerlIO *f
 Xp     |void   |PerlIO_restore_errno   |NULLOK PerlIO *f
 
-Ap     |STDCHAR *|PerlIO_get_base      |NULLOK PerlIO *f
-Ap     |STDCHAR *|PerlIO_get_ptr       |NULLOK PerlIO *f
-ApR    |SSize_t          |PerlIO_get_bufsiz    |NULLOK PerlIO *f
-ApR    |SSize_t          |PerlIO_get_cnt       |NULLOK PerlIO *f
+Apdh   |STDCHAR *|PerlIO_get_base      |NULLOK PerlIO *f
+Apdh   |STDCHAR *|PerlIO_get_ptr       |NULLOK PerlIO *f
+ApRdh  |SSize_t          |PerlIO_get_bufsiz    |NULLOK PerlIO *f
+ApRdh  |SSize_t          |PerlIO_get_cnt       |NULLOK PerlIO *f
 
-ApR    |PerlIO *|PerlIO_stdin
-ApR    |PerlIO *|PerlIO_stdout
-ApR    |PerlIO *|PerlIO_stderr
+ApRdh  |PerlIO *|PerlIO_stdin
+ApRdh  |PerlIO *|PerlIO_stdout
+ApRdh  |PerlIO *|PerlIO_stderr
 #endif /* USE_PERLIO */
 
 : Only used in dump.c
@@ -2996,7 +3070,7 @@ ApdR      |PADLIST*|pad_new       |int flags
 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 \
+Sd     |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\
@@ -3049,7 +3123,7 @@ Apd       |CV*    |cv_clone       |NN CV* proto
 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
+ApbdRM |HV*    |pad_compname_type|const PADOFFSET po
 AxpdRT |PADNAME *|padnamelist_fetch|NN PADNAMELIST *pnl|SSize_t key
 Xop    |void   |padnamelist_free|NN PADNAMELIST *pnl
 Axpd   |PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \
@@ -3057,7 +3131,7 @@ Axpd      |PADNAME **|padnamelist_store|NN PADNAMELIST *pnl|SSize_t key \
 Xop    |void   |padname_free   |NN PADNAME *pn
 #if defined(USE_ITHREADS)
 pdR    |PADNAME *|padname_dup  |NN PADNAME *src|NN CLONE_PARAMS *param
-p    |PADNAMELIST *|padnamelist_dup|NN PADNAMELIST *srcpad \
+pdR    |PADNAMELIST *|padnamelist_dup|NN PADNAMELIST *srcpad \
                                      |NN CLONE_PARAMS *param
 pdR    |PADLIST *|padlist_dup  |NN PADLIST *srcpad \
                                |NN CLONE_PARAMS *param
@@ -3088,9 +3162,9 @@ Apo       |void   |hv_riter_set   |NN HV *hv|I32 riter
 Apo    |void   |hv_eiter_set   |NN HV *hv|NULLOK HE *eiter
 Ap     |void   |hv_rand_set    |NN HV *hv|U32 new_xhv_rand
 Ap     |void   |hv_name_set    |NN HV *hv|NULLOK const char *name|U32 len|U32 flags
-p      |void   |hv_ename_add   |NN HV *hv|NN const char *name|U32 len \
+pd     |void   |hv_ename_add   |NN HV *hv|NN const char *name|U32 len \
                                |U32 flags
-p      |void   |hv_ename_delete|NN HV *hv|NN const char *name|U32 len \
+pd     |void   |hv_ename_delete|NN HV *hv|NN const char *name|U32 len \
                                |U32 flags
 : Used in dump.c and hv.c
 pox    |AV**   |hv_backreferences_p    |NN HV *hv
@@ -3124,7 +3198,7 @@ p |void   |dump_sv_child  |NN SV *sv
 #endif
 
 #ifdef PERL_DONT_CREATE_GVSV
-Apbm   |GV*    |gv_SVadd       |NULLOK GV *gv
+ApbM   |GV*    |gv_SVadd       |NULLOK GV *gv
 #endif
 #if defined(PERL_IN_UTIL_C)
 S      |bool   |ckwarn_common  |U32 w
@@ -3191,13 +3265,13 @@ XExop   |void   |emulate_cop_io |NN const COP *const c|NN SV *const sv
 : Used by SvRX and SvRXOK
 XExop  |REGEXP *|get_re_arg|NULLOK SV *sv
 
-Aop    |SV*    |mro_get_private_data|NN struct mro_meta *const smeta \
+Aopdh  |SV*    |mro_get_private_data|NN struct mro_meta *const smeta \
                                     |NN const struct mro_alg *const which
-Aop    |SV*    |mro_set_private_data|NN struct mro_meta *const smeta \
+Aopdh  |SV*    |mro_set_private_data|NN struct mro_meta *const smeta \
                                     |NN const struct mro_alg *const which \
                                     |NN SV *const data
 Aop    |const struct mro_alg *|mro_get_from_name|NN SV *name
-Aop    |void   |mro_register   |NN const struct mro_alg *mro
+Aopd   |void   |mro_register   |NN const struct mro_alg *mro
 Aop    |void   |mro_set_mro    |NN struct mro_meta *const meta \
                                |NN SV *const name
 : Used in HvMROMETA(), which is public.
@@ -3229,10 +3303,10 @@ p       |void   |boot_core_mro
 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 \
+AMpxd  |const char *|cop_fetch_label|NN COP *const cop \
                |NULLOK STRLEN *len|NULLOK U32 *flags
 : Only used  in op.c and the perl compiler
-AMpx   |void|cop_store_label \
+AMpxd  |void|cop_store_label \
                |NN COP *const cop|NN const char *label|STRLEN len|U32 flags
 
 epo    |int    |keyword_plugin_standard|NN char* keyword_ptr|STRLEN keyword_len|NN OP** op_ptr