This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
S_pad_findlex has side effects, so its return value may be ignored
[perl5.git] / proto.h
diff --git a/proto.h b/proto.h
index 42cf557..0dc9b03 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -64,8 +64,12 @@ PERL_CALLCONV MEM_SIZE       Perl_malloced_size(void *p)
 
 #endif
 
-PERL_CALLCONV void*    Perl_get_context(void);
-PERL_CALLCONV void     Perl_set_context(void *thx);
+PERL_CALLCONV void*    Perl_get_context(void)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV void     Perl_set_context(void *thx)
+                       __attribute__nonnull__(1);
+
 
 END_EXTERN_C
 
@@ -73,12 +77,23 @@ END_EXTERN_C
 START_EXTERN_C
 #  include "pp_proto.h"
 PERL_CALLCONV SV*      Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir);
-PERL_CALLCONV bool     Perl_Gv_AMupdate(pTHX_ HV* stash);
-PERL_CALLCONV CV*      Perl_gv_handler(pTHX_ HV* stash, I32 id);
-PERL_CALLCONV OP*      Perl_append_elem(pTHX_ I32 optype, OP* head, OP* tail);
+PERL_CALLCONV bool     Perl_Gv_AMupdate(pTHX_ HV* stash)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV CV*      Perl_gv_handler(pTHX_ HV* stash, I32 id)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV OP*      Perl_append_elem(pTHX_ I32 optype, OP* first, OP* last);
 PERL_CALLCONV OP*      Perl_append_list(pTHX_ I32 optype, LISTOP* first, LISTOP* last);
-PERL_CALLCONV I32      Perl_apply(pTHX_ I32 type, SV** mark, SV** sp);
-PERL_CALLCONV void     Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len);
+PERL_CALLCONV I32      Perl_apply(pTHX_ I32 type, SV** mark, SV** sp)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
+PERL_CALLCONV void     Perl_apply_attrs_string(pTHX_ const char *stashpv, CV *cv, const char *attrstr, STRLEN len)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
 PERL_CALLCONV void     Perl_av_clear(pTHX_ AV* ar);
 PERL_CALLCONV SV*      Perl_av_delete(pTHX_ AV* ar, I32 key, I32 flags);
 PERL_CALLCONV bool     Perl_av_exists(pTHX_ AV* ar, I32 key)
@@ -94,31 +109,41 @@ PERL_CALLCONV AV*  Perl_av_fake(pTHX_ I32 size, SV** svp)
 PERL_CALLCONV SV**     Perl_av_fetch(pTHX_ AV* ar, I32 key, I32 lval)
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV void     Perl_av_fill(pTHX_ AV* ar, I32 fill);
+PERL_CALLCONV void     Perl_av_fill(pTHX_ AV* ar, I32 fill)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV I32      Perl_av_len(pTHX_ const AV* ar)
-                       __attribute__warn_unused_result__;
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV AV*      Perl_av_make(pTHX_ I32 size, SV** svp)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2);
 
 PERL_CALLCONV SV*      Perl_av_pop(pTHX_ AV* ar);
-PERL_CALLCONV void     Perl_av_push(pTHX_ AV* ar, SV* val);
-PERL_CALLCONV void     Perl_av_reify(pTHX_ AV* ar);
+PERL_CALLCONV void     Perl_av_push(pTHX_ AV* ar, SV* val)
+                       __attribute__nonnull__(pTHX_2);
+
+PERL_CALLCONV void     Perl_av_reify(pTHX_ AV* ar)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV SV*      Perl_av_shift(pTHX_ AV* ar)
                        __attribute__warn_unused_result__;
 
 PERL_CALLCONV SV**     Perl_av_store(pTHX_ AV* ar, I32 key, SV* val);
 PERL_CALLCONV void     Perl_av_undef(pTHX_ AV* ar);
 PERL_CALLCONV void     Perl_av_unshift(pTHX_ AV* ar, I32 num);
-PERL_CALLCONV SV**     Perl_av_arylen_p(pTHX_ AV* av);
+PERL_CALLCONV SV**     Perl_av_arylen_p(pTHX_ AV* av)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV OP*      Perl_bind_match(pTHX_ I32 type, OP* left, OP* pat)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 
 PERL_CALLCONV OP*      Perl_block_end(pTHX_ I32 floor, OP* seq)
-                       __attribute__warn_unused_result__;
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_2);
 
 PERL_CALLCONV I32      Perl_block_gimme(pTHX)
                        __attribute__warn_unused_result__;
@@ -157,55 +182,75 @@ PERL_CALLCONV OP* Perl_convert(pTHX_ I32 optype, I32 flags, OP* o)
 
 PERL_CALLCONV void     Perl_croak(pTHX_ const char* pat, ...)
                        __attribute__noreturn__
-                       __attribute__format__(__printf__,pTHX_1,pTHX_2);
+                       __attribute__format__(__printf__,pTHX_1,pTHX_2)
+                       __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV void     Perl_vcroak(pTHX_ const char* pat, va_list* args)
-                       __attribute__noreturn__;
+                       __attribute__noreturn__
+                       __attribute__nonnull__(pTHX_1);
 
 #if defined(PERL_IMPLICIT_CONTEXT)
 PERL_CALLCONV void     Perl_croak_nocontext(const char* pat, ...)
                        __attribute__noreturn__
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV OP*      Perl_die_nocontext(const char* pat, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_deb_nocontext(const char* pat, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV char*    Perl_form_nocontext(const char* pat, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
+
+PERL_CALLCONV void     Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...)
+                       __attribute__nonnull__(2)
+                       __attribute__nonnull__(3);
 
-PERL_CALLCONV void     Perl_load_module_nocontext(U32 flags, SV* name, SV* ver, ...);
 PERL_CALLCONV SV*      Perl_mess_nocontext(const char* pat, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_warn_nocontext(const char* pat, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_warner_nocontext(U32 err, const char* pat, ...)
-                       __attribute__format__(__printf__,2,3);
+                       __attribute__format__(__printf__,2,3)
+                       __attribute__nonnull__(2);
 
 PERL_CALLCONV SV*      Perl_newSVpvf_nocontext(const char* pat, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_sv_catpvf_nocontext(SV* sv, const char* pat, ...)
-                       __attribute__format__(__printf__,2,3);
+                       __attribute__format__(__printf__,2,3)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_sv_setpvf_nocontext(SV* sv, const char* pat, ...)
-                       __attribute__format__(__printf__,2,3);
+                       __attribute__format__(__printf__,2,3)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_sv_catpvf_mg_nocontext(SV* sv, const char* pat, ...)
-                       __attribute__format__(__printf__,2,3);
+                       __attribute__format__(__printf__,2,3)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV void     Perl_sv_setpvf_mg_nocontext(SV* sv, const char* pat, ...)
-                       __attribute__format__(__printf__,2,3);
+                       __attribute__format__(__printf__,2,3)
+                       __attribute__nonnull__(1);
 
 PERL_CALLCONV int      Perl_fprintf_nocontext(PerlIO* stream, const char* fmt, ...)
-                       __attribute__format__(__printf__,2,3);
+                       __attribute__format__(__printf__,2,3)
+                       __attribute__nonnull__(1)
+                       __attribute__nonnull__(2);
 
 PERL_CALLCONV int      Perl_printf_nocontext(const char* fmt, ...)
-                       __attribute__format__(__printf__,1,2);
+                       __attribute__format__(__printf__,1,2)
+                       __attribute__nonnull__(1);
 
 #endif
 PERL_CALLCONV void     Perl_cv_ckproto(pTHX_ const CV* cv, const GV* gv, const char* p)
@@ -214,13 +259,26 @@ PERL_CALLCONV void        Perl_cv_ckproto(pTHX_ const CV* cv, const GV* gv, const char*
 PERL_CALLCONV CV*      Perl_cv_clone(pTHX_ CV* proto)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV SV*      Perl_cv_const_sv(pTHX_ CV* cv);
-PERL_CALLCONV SV*      Perl_op_const_sv(pTHX_ const OP* o, CV* cv);
-PERL_CALLCONV void     Perl_cv_undef(pTHX_ CV* cv);
-PERL_CALLCONV void     Perl_cx_dump(pTHX_ PERL_CONTEXT* cs);
+PERL_CALLCONV SV*      Perl_cv_const_sv(pTHX_ CV* cv)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV SV*      Perl_op_const_sv(pTHX_ const OP* o, CV* cv)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV void     Perl_cv_undef(pTHX_ CV* cv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_cx_dump(pTHX_ PERL_CONTEXT* cx)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV SV*      Perl_filter_add(pTHX_ filter_t funcp, SV* datasv);
-PERL_CALLCONV void     Perl_filter_del(pTHX_ filter_t funcp);
-PERL_CALLCONV I32      Perl_filter_read(pTHX_ int idx, SV* buffer, int maxlen);
+PERL_CALLCONV void     Perl_filter_del(pTHX_ filter_t funcp)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV I32      Perl_filter_read(pTHX_ int idx, SV* buffer, int maxlen)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_2);
+
 PERL_CALLCONV char**   Perl_get_op_descs(pTHX)
                        __attribute__warn_unused_result__
                        __attribute__pure__;
@@ -245,9 +303,12 @@ PERL_CALLCONV I32  Perl_cxinc(pTHX)
                        __attribute__warn_unused_result__;
 
 PERL_CALLCONV void     Perl_deb(pTHX_ const char* pat, ...)
-                       __attribute__format__(__printf__,pTHX_1,pTHX_2);
+                       __attribute__format__(__printf__,pTHX_1,pTHX_2)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_vdeb(pTHX_ const char* pat, va_list* args)
+                       __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV void     Perl_vdeb(pTHX_ const char* pat, va_list* args);
 PERL_CALLCONV void     Perl_debprofdump(pTHX);
 PERL_CALLCONV I32      Perl_debop(pTHX_ const OP* o)
                        __attribute__nonnull__(pTHX_1);
@@ -268,13 +329,22 @@ PERL_CALLCONV void        Perl_deprecate_old(pTHX_ const char* s)
                        __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV OP*      Perl_die(pTHX_ const char* pat, ...)
-                       __attribute__format__(__printf__,pTHX_1,pTHX_2);
+                       __attribute__format__(__printf__,pTHX_1,pTHX_2)
+                       __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV OP*      Perl_vdie(pTHX_ const char* pat, va_list* args);
-PERL_CALLCONV OP*      Perl_die_where(pTHX_ const char* message, STRLEN msglen);
+PERL_CALLCONV OP*      Perl_die_where(pTHX_ const char* message, STRLEN msglen)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV void     Perl_dounwind(pTHX_ I32 cxix);
-PERL_CALLCONV bool     Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp);
-PERL_CALLCONV bool     Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int flag);
+PERL_CALLCONV bool     Perl_do_aexec(pTHX_ SV* really, SV** mark, SV** sp)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
+PERL_CALLCONV bool     Perl_do_aexec5(pTHX_ SV* really, SV** mark, SV** sp, int fd, int flag)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
 PERL_CALLCONV int      Perl_do_binmode(pTHX_ PerlIO *fp, int iotype, int mode)
                        __attribute__nonnull__(pTHX_1);
 
@@ -292,12 +362,22 @@ PERL_CALLCONV bool        Perl_do_exec(pTHX_ char* cmd)
                        __attribute__nonnull__(pTHX_1);
 
 #if defined(WIN32) || defined(SYMBIAN)
-PERL_CALLCONV int      Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp);
-PERL_CALLCONV int      Perl_do_spawn(pTHX_ char* cmd);
-PERL_CALLCONV int      Perl_do_spawn_nowait(pTHX_ char* cmd);
+PERL_CALLCONV int      Perl_do_aspawn(pTHX_ SV* really, SV** mark, SV** sp)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
+PERL_CALLCONV int      Perl_do_spawn(pTHX_ char* cmd)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV int      Perl_do_spawn_nowait(pTHX_ char* cmd)
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 #if !defined(WIN32)
-PERL_CALLCONV bool     Perl_do_exec3(pTHX_ char* cmd, int fd, int flag);
+PERL_CALLCONV bool     Perl_do_exec3(pTHX_ char* cmd, int fd, int flag)
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 PERL_CALLCONV void     Perl_do_execfree(pTHX);
 #if defined(HAS_MSG) || defined(HAS_SEM) || defined(HAS_SHM)
@@ -315,42 +395,89 @@ PERL_CALLCONV void        Perl_do_join(pTHX_ SV* sv, SV* del, SV** mark, SV** sp)
                        __attribute__nonnull__(pTHX_4);
 
 PERL_CALLCONV OP*      Perl_do_kv(pTHX);
-PERL_CALLCONV bool     Perl_do_open(pTHX_ GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp);
-PERL_CALLCONV bool     Perl_do_open9(pTHX_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num);
-PERL_CALLCONV bool     Perl_do_openn(pTHX_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num);
-PERL_CALLCONV void     Perl_do_pipe(pTHX_ SV* sv, GV* rgv, GV* wgv);
-PERL_CALLCONV bool     Perl_do_print(pTHX_ SV* sv, PerlIO* fp);
-PERL_CALLCONV OP*      Perl_do_readline(pTHX);
-PERL_CALLCONV I32      Perl_do_chomp(pTHX_ SV* sv);
+PERL_CALLCONV bool     Perl_do_open(pTHX_ GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO* supplied_fp)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+PERL_CALLCONV bool     Perl_do_open9(pTHX_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV *svs, I32 num)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_8);
+
+PERL_CALLCONV bool     Perl_do_openn(pTHX_ GV *gv, char *name, I32 len, int as_raw, int rawmode, int rawperm, PerlIO *supplied_fp, SV **svp, I32 num)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+PERL_CALLCONV void     Perl_do_pipe(pTHX_ SV* sv, GV* rgv, GV* wgv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV bool     Perl_do_print(pTHX_ SV* sv, PerlIO* fp)
+                       __attribute__nonnull__(pTHX_2);
+
+PERL_CALLCONV OP*      Perl_do_readline(pTHX)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV I32      Perl_do_chomp(pTHX_ SV* sv)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV bool     Perl_do_seek(pTHX_ GV* gv, Off_t pos, int whence);
-PERL_CALLCONV void     Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg);
-PERL_CALLCONV Off_t    Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence);
-PERL_CALLCONV Off_t    Perl_do_tell(pTHX_ GV* gv);
-PERL_CALLCONV I32      Perl_do_trans(pTHX_ SV* sv);
+PERL_CALLCONV void     Perl_do_sprintf(pTHX_ SV* sv, I32 len, SV** sarg)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_3);
+
+PERL_CALLCONV Off_t    Perl_do_sysseek(pTHX_ GV* gv, Off_t pos, int whence)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV Off_t    Perl_do_tell(pTHX_ GV* gv)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV I32      Perl_do_trans(pTHX_ SV* sv)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV UV       Perl_do_vecget(pTHX_ SV* sv, I32 offset, I32 size)
                        __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV void     Perl_do_vecset(pTHX_ SV* sv)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV void     Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right);
-PERL_CALLCONV OP*      Perl_dofile(pTHX_ OP* term);
-PERL_CALLCONV I32      Perl_dowantarray(pTHX);
+PERL_CALLCONV void     Perl_do_vop(pTHX_ I32 optype, SV* sv, SV* left, SV* right)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3)
+                       __attribute__nonnull__(pTHX_4);
+
+PERL_CALLCONV OP*      Perl_dofile(pTHX_ OP* term)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV I32      Perl_dowantarray(pTHX)
+                       __attribute__warn_unused_result__;
+
 PERL_CALLCONV void     Perl_dump_all(pTHX);
 PERL_CALLCONV void     Perl_dump_eval(pTHX);
 #if defined(DUMP_FDS)
 PERL_CALLCONV void     Perl_dump_fds(pTHX_ char* s);
 #endif
 PERL_CALLCONV void     Perl_dump_form(pTHX_ const GV* gv);
-PERL_CALLCONV void     Perl_gv_dump(pTHX_ GV* gv);
-PERL_CALLCONV void     Perl_op_dump(pTHX_ const OP* arg);
+PERL_CALLCONV void     Perl_gv_dump(pTHX_ GV* gv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_op_dump(pTHX_ const OP* arg)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV void     Perl_pmop_dump(pTHX_ PMOP* pm);
 PERL_CALLCONV void     Perl_dump_packsubs(pTHX_ const HV* stash);
 PERL_CALLCONV void     Perl_dump_sub(pTHX_ const GV* gv)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV void     Perl_fbm_compile(pTHX_ SV* sv, U32 flags);
-PERL_CALLCONV char*    Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags);
+PERL_CALLCONV void     Perl_fbm_compile(pTHX_ SV* sv, U32 flags)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV char*    Perl_fbm_instr(pTHX_ unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
+
 PERL_CALLCONV char*    Perl_find_script(pTHX_ const char *scriptname, bool dosearch, const char **search_ext, I32 flags);
 PERL_CALLCONV OP*      Perl_force_list(pTHX_ OP* arg)
                        __attribute__nonnull__(pTHX_1);
@@ -831,7 +958,9 @@ PERL_CALLCONV void  Perl_sortsv(pTHX_ SV ** array, size_t num_elts, SVCOMPARE_t c
 PERL_CALLCONV int      Perl_mg_clear(pTHX_ SV* sv);
 PERL_CALLCONV int      Perl_mg_copy(pTHX_ SV* sv, SV* nsv, const char* key, I32 klen);
 PERL_CALLCONV void     Perl_mg_localize(pTHX_ SV* sv, SV* nsv);
-PERL_CALLCONV MAGIC*   Perl_mg_find(pTHX_ const SV* sv, int type);
+PERL_CALLCONV MAGIC*   Perl_mg_find(pTHX_ const SV* sv, int type)
+                       __attribute__warn_unused_result__;
+
 PERL_CALLCONV int      Perl_mg_free(pTHX_ SV* sv);
 PERL_CALLCONV int      Perl_mg_get(pTHX_ SV* sv);
 PERL_CALLCONV U32      Perl_mg_length(pTHX_ SV* sv);
@@ -1141,6 +1270,7 @@ PERL_CALLCONV PADOFFSET   Perl_allocmy(pTHX_ char* name)
                        __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV PADOFFSET        Perl_pad_findmy(pTHX_ const char* name)
+                       __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 
 PERL_CALLCONV PADOFFSET        Perl_find_rundefsvoffset(pTHX);
@@ -1190,8 +1320,12 @@ PERL_CALLCONV SV*        Perl_get_sv(pTHX_ const char* name, I32 create)
 PERL_CALLCONV AV*      Perl_get_av(pTHX_ const char* name, I32 create)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV HV*      Perl_get_hv(pTHX_ const char* name, I32 create);
-PERL_CALLCONV CV*      Perl_get_cv(pTHX_ const char* name, I32 create);
+PERL_CALLCONV HV*      Perl_get_hv(pTHX_ const char* name, I32 create)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV CV*      Perl_get_cv(pTHX_ const char* name, I32 create)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV int      Perl_init_i18nl10n(pTHX_ int printwarn);
 PERL_CALLCONV int      Perl_init_i18nl14n(pTHX_ int printwarn);
 PERL_CALLCONV void     Perl_new_collate(pTHX_ const char* newcoll);
@@ -1716,7 +1850,9 @@ PERL_CALLCONV void        Perl_vivify_ref(pTHX_ SV* sv, U32 to_what);
 PERL_CALLCONV I32      Perl_wait4pid(pTHX_ Pid_t pid, int* statusp, int flags);
 PERL_CALLCONV U32      Perl_parse_unicode_opts(pTHX_ const char **popt);
 PERL_CALLCONV U32      Perl_seed(pTHX);
-PERL_CALLCONV UV       Perl_get_hash_seed(pTHX);
+PERL_CALLCONV UV       Perl_get_hash_seed(pTHX)
+                       __attribute__warn_unused_result__;
+
 PERL_CALLCONV void     Perl_report_evil_fh(pTHX_ const GV *gv, const IO *io, I32 op);
 PERL_CALLCONV void     Perl_report_uninit(pTHX_ SV* uninit_sv);
 PERL_CALLCONV void     Perl_warn(pTHX_ const char* pat, ...)
@@ -1736,7 +1872,10 @@ PERL_CALLCONV int        Perl_yyparse(pTHX);
 PERL_CALLCONV int      Perl_yywarn(pTHX_ const char* s);
 #if defined(MYMALLOC)
 PERL_CALLCONV void     Perl_dump_mstats(pTHX_ char* s);
-PERL_CALLCONV int      Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level);
+PERL_CALLCONV int      Perl_get_mstats(pTHX_ perl_mstats_t *buf, int buflen, int level)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 PERL_CALLCONV Malloc_t Perl_safesysmalloc(MEM_SIZE nbytes)
                        __attribute__malloc__
@@ -1814,18 +1953,44 @@ PERL_CALLCONV void      Perl_reginitcolors(pTHX);
 PERL_CALLCONV char*    Perl_sv_2pv_nolen(pTHX_ SV* sv);
 PERL_CALLCONV char*    Perl_sv_2pvutf8_nolen(pTHX_ SV* sv);
 PERL_CALLCONV char*    Perl_sv_2pvbyte_nolen(pTHX_ SV* sv);
-/* PERL_CALLCONV char* sv_pv(pTHX_ SV *sv); */
-/* PERL_CALLCONV char* sv_pvutf8(pTHX_ SV *sv); */
-/* PERL_CALLCONV char* sv_pvbyte(pTHX_ SV *sv); */
-/* PERL_CALLCONV STRLEN        sv_utf8_upgrade(pTHX_ SV *sv); */
-PERL_CALLCONV bool     Perl_sv_utf8_downgrade(pTHX_ SV *sv, bool fail_ok);
-PERL_CALLCONV void     Perl_sv_utf8_encode(pTHX_ SV *sv);
-PERL_CALLCONV bool     Perl_sv_utf8_decode(pTHX_ SV *sv);
-PERL_CALLCONV void     Perl_sv_force_normal(pTHX_ SV *sv);
-PERL_CALLCONV void     Perl_sv_force_normal_flags(pTHX_ SV *sv, U32 flags);
+/* PERL_CALLCONV char* sv_pv(pTHX_ SV *sv)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1); */
+
+/* PERL_CALLCONV char* sv_pvutf8(pTHX_ SV *sv)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1); */
+
+/* PERL_CALLCONV char* sv_pvbyte(pTHX_ SV *sv)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1); */
+
+/* PERL_CALLCONV STRLEN        sv_utf8_upgrade(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1); */
+
+PERL_CALLCONV bool     Perl_sv_utf8_downgrade(pTHX_ SV *sv, bool fail_ok)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_sv_utf8_encode(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV bool     Perl_sv_utf8_decode(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_sv_force_normal(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_sv_force_normal_flags(pTHX_ SV *sv, U32 flags)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV void     Perl_tmps_grow(pTHX_ I32 n);
-PERL_CALLCONV SV*      Perl_sv_rvweaken(pTHX_ SV *sv);
-PERL_CALLCONV int      Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg);
+PERL_CALLCONV SV*      Perl_sv_rvweaken(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV int      Perl_magic_killbackrefs(pTHX_ SV *sv, MAGIC *mg)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 PERL_CALLCONV OP*      Perl_newANONATTRSUB(pTHX_ I32 floor, OP *proto, OP *attrs, OP *block);
 PERL_CALLCONV CV*      Perl_newATTRSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block);
 PERL_CALLCONV void     Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
@@ -1983,14 +2148,13 @@ STATIC void     S_require_errno(pTHX_ GV *gv)
 STATIC void    S_hsplit(pTHX_ HV *hv)
                        __attribute__nonnull__(pTHX_1);
 
-STATIC void    S_hfreeentries(pTHX_ HV *hv);
+STATIC void    S_hfreeentries(pTHX_ HV *hv)
+                       __attribute__nonnull__(pTHX_1);
+
 STATIC HE*     S_new_he(pTHX)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-STATIC void    S_del_he(pTHX_ HE *p)
-                       __attribute__nonnull__(pTHX_1);
-
 STATIC HEK*    S_save_hek_flags(pTHX_ const char *str, I32 len, U32 hash, int flags)
                        __attribute__malloc__
                        __attribute__warn_unused_result__
@@ -2327,6 +2491,7 @@ STATIC const char *       S_group_end(pTHX_ const char *pat, const char *patend, char
                        __attribute__nonnull__(pTHX_2);
 
 STATIC const char *    S_get_num(pTHX_ const char *ppat, I32 *lenptr)
+                       __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
@@ -2600,9 +2765,8 @@ STATIC void       S_sv_del_backref(pTHX_ SV *target, SV *ref)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
 
-STATIC SV *    S_varname(pTHX_ GV *gv, const char *gvtype, PADOFFSET targ, SV *keyname, I32 aindex, int subscript_type)
-                       __attribute__warn_unused_result__
-                       __attribute__nonnull__(pTHX_2);
+STATIC SV *    S_varname(pTHX_ GV *gv, const char gvtype, PADOFFSET targ, SV *keyname, I32 aindex, int subscript_type)
+                       __attribute__warn_unused_result__;
 
 #  ifdef DEBUGGING
 STATIC void    S_del_sv(pTHX_ SV *p);
@@ -2683,8 +2847,15 @@ STATIC void      S_set_csh(pTHX);
 STATIC I32     S_sublex_done(pTHX);
 STATIC I32     S_sublex_push(pTHX);
 STATIC I32     S_sublex_start(pTHX);
-STATIC char *  S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append);
-STATIC HV *    S_find_in_my_stash(pTHX_ const char *pkgname, I32 len);
+STATIC char *  S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+STATIC HV *    S_find_in_my_stash(pTHX_ const char *pkgname, I32 len)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
 STATIC SV*     S_new_constant(pTHX_ const char *s, STRLEN len, const char *key, SV *sv, SV *pv, const char *type);
 #  if defined(DEBUGGING)
 STATIC int     S_tokereport(pTHX_ const char *s, I32 rv);
@@ -2718,6 +2889,8 @@ STATIC COP*       S_closest_cop(pTHX_ COP *cop, const OP *o)
                        __attribute__nonnull__(pTHX_1);
 
 STATIC SV*     S_mess_alloc(pTHX);
+STATIC const char *    S_vdie_croak_common(pTHX_ const char *pat, va_list *args, STRLEN *msglen, I32* utf8);
+STATIC void    S_vdie_common(pTHX_ const char *message, STRLEN msglen, I32 utf8);
 #endif
 
 #if defined(PERL_IN_NUMERIC_C) || defined(PERL_DECL_PROT)
@@ -2786,8 +2959,12 @@ PERL_CALLCONV int        Perl_PerlIO_seek(pTHX_ PerlIO *f, Off_t offset, int whence);
 
 PERL_CALLCONV STDCHAR *        Perl_PerlIO_get_base(pTHX_ PerlIO *f);
 PERL_CALLCONV STDCHAR *        Perl_PerlIO_get_ptr(pTHX_ PerlIO *f);
-PERL_CALLCONV int      Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f);
-PERL_CALLCONV int      Perl_PerlIO_get_cnt(pTHX_ PerlIO *f);
+PERL_CALLCONV int      Perl_PerlIO_get_bufsiz(pTHX_ PerlIO *f)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV int      Perl_PerlIO_get_cnt(pTHX_ PerlIO *f)
+                       __attribute__warn_unused_result__;
+
 
 PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX);
 PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX);
@@ -2796,18 +2973,24 @@ PERL_CALLCONV PerlIO *  Perl_PerlIO_stderr(pTHX);
 
 PERL_CALLCONV void     Perl_deb_stack_all(pTHX);
 #ifdef PERL_IN_DEB_C
-STATIC void    S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max);
+STATIC void    S_deb_stack_n(pTHX_ SV** stack_base, I32 stack_min, I32 stack_max, I32 mark_min, I32 mark_max)
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 
 PERL_CALLCONV PADLIST* Perl_pad_new(pTHX_ int flags)
                        __attribute__malloc__
                        __attribute__warn_unused_result__;
 
-PERL_CALLCONV void     Perl_pad_undef(pTHX_ CV* cv);
+PERL_CALLCONV void     Perl_pad_undef(pTHX_ CV* cv)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV PADOFFSET        Perl_pad_add_name(pTHX_ const char *name, HV* typestash, HV* ourstash, bool clone)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV PADOFFSET        Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type);
+PERL_CALLCONV PADOFFSET        Perl_pad_add_anon(pTHX_ SV* sv, OPCODE op_type)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV void     Perl_pad_check_dup(pTHX_ const char* name, bool is_our, const HV* ourstash)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_3);
@@ -2834,7 +3017,12 @@ PERL_CALLCONV HV*        Perl_pad_compname_type(pTHX_ const PADOFFSET po)
 
 
 #if defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
-STATIC PADOFFSET       S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags);
+STATIC PADOFFSET       S_pad_findlex(pTHX_ const char *name, const CV* cv, U32 seq, int warn, SV** out_capture, SV** out_name_sv, int *out_flags)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_6)
+                       __attribute__nonnull__(pTHX_7);
+
 #  if defined(DEBUGGING)
 STATIC void    S_cv_dump(pTHX_ const CV *cv, const char *title)
                        __attribute__nonnull__(pTHX_1)
@@ -2847,7 +3035,9 @@ PERL_CALLCONV CV* Perl_find_runcv(pTHX_ U32 *db_seqp)
 
 PERL_CALLCONV void     Perl_free_tied_hv_pool(pTHX);
 #if defined(DEBUGGING)
-PERL_CALLCONV int      Perl_get_debug_opts(pTHX_ const char **s, bool givehelp);
+PERL_CALLCONV int      Perl_get_debug_opts(pTHX_ const char **s, bool givehelp)
+                       __attribute__warn_unused_result__;
+
 #endif
 PERL_CALLCONV void     Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val);
 PERL_CALLCONV void     Perl_hv_assert(pTHX_ HV* tb)
@@ -2972,10 +3162,16 @@ PERL_CALLCONV long      Perl_my_htobel(long n);
 PERL_CALLCONV long     Perl_my_betohl(long n);
 #endif
 
-PERL_CALLCONV void     Perl_my_swabn(void* ptr, int n);
+PERL_CALLCONV void     Perl_my_swabn(void* ptr, int n)
+                       __attribute__nonnull__(1);
+
+
+PERL_CALLCONV GV*      Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, I32 sv_type)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV GV*      Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, I32 sv_type)
+                       __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV GV*      Perl_gv_fetchpvn_flags(pTHX_ const char* name, STRLEN len, I32 flags, I32 sv_type);
-PERL_CALLCONV GV*      Perl_gv_fetchsv(pTHX_ SV *name, I32 flags, I32 sv_type);
 PERL_CALLCONV bool     Perl_is_gv_magical_sv(pTHX_ SV *name, U32 flags)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
@@ -2991,6 +3187,18 @@ PERL_CALLCONV bool       Perl_stashpv_hvname_match(pTHX_ const COP *cop, const HV *hv)
 PERL_CALLCONV void     Perl_dump_sv_child(pTHX_ SV *sv);
 #endif
 
+#ifdef PERL_DONT_CREATE_GVSV
+PERL_CALLCONV GV*      Perl_gv_SVadd(pTHX_ GV* gv)
+                       __attribute__nonnull__(pTHX_1);
+
+#endif
+PERL_CALLCONV bool     Perl_ckwarn(pTHX_ U32 w);
+PERL_CALLCONV bool     Perl_ckwarn_d(pTHX_ U32 w);
+
+PERL_CALLCONV void     Perl_offer_nice_chunk(pTHX_ void *chunk, U32 chunk_size)
+                       __attribute__nonnull__(pTHX_1);
+
+
 END_EXTERN_C
 /*
  * ex: set ts=8 sts=4 sw=4 noet: