More embed.fnc plowing
Andy Lester [Wed, 13 Jul 2005 10:49:19 +0000 (05:49 -0500)]
Message-ID: <20050713154919.GA24586@petdance.com>

p4raw-id: //depot/perl@25138

embed.fnc
gv.c
hv.c
op.c
pad.c
perlio.c
pp_ctl.c
pp_hot.c
proto.h
toke.c

index 527d8e4..4669f7d 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -87,7 +87,7 @@ END_EXTERN_C
 /* functions with flag 'n' should come before here */
 START_EXTERN_C
 #  include "pp_proto.h"
-Ap     |SV*    |amagic_call    |SV* left|SV* right|int method|int dir
+Ap     |SV*    |amagic_call    |NN SV* left|NN SV* right|int method|int dir
 Ap     |bool   |Gv_AMupdate    |NN HV* stash
 ApR    |CV*    |gv_handler     |NULLOK HV* stash|I32 id
 p      |OP*    |append_elem    |I32 optype|NULLOK OP* first|NULLOK OP* last
@@ -248,16 +248,16 @@ p |OP*    |gen_constant_list|OP* o
 #if !defined(HAS_GETENV_LEN)
 p      |char*  |getenv_len     |NN const char* key|NN unsigned long *len
 #endif
-Ap     |void   |gp_free        |GV* gv
-Ap     |GP*    |gp_ref         |GP* gp
+Ap     |void   |gp_free        |NULLOK GV* gv
+Ap     |GP*    |gp_ref         |NULLOK GP* gp
 Ap     |GV*    |gv_AVadd       |NN GV* gv
 Ap     |GV*    |gv_HVadd       |NN GV* gv
 Ap     |GV*    |gv_IOadd       |NN GV* gv
-ApR    |GV*    |gv_autoload4   |HV* stash|NN const char* name|STRLEN len|I32 method
-Ap     |void   |gv_check       |HV* stash
-Ap     |void   |gv_efullname   |SV* sv|const GV* gv
-Apmb   |void   |gv_efullname3  |SV* sv|const GV* gv|const char* prefix
-Ap     |void   |gv_efullname4  |SV* sv|const GV* gv|const char* prefix|bool keepmain
+ApR    |GV*    |gv_autoload4   |NULLOK HV* stash|NN const char* name|STRLEN len|I32 method
+Ap     |void   |gv_check       |NN HV* stash
+Ap     |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
 Apd    |GV*    |gv_fetchmeth   |HV* stash|const char* name|STRLEN len \
                                |I32 level
@@ -740,7 +740,7 @@ Apd |void   |sv_vcatpvf     |NN SV* sv|const char* pat|va_list* args
 Apd    |void   |sv_catpv       |NN SV* sv|const char* ptr
 Amdb   |void   |sv_catpvn      |NN SV* sv|const char* ptr|STRLEN len
 Amdb   |void   |sv_catsv       |NN SV* dsv|SV* ssv
-Apd    |void   |sv_chop        |NN SV* sv|const char* ptr
+Apd    |void   |sv_chop        |NN SV* sv|NULLOK const char* ptr
 pd     |I32    |sv_clean_all
 pd     |void   |sv_clean_objs
 Apd    |void   |sv_clear       |NN SV* sv
@@ -933,10 +933,10 @@ Apd       |void   |sv_force_normal_flags|NN SV *sv|U32 flags
 Ap     |void   |tmps_grow      |I32 n
 Apd    |SV*    |sv_rvweaken    |NN SV *sv
 p      |int    |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
-Ap     |OP*    |newANONATTRSUB |I32 floor|OP *proto|OP *attrs|OP *block
-Ap     |CV*    |newATTRSUB     |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
-Apr    |void   |newMYSUB       |I32 floor|OP *o|OP *proto|OP *attrs|OP *block
-p      |OP *   |my_attrs       |NN OP *o|OP *attrs
+Ap     |OP*    |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
+Ap     |CV*    |newATTRSUB     |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|OP *block
+Apr    |void   |newMYSUB       |I32 floor|NULLOK OP *o|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
+p      |OP *   |my_attrs       |NN OP *o|NULLOK OP *attrs
 p      |void   |boot_core_xsutils
 #if defined(USE_ITHREADS)
 Apa    |PERL_CONTEXT*|cx_dup   |PERL_CONTEXT* cx|I32 ix|I32 max|CLONE_PARAMS* param
@@ -1064,7 +1064,7 @@ pR        |OP*    |ck_unpack      |NN OP *o
 sR     |bool   |is_handle_constructor|NN const OP *o|I32 numargs
 sR     |I32    |is_list_assignment|const OP *o
 s      |void   |cop_free       |NN COP *cop
-s      |OP*    |modkids        |OP *o|I32 type
+s      |OP*    |modkids        |NULLOK OP *o|I32 type
 s      |OP*    |scalarboolean  |NN OP *o
 sR     |OP*    |newDEFSVOP
 sR     |OP*    |new_logop      |I32 type|I32 flags|NN OP **firstp|NN OP **otherp
@@ -1128,7 +1128,7 @@ sR        |const char *|get_num   |NN const char *ppat|NN I32 *lenptr
 #endif
 
 #if defined(PERL_IN_PP_CTL_C) || defined(PERL_DECL_PROT)
-sR     |OP*    |docatch        |OP *o
+sR     |OP*    |docatch        |NULLOK OP *o
 s      |void   |docatch_body
 sR     |OP*    |dofindlabel    |OP *o|const char *label|OP **opstack|OP **oplimit
 sR     |OP*    |doparseform    |SV *sv
@@ -1138,8 +1138,8 @@ sR        |I32    |dopoptolabel   |NN const char *label
 sR     |I32    |dopoptoloop    |I32 startingblock
 sR     |I32    |dopoptosub     |I32 startingblock
 sR     |I32    |dopoptosub_at  |const PERL_CONTEXT* cxstk|I32 startingblock
-s      |void   |save_lines     |AV *array|SV *sv
-sR     |OP*    |doeval         |int gimme|OP** startop|CV* outside|U32 seq
+s      |void   |save_lines     |NULLOK AV *array|NN SV *sv
+sR     |OP*    |doeval         |int gimme|NULLOK OP** startop|NULLOK CV* outside|U32 seq
 sR     |PerlIO *|doopen_pm     |const char *name|const char *mode
 sR     |bool   |path_is_absolute|NN const char *name
 #endif
@@ -1147,7 +1147,7 @@ sR        |bool   |path_is_absolute|NN const char *name
 #if defined(PERL_IN_PP_HOT_C) || defined(PERL_DECL_PROT)
 s      |void   |do_oddball     |NN HV *hash|NN SV **relem|NN SV **firstrelem
 sR     |CV*    |get_db_sub     |NN SV **svp|NN CV *cv
-sR     |SV*    |method_common  |NN SV* meth|U32* hashp
+sR     |SV*    |method_common  |NN SV* meth|NULLOK U32* hashp
 #endif
 
 #if defined(PERL_IN_PP_SYS_C) || defined(PERL_DECL_PROT)
@@ -1184,14 +1184,14 @@ Es      |int    |cl_is_anything |NN const struct regnode_charclass_class *cl
 Es     |void   |cl_init        |NN struct RExC_state_t*|NN struct regnode_charclass_class *cl
 Es     |void   |cl_init_zero   |NN struct RExC_state_t*|NN struct regnode_charclass_class *cl
 Es     |void   |cl_and         |NN struct regnode_charclass_class *cl \
-                               |const struct regnode_charclass_class *and_with
+                               |NN const struct regnode_charclass_class *and_with
 Es     |void   |cl_or          |NN struct RExC_state_t*|NN struct regnode_charclass_class *cl \
                                |NN const struct regnode_charclass_class *or_with
 Es     |I32    |study_chunk    |struct RExC_state_t*|regnode **scanp|I32 *deltap \
                                |regnode *last|struct scan_data_t *data \
                                |U32 flags|U32 depth
 Es     |I32    |add_data       |struct RExC_state_t*|I32 n|const char *s
-rs     |void   |re_croak2      |const char* pat1|const char* pat2|...
+rs     |void   |re_croak2      |NN const char* pat1|NN const char* pat2|...
 Es     |I32    |regpposixcc    |struct RExC_state_t*|I32 value
 Es     |void   |checkposixcc   |struct RExC_state_t*
 
@@ -1204,12 +1204,13 @@ Es      |I32    |make_trie      |struct RExC_state_t*|regnode *startbranch \
 ERs    |I32    |regmatch       |NN regnode *prog
 ERs    |I32    |regrepeat      |NN const regnode *p|I32 max
 ERs    |I32    |regrepeat_hard |NN regnode *p|I32 max|NN I32 *lp
-ERs    |I32    |regtry         |regexp *prog|char *startpos
-ERs    |bool   |reginclass     |NN const regnode *n|NN const U8 *p|STRLEN *lenp|bool do_utf8sv_is_utf8
+ERs    |I32    |regtry         |NN regexp *prog|NN char *startpos
+ERs    |bool   |reginclass     |NN const regnode *n|NN const U8 *p|NULLOK STRLEN *lenp\
+                               |bool do_utf8sv_is_utf8
 Es     |CHECKPOINT|regcppush   |I32 parenfloor
 Es     |char*|regcppop
 Es     |char*|regcp_set_to     |I32 ss
-Es     |void   |cache_re       |regexp *prog
+Es     |void   |cache_re       |NN regexp *prog
 ERs    |U8*    |reghop         |U8 *pos|I32 off
 ERs    |U8*    |reghop3        |U8 *pos|I32 off|U8 *lim
 ERs    |U8*    |reghopmaybe    |U8 *pos|I32 off
@@ -1221,11 +1222,11 @@ Es      |void   |to_byte_substr |NN regexp * prog
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
 s      |CV*    |deb_curcv      |I32 ix
-s      |void   |debprof        |const OP *o
+s      |void   |debprof        |NN const OP *o
 #endif
 
 #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
-s      |SV*    |save_scalar_at |SV **sptr
+s      |SV*    |save_scalar_at |NN SV **sptr
 #endif
 
 #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
@@ -1242,10 +1243,10 @@ s       |void   |sv_del_backref |NN SV *target|NN SV *ref
 sR     |SV *   |varname        |NULLOK GV *gv|const char gvtype|PADOFFSET targ \
                                |NULLOK SV *keyname|I32 aindex|int subscript_type
 #  ifdef DEBUGGING
-s      |void   |del_sv |SV *p
+s      |void   |del_sv |NN SV *p
 #  endif
 #  if !defined(NV_PRESERVES_UV)
-s      |int    |sv_2iuv_non_preserve   |SV *sv|I32 numtype
+s      |int    |sv_2iuv_non_preserve   |NN SV *sv|I32 numtype
 #  endif
 sR     |I32    |expect_number  |NN char** pattern
 #
@@ -1264,43 +1265,43 @@ sM      |void   |sv_release_COW |SV *sv|const char *pvx|STRLEN len|SV *after
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 s      |void   |check_uni
 s      |void   |force_next     |I32 type
-s      |char*  |force_version  |char *start|int guessing
-s      |char*  |force_word     |char *start|int token|int check_keyword \
+s      |char*  |force_version  |NN char *start|int guessing
+s      |char*  |force_word     |NN char *start|int token|int check_keyword \
                                |int allow_pack|int allow_tick
-s      |SV*    |tokeq          |SV *sv
+s      |SV*    |tokeq          |NN SV *sv
 s      |int    |pending_ident
-s      |char*  |scan_const     |NN char *start
-s      |char*  |scan_formline  |NN char *s
-s      |char*  |scan_heredoc   |NN char *s
+sR     |char*  |scan_const     |NN char *start
+sR     |char*  |scan_formline  |NN char *s
+sR     |char*  |scan_heredoc   |NN char *s
 s      |char*  |scan_ident     |NN char *s|NN const char *send|NN char *dest \
                                |STRLEN destlen|I32 ck_uni
-s      |char*  |scan_inputsymbol|char *start
-s      |char*  |scan_pat       |char *start|I32 type
-s      |char*  |scan_str       |char *start|int keep_quoted|int keep_delims
-s      |char*  |scan_subst     |char *start
-s      |char*  |scan_trans     |char *start
-s      |char*  |scan_word      |char *s|char *dest|STRLEN destlen \
-                               |int allow_package|STRLEN *slp
-s      |char*  |skipspace      |char *s
-s      |char*  |swallow_bom    |U8 *s
+sR     |char*  |scan_inputsymbol|NN char *start
+sR     |char*  |scan_pat       |NN char *start|I32 type
+sR     |char*  |scan_str       |NN char *start|int keep_quoted|int keep_delims
+sR     |char*  |scan_subst     |NN char *start
+sR     |char*  |scan_trans     |NN char *start
+s      |char*  |scan_word      |NN char *s|NN char *dest|STRLEN destlen \
+                               |int allow_package|NN STRLEN *slp
+sR     |char*  |skipspace      |NN char *s
+sR     |char*  |swallow_bom    |NN U8 *s
 s      |void   |checkcomma     |NN char *s|NN const char *name|NN const char *what
-s      |void   |force_ident    |const char *s|int kind
-s      |void   |incline        |char *s
-s      |int    |intuit_method  |char *s|GV *gv
-s      |int    |intuit_more    |char *s
-s      |I32    |lop            |I32 f|int x|char *s
-rs     |void   |missingterm    |char *s
-s      |void   |no_op          |const char *what|char *s
+s      |void   |force_ident    |NN const char *s|int kind
+s      |void   |incline        |NN char *s
+s      |int    |intuit_method  |NN char *s|NN GV *gv
+s      |int    |intuit_more    |NN char *s
+s      |I32    |lop            |I32 f|int x|NN char *s
+rs     |void   |missingterm    |NULLOK char *s
+s      |void   |no_op          |NN const char *what|NULLOK char *s
 s      |void   |set_csh
-s      |I32    |sublex_done
-s      |I32    |sublex_push
-s      |I32    |sublex_start
+sR     |I32    |sublex_done
+sR     |I32    |sublex_push
+sR     |I32    |sublex_start
 sR     |char * |filter_gets    |NN SV *sv|NN PerlIO *fp|STRLEN append
 sR     |HV *   |find_in_my_stash|NN const char *pkgname|I32 len
 s      |SV*    |new_constant   |const char *s|STRLEN len|const char *key|SV *sv \
                                |SV *pv|const char *type
 #  if defined(DEBUGGING)
-s      |int    |tokereport     |const char *s|I32 rv
+s      |int    |tokereport     |NN const char *s|I32 rv
 #  endif
 s      |int    |ao             |int toketype
 s      |void   |depcom
@@ -1315,7 +1316,7 @@ s |I32    |cr_textfilter  |int idx|NULLOK SV *sv|int maxlen
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-s      |SV*|isa_lookup |HV *stash|const char *name|HV *name_stash|int len|int level
+s      |SV*|isa_lookup |NULLOK HV *stash|NN const char *name|NULLOK HV *name_stash|int len|int level
 #endif
 
 #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
@@ -1344,41 +1345,41 @@ START_EXTERN_C
 
 Apd    |void   |sv_setsv_flags |NN SV* dsv|NULLOK SV* ssv|I32 flags
 Apd    |void   |sv_catpvn_flags|NN SV* sv|NN const char* ptr|STRLEN len|I32 flags
-Apd    |void   |sv_catsv_flags |NN SV* dsv|SV* ssv|I32 flags
+Apd    |void   |sv_catsv_flags |NN SV* dsv|NULLOK SV* ssv|I32 flags
 Apd    |STRLEN |sv_utf8_upgrade_flags|NN SV *sv|I32 flags
-Apd    |char*  |sv_pvn_force_flags|SV* sv|STRLEN* lp|I32 flags
+Apd    |char*  |sv_pvn_force_flags|NN SV* sv|NULLOK STRLEN* lp|I32 flags
 Apd    |void   |sv_copypv      |NN SV* dsv|NN SV* ssv
 Ap     |char*  |my_atof2       |NN const char *s|NN NV* value
 Apn    |int    |my_socketpair  |int family|int type|int protocol|int fd[2]
 #ifdef PERL_OLD_COPY_ON_WRITE
-pMXE   |SV*    |sv_setsv_cow   |SV* dsv|SV* ssv
+pMXE   |SV*    |sv_setsv_cow   |NN SV* dsv|NN SV* ssv
 #endif
 
 #if defined(USE_PERLIO) && !defined(USE_SFIO)
-Ap     |int    |PerlIO_close           |PerlIO *f
-Ap     |int    |PerlIO_fill            |PerlIO *f
-Ap     |int    |PerlIO_fileno          |PerlIO *f
-Ap     |int    |PerlIO_eof             |PerlIO *f
-Ap     |int    |PerlIO_error           |PerlIO *f
-Ap     |int    |PerlIO_flush           |PerlIO *f
-Ap     |void   |PerlIO_clearerr        |PerlIO *f
-Ap     |void   |PerlIO_set_cnt         |PerlIO *f|int cnt
-Ap     |void   |PerlIO_set_ptrcnt      |PerlIO *f|NN STDCHAR *ptr|int cnt
-Ap     |void   |PerlIO_setlinebuf      |PerlIO *f
-Ap     |SSize_t|PerlIO_read            |PerlIO *f|NN void *buf|Size_t count
-Ap     |SSize_t|PerlIO_write           |PerlIO *f|NN const void *buf|Size_t count
-Ap     |SSize_t|PerlIO_unread          |PerlIO *f|NN const void *buf|Size_t count
-Ap     |Off_t  |PerlIO_tell            |PerlIO *f
-Ap     |int    |PerlIO_seek            |PerlIO *f|Off_t offset|int whence
+Ap     |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|int cnt
+Ap     |void   |PerlIO_set_ptrcnt      |NULLOK PerlIO *f|NN STDCHAR *ptr|int cnt
+Ap     |void   |PerlIO_setlinebuf      |NULLOK PerlIO *f
+Ap     |SSize_t|PerlIO_read            |NULLOK PerlIO *f|NN void *buf|Size_t count
+Ap     |SSize_t|PerlIO_write           |NULLOK PerlIO *f|NN const void *buf|Size_t count
+Ap     |SSize_t|PerlIO_unread          |NULLOK PerlIO *f|NN const void *buf|Size_t count
+Ap     |Off_t  |PerlIO_tell            |NULLOK PerlIO *f
+Ap     |int    |PerlIO_seek            |NULLOK PerlIO *f|Off_t offset|int whence
 
-Ap     |STDCHAR *|PerlIO_get_base      |PerlIO *f
-Ap     |STDCHAR *|PerlIO_get_ptr       |PerlIO *f
-ApR    |int      |PerlIO_get_bufsiz    |PerlIO *f
-ApR    |int      |PerlIO_get_cnt       |PerlIO *f
+Ap     |STDCHAR *|PerlIO_get_base      |NULLOK PerlIO *f
+Ap     |STDCHAR *|PerlIO_get_ptr       |NULLOK PerlIO *f
+ApR    |int      |PerlIO_get_bufsiz    |NULLOK PerlIO *f
+ApR    |int      |PerlIO_get_cnt       |NULLOK PerlIO *f
 
-Ap     |PerlIO *|PerlIO_stdin
-Ap     |PerlIO *|PerlIO_stdout
-Ap     |PerlIO *|PerlIO_stderr
+ApR    |PerlIO *|PerlIO_stdin
+ApR    |PerlIO *|PerlIO_stdout
+ApR    |PerlIO *|PerlIO_stderr
 #endif /* PERLIO_LAYERS */
 
 p      |void   |deb_stack_all
@@ -1399,7 +1400,7 @@ pd        |void   |pad_setsv      |PADOFFSET po|NN SV* sv
 pd     |void   |pad_block_start|int full
 pd     |void   |pad_tidy       |padtidy_type type
 pd     |void   |do_dump_pad    |I32 level|NN PerlIO *file|NULLOK PADLIST *padlist|int full
-pd     |void   |pad_fixup_inner_anons|NN PADLIST *padlist|CV *old_cv|CV *new_cv
+pd     |void   |pad_fixup_inner_anons|NN PADLIST *padlist|NN CV *old_cv|NN CV *new_cv
 
 pd     |void   |pad_push       |NN PADLIST *padlist|int depth
 pR     |HV*    |pad_compname_type|const PADOFFSET po
@@ -1415,17 +1416,17 @@ sd      |void   |cv_dump        |NN const CV *cv|NN const char *title
 pdR    |CV*    |find_runcv     |NULLOK U32 *db_seqp
 p      |void   |free_tied_hv_pool
 #if defined(DEBUGGING)
-pR     |int    |get_debug_opts |const char **s|bool givehelp
+pR     |int    |get_debug_opts |NN const char **s|bool givehelp
 #endif
-Ap     |void   |save_set_svflags|SV* sv|U32 mask|U32 val
+Ap     |void   |save_set_svflags|NULLOK SV* sv|U32 mask|U32 val
 Apod   |void   |hv_assert      |NN HV* tb
 
 ApdR   |SV*    |hv_scalar      |NN HV* hv
 ApoR   |I32*   |hv_riter_p     |NN HV* hv
 ApoR   |HE**   |hv_eiter_p     |NN HV* hv
 Apo    |void   |hv_riter_set   |NN HV* hv|I32 riter
-Apo    |void   |hv_eiter_set   |NN HV* hv|HE* eiter
-Apo    |void   |hv_name_set    |NN HV* hv|const char *name|I32 len|int flags
+Apo    |void   |hv_eiter_set   |NN HV* hv|NULLOK HE* eiter
+Apo    |void   |hv_name_set    |NN HV* hv|NULLOK const char *name|I32 len|int flags
 Apd    |void   |hv_clear_placeholders  |NN HV* hb
 ApoR   |I32*   |hv_placeholders_p      |NN HV* hv
 ApoR   |I32    |hv_placeholders_get    |NN HV* hv
@@ -1519,7 +1520,7 @@ dpR       |bool   |is_gv_magical_sv|NN SV *name|U32 flags
 ApR    |bool   |stashpv_hvname_match|NN const COP *cop|NN const HV *hv
 
 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
-p      |void   |dump_sv_child  |SV *sv
+p      |void   |dump_sv_child  |NN SV *sv
 #endif
 
 #ifdef PERL_DONT_CREATE_GVSV
diff --git a/gv.c b/gv.c
index d307124..2726840 100644 (file)
--- a/gv.c
+++ b/gv.c
@@ -1191,10 +1191,8 @@ Perl_gv_fullname3(pTHX_ SV *sv, const GV *gv, const char *prefix)
 void
 Perl_gv_efullname4(pTHX_ SV *sv, const GV *gv, const char *prefix, bool keepmain)
 {
-    const GV *egv = GvEGV(gv);
-    if (!egv)
-       egv = gv;
-    gv_fullname4(sv, egv, prefix, keepmain);
+    const GV * const egv = GvEGV(gv);
+    gv_fullname4(sv, egv ? egv : gv, prefix, keepmain);
 }
 
 void
diff --git a/hv.c b/hv.c
index 63149ac..0745b67 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -1729,7 +1729,7 @@ Perl_hv_undef(pTHX_ HV *hv)
     if ((name = HvNAME_get(hv))) {
         if(PL_stashcache)
            hv_delete(PL_stashcache, name, HvNAMELEN_get(hv), G_DISCARD);
-       Perl_hv_name_set(aTHX_ hv, 0, 0, 0);
+       Perl_hv_name_set(aTHX_ hv, Nullch, 0, 0);
     }
     SvFLAGS(hv) &= ~SVf_OOK;
     Safefree(HvARRAY(hv));
@@ -1871,7 +1871,8 @@ Perl_hv_name_set(pTHX_ HV *hv, const char *name, I32 len, int flags)
 {
     struct xpvhv_aux *iter;
     U32 hash;
-    (void)flags;
+
+    PERL_UNUSED_ARG(flags);
 
     if (SvOOK(hv)) {
        iter = HvAUX(hv);
diff --git a/op.c b/op.c
index b7f560b..55a976b 100644 (file)
--- a/op.c
+++ b/op.c
@@ -161,7 +161,7 @@ Perl_Slab_Free(pTHX_ void *op)
 STATIC const char*
 S_gv_ename(pTHX_ GV *gv)
 {
-    SV* tmpsv = sv_newmortal();
+    SV* const tmpsv = sv_newmortal();
     gv_efullname3(tmpsv, gv, Nullch);
     return SvPV_nolen_const(tmpsv);
 }
@@ -3743,7 +3743,8 @@ Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP *expr, OP *block)
     OP* o;
     const bool once = block && block->op_flags & OPf_SPECIAL &&
       (block->op_type == OP_ENTERSUB || block->op_type == OP_NULL);
-    (void)debuggable;
+
+    PERL_UNUSED_ARG(debuggable);
 
     if (expr) {
        if (once && expr->op_type == OP_CONST && !SvTRUE(((SVOP*)expr)->op_sv))
@@ -3753,8 +3754,8 @@ Perl_newLOOPOP(pTHX_ I32 flags, I32 debuggable, OP *expr, OP *block)
            expr = newUNOP(OP_DEFINED, 0,
                newASSIGNOP(0, newDEFSVOP(), 0, expr) );
        } else if (expr->op_flags & OPf_KIDS) {
-            const OP *k1 = ((UNOP*)expr)->op_first;
-            const OP *k2 = (k1) ? k1->op_sibling : NULL;
+           const OP * const k1 = ((UNOP*)expr)->op_first;
+           const OP * const k2 = k1 ? k1->op_sibling : NULL;
            switch (expr->op_type) {
              case OP_NULL:
                if (k2 && k2->op_type == OP_READLINE
@@ -3806,15 +3807,16 @@ whileline, OP *expr, OP *block, OP *cont, I32 has_my)
     OP *listop;
     OP *o;
     U8 loopflags = 0;
-    (void)debuggable;
+
+    PERL_UNUSED_ARG(debuggable);
 
     if (expr && (expr->op_type == OP_READLINE || expr->op_type == OP_GLOB
                 || (expr->op_type == OP_NULL && expr->op_targ == OP_GLOB))) {
        expr = newUNOP(OP_DEFINED, 0,
            newASSIGNOP(0, newDEFSVOP(), 0, expr) );
     } else if (expr && (expr->op_flags & OPf_KIDS)) {
-       const OP *k1 = ((UNOP*)expr)->op_first;
-       const OP *k2 = (k1) ? k1->op_sibling : NULL;
+       const OP * const k1 = ((UNOP*)expr)->op_first;
+       const OP * const k2 = (k1) ? k1->op_sibling : NULL;
        switch (expr->op_type) {
          case OP_NULL:
            if (k2 && k2->op_type == OP_READLINE
@@ -4205,7 +4207,8 @@ Perl_op_const_sv(pTHX_ const OP *o, CV *cv)
 void
 Perl_newMYSUB(pTHX_ I32 floor, OP *o, OP *proto, OP *attrs, OP *block)
 {
-    (void)floor;
+    PERL_UNUSED_ARG(floor);
+
     if (o)
        SAVEFREEOP(o);
     if (proto)
@@ -4905,7 +4908,7 @@ Perl_oopsCV(pTHX_ OP *o)
 {
     Perl_croak(aTHX_ "NOT IMPL LINE %d",__LINE__);
     /* STUB */
-    (void)o;
+    PERL_UNUSED_ARG(o);
     NORETURN_FUNCTION_END;
 }
 
@@ -5069,7 +5072,7 @@ Perl_ck_eval(pTHX_ OP *o)
     dVAR;
     PL_hints |= HINT_BLOCK_SCOPE;
     if (o->op_flags & OPf_KIDS) {
-       SVOP *kid = (SVOP*)cUNOPo->op_first;
+       SVOP * const kid = (SVOP*)cUNOPo->op_first;
 
        if (!kid) {
            o->op_flags &= ~OPf_KIDS;
@@ -5143,7 +5146,7 @@ Perl_ck_exists(pTHX_ OP *o)
 {
     o = ck_fun(o);
     if (o->op_flags & OPf_KIDS) {
-       OP *kid = cUNOPo->op_first;
+       OP * const kid = cUNOPo->op_first;
        if (kid->op_type == OP_ENTERSUB) {
            (void) ref(kid, o->op_type);
            if (kid->op_type != OP_RV2CV && !PL_error_count)
diff --git a/pad.c b/pad.c
index f60aeaf..db1ee0f 100644 (file)
--- a/pad.c
+++ b/pad.c
@@ -1539,7 +1539,7 @@ Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
        if (namesv && namesv != &PL_sv_undef
            && *SvPVX_const(namesv) == '&')
        {
-           CV *innercv = (CV*)curpad[ix];
+           CV * const innercv = (CV*)curpad[ix];
            assert(CvWEAKOUTSIDE(innercv));
            assert(CvOUTSIDE(innercv) == old_cv);
            CvOUTSIDE(innercv) = new_cv;
index 9cd24d2..e36a730 100644 (file)
--- a/perlio.c
+++ b/perlio.c
@@ -66,7 +66,7 @@ int mkstemp(char*);
 /* Call the callback or PerlIOBase, and return failure. */
 #define Perl_PerlIO_or_Base(f, callback, base, failure, args)  \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        return (*tab->callback) args;           \
                else                                            \
@@ -79,7 +79,7 @@ int mkstemp(char*);
 /* Call the callback or fail, and return failure. */
 #define Perl_PerlIO_or_fail(f, callback, failure, args)        \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        return (*tab->callback) args;           \
                SETERRNO(EINVAL, LIB_INVARG);                   \
@@ -91,7 +91,7 @@ int mkstemp(char*);
 /* Call the callback or PerlIOBase, and be void. */
 #define Perl_PerlIO_or_Base_void(f, callback, base, args)      \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        (*tab->callback) args;                  \
                else                                            \
@@ -103,7 +103,7 @@ int mkstemp(char*);
 /* Call the callback or fail, and be void. */
 #define Perl_PerlIO_or_fail_void(f, callback, args)            \
        if (PerlIOValid(f)) {                                   \
-               const PerlIO_funcs *tab = PerlIOBase(f)->tab;   \
+               const PerlIO_funcs * const tab = PerlIOBase(f)->tab;\
                if (tab && tab->callback)                       \
                        (*tab->callback) args;                  \
                else                                            \
@@ -747,7 +747,7 @@ PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load)
     if ((SSize_t) len <= 0)
        len = strlen(name);
     for (i = 0; i < PL_known_layers->cur; i++) {
-       PerlIO_funcs *f = PL_known_layers->array[i].funcs;
+       PerlIO_funcs * const f = PL_known_layers->array[i].funcs;
        if (memEQ(f->name, name, len) && f->name[len] == 0) {
            PerlIO_debug("%.*s => %p\n", (int) len, name, (void*)f);
            return f;
@@ -759,10 +759,10 @@ PerlIO_find_layer(pTHX_ const char *name, STRLEN len, int load)
            Perl_croak(aTHX_ "Recursive call to Perl_load_module in PerlIO_find_layer");
            return NULL;
        } else {
-           SV *pkgsv = newSVpvn("PerlIO", 6);
-           SV *layer = newSVpvn(name, len);
-           CV *cv  = get_cv("PerlIO::Layer::NoWarnings", FALSE);
-           ENTER;
+           SV * const pkgsv = newSVpvn("PerlIO", 6);
+           SV * const layer = newSVpvn(name, len);
+           CV * const cv    = get_cv("PerlIO::Layer::NoWarnings", FALSE);
+           ENTER;
            SAVEINT(PL_in_load_module);
            if (cv) {
                SAVEGENERICSV(PL_warnhook);
@@ -866,8 +866,8 @@ XS(XS_io_MODIFY_SCALAR_ATTRIBUTES)
 SV *
 PerlIO_tab_sv(pTHX_ PerlIO_funcs *tab)
 {
-    HV *stash = gv_stashpv("PerlIO::Layer", TRUE);
-    SV *sv = sv_bless(newRV_noinc(newSViv(PTR2IV(tab))), stash);
+    HV * const stash = gv_stashpv("PerlIO::Layer", TRUE);
+    SV * const sv = sv_bless(newRV_noinc(newSViv(PTR2IV(tab))), stash);
     return sv;
 }
 
@@ -889,9 +889,9 @@ XS(XS_PerlIO__Layer__find)
        Perl_croak(aTHX_ "Usage class->find(name[,load])");
     else {
        STRLEN len;
-       const char *name = SvPV_const(ST(1), len);
+       const char * const name = SvPV_const(ST(1), len);
        const bool load = (items > 2) ? SvTRUE(ST(2)) : 0;
-       PerlIO_funcs *layer = PerlIO_find_layer(aTHX_ name, len, load);
+       PerlIO_funcs * const layer = PerlIO_find_layer(aTHX_ name, len, load);
        ST(0) =
            (layer) ? sv_2mortal(PerlIO_tab_sv(aTHX_ layer)) :
            &PL_sv_undef;
@@ -979,7 +979,7 @@ PerlIO_parse_layers(pTHX_ PerlIO_list_t *av, const char *names)
                    }
                }
                if (e > s) {
-                   PerlIO_funcs *layer =
+                   PerlIO_funcs * const layer =
                        PerlIO_find_layer(aTHX_ s, llen, 1);
                    if (layer) {
                        PerlIO_list_push(aTHX_ av, layer,
@@ -1134,7 +1134,7 @@ Perl_boot_core_PerlIO(pTHX)
 PerlIO_funcs *
 PerlIO_default_layer(pTHX_ I32 n)
 {
-    PerlIO_list_t *av = PerlIO_default_layers(aTHX);
+    PerlIO_list_t * const av = PerlIO_default_layers(aTHX);
     if (n < 0)
        n += av->cur;
     return PerlIO_layer_fetch(aTHX_ av, n, PERLIO_FUNCS_CAST(&PerlIO_stdio));
@@ -1351,7 +1351,7 @@ int
 PerlIO__close(pTHX_ PerlIO *f)
 {
     if (PerlIOValid(f)) {
-       PerlIO_funcs *tab = PerlIOBase(f)->tab;
+       PerlIO_funcs * const tab = PerlIOBase(f)->tab;
        if (tab && tab->Close)
            return (*tab->Close)(aTHX_ f);
        else
@@ -1445,7 +1445,7 @@ PerlIO_resolve_layers(pTHX_ const char *layers,
         * for it
         */
        if (SvROK(arg) && !sv_isobject(arg)) {
-           PerlIO_funcs *handler = PerlIO_layer_from_ref(aTHX_ SvRV(arg));
+           PerlIO_funcs * const handler = PerlIO_layer_from_ref(aTHX_ SvRV(arg));
            if (handler) {
                def = PerlIO_list_alloc(aTHX);
                PerlIO_list_push(aTHX_ def, handler, &PL_sv_undef);
@@ -1512,7 +1512,7 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
            PerlIOl *l = *f;
            layera = PerlIO_list_alloc(aTHX);
            while (l) {
-               SV *arg = (l->tab->Getarg)
+               SV * const arg = (l->tab->Getarg)
                        ? (*l->tab->Getarg) (aTHX_ &l, NULL, 0)
                        : &PL_sv_undef;
                PerlIO_list_push(aTHX_ layera, l->tab, arg);
@@ -1530,7 +1530,7 @@ PerlIO_openn(pTHX_ const char *layers, const char *mode, int fd,
         */
        n = layera->cur - 1;
        while (n >= 0) {
-           PerlIO_funcs *t = PerlIO_layer_fetch(aTHX_ layera, n, NULL);
+           PerlIO_funcs * const t = PerlIO_layer_fetch(aTHX_ layera, n, NULL);
            if (t && t->Open) {
                tab = t;
                break;
@@ -1709,7 +1709,7 @@ int
 PerlIO_has_base(PerlIO *f)
 {
      if (PerlIOValid(f)) {
-          const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+         const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
          if (tab)
               return (tab->Get_base != NULL);
@@ -1725,7 +1725,7 @@ int
 PerlIO_fast_gets(PerlIO *f)
 {
     if (PerlIOValid(f) && (PerlIOBase(f)->flags & PERLIO_F_FASTGETS)) {
-        const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+        const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
         if (tab)
              return (tab->Set_ptrcnt != NULL);
@@ -1741,7 +1741,7 @@ int
 PerlIO_has_cntptr(PerlIO *f)
 {
     if (PerlIOValid(f)) {
-       const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+       const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
        if (tab)
             return (tab->Get_ptr != NULL && tab->Get_cnt != NULL);
@@ -1757,7 +1757,7 @@ int
 PerlIO_canset_cnt(PerlIO *f)
 {
     if (PerlIOValid(f)) {
-         const PerlIO_funcs *tab = PerlIOBase(f)->tab;
+         const PerlIO_funcs * const tab = PerlIOBase(f)->tab;
 
          if (tab)
               return (tab->Set_ptrcnt != NULL);
@@ -2667,7 +2667,7 @@ PerlIOStdio_pushed(pTHX_ PerlIO *f, const char *mode, SV *arg, PerlIO_funcs *tab
 {
     PerlIO *n;
     if (PerlIOValid(f) && PerlIOValid(n = PerlIONext(f))) {
-        PerlIO_funcs *toptab = PerlIOBase(n)->tab;
+       PerlIO_funcs * const toptab = PerlIOBase(n)->tab;
         if (toptab == tab) {
            /* Top is already stdio - pop self (duplicate) and use original */
            PerlIO_pop(aTHX_ f);
index c53c6d5..7adfd69 100644 (file)
--- a/pp_ctl.c
+++ b/pp_ctl.c
@@ -2902,7 +2902,7 @@ STATIC OP *
 S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq)
 {
     dVAR; dSP;
-    OP *saveop = PL_op;
+    OP * const saveop = PL_op;
 
     PL_in_eval = ((saveop && saveop->op_type == OP_REQUIRE)
                  ? (EVAL_INREQUIRE | (PL_in_eval & EVAL_INEVAL))
index 07eb585..b150ac9 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -2969,17 +2969,15 @@ PP(pp_method_named)
 STATIC SV *
 S_method_common(pTHX_ SV* meth, U32* hashp)
 {
-    SV* sv;
     SV* ob;
     GV* gv;
     HV* stash;
     STRLEN namelen;
-    const char* packname = 0;
+    const char* packname = Nullch;
     SV *packsv = Nullsv;
     STRLEN packlen;
-    const char *name = SvPV_const(meth, namelen);
-
-    sv = *(PL_stack_base + TOPMARK + 1);
+    const char * const name = SvPV_const(meth, namelen);
+    SV * const sv = *(PL_stack_base + TOPMARK + 1);
 
     if (!sv)
        Perl_croak(aTHX_ "Can't call method \"%s\" on an undefined value", name);
@@ -2992,8 +2990,6 @@ S_method_common(pTHX_ SV* meth, U32* hashp)
        GV* iogv;
 
        /* this isn't a reference */
-       packname = Nullch;
-
         if(SvOK(sv) && (packname = SvPV_const(sv, packlen))) {
           const HE* const he = hv_fetch_ent(PL_stashcache, sv, 0, 0);
           if (he) { 
@@ -3085,7 +3081,7 @@ S_method_common(pTHX_ SV* meth, U32* hashp)
                packname = CopSTASHPV(PL_curcop);
            }
            else if (stash) {
-               HEK *packhek = HvNAME_HEK(stash);
+               HEK * const packhek = HvNAME_HEK(stash);
                if (packhek) {
                    packname = HEK_KEY(packhek);
                    packlen = HEK_LEN(packhek);
diff --git a/proto.h b/proto.h
index 0dc9b03..640ab78 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -76,7 +76,10 @@ END_EXTERN_C
 /* functions with flag 'n' should come before here */
 START_EXTERN_C
 #  include "pp_proto.h"
-PERL_CALLCONV SV*      Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir);
+PERL_CALLCONV SV*      Perl_amagic_call(pTHX_ SV* left, SV* right, int method, int dir)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 PERL_CALLCONV bool     Perl_Gv_AMupdate(pTHX_ HV* stash)
                        __attribute__nonnull__(pTHX_1);
 
@@ -512,10 +515,21 @@ PERL_CALLCONV GV* Perl_gv_autoload4(pTHX_ HV* stash, const char* name, STRLEN le
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_2);
 
-PERL_CALLCONV void     Perl_gv_check(pTHX_ HV* stash);
-PERL_CALLCONV void     Perl_gv_efullname(pTHX_ SV* sv, const GV* gv);
-/* PERL_CALLCONV void  Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix); */
-PERL_CALLCONV void     Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain);
+PERL_CALLCONV void     Perl_gv_check(pTHX_ HV* stash)
+                       __attribute__nonnull__(pTHX_1);
+
+PERL_CALLCONV void     Perl_gv_efullname(pTHX_ SV* sv, const GV* gv)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+/* PERL_CALLCONV void  Perl_gv_efullname3(pTHX_ SV* sv, const GV* gv, const char* prefix)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2); */
+
+PERL_CALLCONV void     Perl_gv_efullname4(pTHX_ SV* sv, const GV* gv, const char* prefix, bool keepmain)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 PERL_CALLCONV GV*      Perl_gv_fetchfile(pTHX_ const char* name)
                        __attribute__nonnull__(pTHX_1);
 
@@ -2527,7 +2541,9 @@ STATIC I32        S_dopoptosub(pTHX_ I32 startingblock)
 STATIC I32     S_dopoptosub_at(pTHX_ const PERL_CONTEXT* cxstk, I32 startingblock)
                        __attribute__warn_unused_result__;
 
-STATIC void    S_save_lines(pTHX_ AV *array, SV *sv);
+STATIC void    S_save_lines(pTHX_ AV *array, SV *sv)
+                       __attribute__nonnull__(pTHX_2);
+
 STATIC OP*     S_doeval(pTHX_ int gimme, OP** startop, CV* outside, U32 seq)
                        __attribute__warn_unused_result__;
 
@@ -2654,7 +2670,8 @@ STATIC void       S_cl_init_zero(pTHX_ struct RExC_state_t*, struct regnode_charclass_
                        __attribute__nonnull__(pTHX_2);
 
 STATIC void    S_cl_and(pTHX_ struct regnode_charclass_class *cl, const struct regnode_charclass_class *and_with)
-                       __attribute__nonnull__(pTHX_1);
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
 
 STATIC void    S_cl_or(pTHX_ struct RExC_state_t*, struct regnode_charclass_class *cl, const struct regnode_charclass_class *or_with)
                        __attribute__nonnull__(pTHX_1)
@@ -2664,7 +2681,9 @@ STATIC void       S_cl_or(pTHX_ struct RExC_state_t*, struct regnode_charclass_class *
 STATIC I32     S_study_chunk(pTHX_ struct RExC_state_t*, regnode **scanp, I32 *deltap, regnode *last, struct scan_data_t *data, U32 flags, U32 depth);
 STATIC I32     S_add_data(pTHX_ struct RExC_state_t*, I32 n, const char *s);
 STATIC void    S_re_croak2(pTHX_ const char* pat1, const char* pat2, ...)
-                       __attribute__noreturn__;
+                       __attribute__noreturn__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
 
 STATIC I32     S_regpposixcc(pTHX_ struct RExC_state_t*, I32 value);
 STATIC void    S_checkposixcc(pTHX_ struct RExC_state_t*);
@@ -2687,7 +2706,9 @@ STATIC I32        S_regrepeat_hard(pTHX_ regnode *p, I32 max, I32 *lp)
                        __attribute__nonnull__(pTHX_3);
 
 STATIC I32     S_regtry(pTHX_ regexp *prog, char *startpos)
-                       __attribute__warn_unused_result__;
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
 
 STATIC bool    S_reginclass(pTHX_ const regnode *n, const U8 *p, STRLEN *lenp, bool do_utf8sv_is_utf8)
                        __attribute__warn_unused_result__
@@ -2697,7 +2718,9 @@ STATIC bool       S_reginclass(pTHX_ const regnode *n, const U8 *p, STRLEN *lenp, bool
 STATIC CHECKPOINT      S_regcppush(pTHX_ I32 parenfloor);
 STATIC char*   S_regcppop(pTHX);
 STATIC char*   S_regcp_set_to(pTHX_ I32 ss);
-STATIC void    S_cache_re(pTHX_ regexp *prog);
+STATIC void    S_cache_re(pTHX_ regexp *prog)
+                       __attribute__nonnull__(pTHX_1);
+
 STATIC U8*     S_reghop(pTHX_ U8 *pos, I32 off)
                        __attribute__warn_unused_result__;
 
@@ -2729,11 +2752,15 @@ STATIC void     S_to_byte_substr(pTHX_ regexp * prog)
 
 #if defined(PERL_IN_DUMP_C) || defined(PERL_DECL_PROT)
 STATIC CV*     S_deb_curcv(pTHX_ I32 ix);
-STATIC void    S_debprof(pTHX_ const OP *o);
+STATIC void    S_debprof(pTHX_ const OP *o)
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 
 #if defined(PERL_IN_SCOPE_C) || defined(PERL_DECL_PROT)
-STATIC SV*     S_save_scalar_at(pTHX_ SV **sptr);
+STATIC SV*     S_save_scalar_at(pTHX_ SV **sptr)
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 
 #if defined(PERL_IN_GV_C) || defined(PERL_IN_SV_C) || defined(PERL_IN_PAD_C) || defined(PERL_DECL_PROT)
@@ -2769,10 +2796,14 @@ STATIC SV *     S_varname(pTHX_ GV *gv, const char gvtype, PADOFFSET targ, SV *keyna
                        __attribute__warn_unused_result__;
 
 #  ifdef DEBUGGING
-STATIC void    S_del_sv(pTHX_ SV *p);
+STATIC void    S_del_sv(pTHX_ SV *p)
+                       __attribute__nonnull__(pTHX_1);
+
 #  endif
 #  if !defined(NV_PRESERVES_UV)
-STATIC int     S_sv_2iuv_non_preserve(pTHX_ SV *sv, I32 numtype);
+STATIC int     S_sv_2iuv_non_preserve(pTHX_ SV *sv, I32 numtype)
+                       __attribute__nonnull__(pTHX_1);
+
 #  endif
 STATIC I32     S_expect_number(pTHX_ char** pattern)
                        __attribute__warn_unused_result__
@@ -2803,17 +2834,26 @@ STATIC void     S_sv_release_COW(pTHX_ SV *sv, const char *pvx, STRLEN len, SV *afte
 #if defined(PERL_IN_TOKE_C) || defined(PERL_DECL_PROT)
 STATIC void    S_check_uni(pTHX);
 STATIC void    S_force_next(pTHX_ I32 type);
-STATIC char*   S_force_version(pTHX_ char *start, int guessing);
-STATIC char*   S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick);
-STATIC SV*     S_tokeq(pTHX_ SV *sv);
+STATIC char*   S_force_version(pTHX_ char *start, int guessing)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_force_word(pTHX_ char *start, int token, int check_keyword, int allow_pack, int allow_tick)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC SV*     S_tokeq(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1);
+
 STATIC int     S_pending_ident(pTHX);
 STATIC char*   S_scan_const(pTHX_ char *start)
+                       __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 
 STATIC char*   S_scan_formline(pTHX_ char *s)
+                       __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 
 STATIC char*   S_scan_heredoc(pTHX_ char *s)
+                       __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1);
 
 STATIC char*   S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN destlen, I32 ck_uni)
@@ -2821,32 +2861,76 @@ STATIC char*    S_scan_ident(pTHX_ char *s, const char *send, char *dest, STRLEN de
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 
-STATIC char*   S_scan_inputsymbol(pTHX_ char *start);
-STATIC char*   S_scan_pat(pTHX_ char *start, I32 type);
-STATIC char*   S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims);
-STATIC char*   S_scan_subst(pTHX_ char *start);
-STATIC char*   S_scan_trans(pTHX_ char *start);
-STATIC char*   S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp);
-STATIC char*   S_skipspace(pTHX_ char *s);
-STATIC char*   S_swallow_bom(pTHX_ U8 *s);
+STATIC char*   S_scan_inputsymbol(pTHX_ char *start)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_scan_pat(pTHX_ char *start, I32 type)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_scan_str(pTHX_ char *start, int keep_quoted, int keep_delims)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_scan_subst(pTHX_ char *start)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_scan_trans(pTHX_ char *start)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_scan_word(pTHX_ char *s, char *dest, STRLEN destlen, int allow_package, STRLEN *slp)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_5);
+
+STATIC char*   S_skipspace(pTHX_ char *s)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC char*   S_swallow_bom(pTHX_ U8 *s)
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
+
 STATIC void    S_checkcomma(pTHX_ char *s, const char *name, const char *what)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2)
                        __attribute__nonnull__(pTHX_3);
 
-STATIC void    S_force_ident(pTHX_ const char *s, int kind);
-STATIC void    S_incline(pTHX_ char *s);
-STATIC int     S_intuit_method(pTHX_ char *s, GV *gv);
-STATIC int     S_intuit_more(pTHX_ char *s);
-STATIC I32     S_lop(pTHX_ I32 f, int x, char *s);
+STATIC void    S_force_ident(pTHX_ const char *s, int kind)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC void    S_incline(pTHX_ char *s)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC int     S_intuit_method(pTHX_ char *s, GV *gv)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
+STATIC int     S_intuit_more(pTHX_ char *s)
+                       __attribute__nonnull__(pTHX_1);
+
+STATIC I32     S_lop(pTHX_ I32 f, int x, char *s)
+                       __attribute__nonnull__(pTHX_3);
+
 STATIC void    S_missingterm(pTHX_ char *s)
                        __attribute__noreturn__;
 
-STATIC void    S_no_op(pTHX_ const char *what, char *s);
+STATIC void    S_no_op(pTHX_ const char *what, char *s)
+                       __attribute__nonnull__(pTHX_1);
+
 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 I32     S_sublex_done(pTHX)
+                       __attribute__warn_unused_result__;
+
+STATIC I32     S_sublex_push(pTHX)
+                       __attribute__warn_unused_result__;
+
+STATIC I32     S_sublex_start(pTHX)
+                       __attribute__warn_unused_result__;
+
 STATIC char *  S_filter_gets(pTHX_ SV *sv, PerlIO *fp, STRLEN append)
                        __attribute__warn_unused_result__
                        __attribute__nonnull__(pTHX_1)
@@ -2858,7 +2942,9 @@ STATIC HV *       S_find_in_my_stash(pTHX_ const char *pkgname, I32 len)
 
 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);
+STATIC int     S_tokereport(pTHX_ const char *s, I32 rv)
+                       __attribute__nonnull__(pTHX_1);
+
 #  endif
 STATIC int     S_ao(pTHX_ int toketype);
 STATIC void    S_depcom(pTHX);
@@ -2873,7 +2959,9 @@ STATIC I32        S_cr_textfilter(pTHX_ int idx, SV *sv, int maxlen);
 #endif
 
 #if defined(PERL_IN_UNIVERSAL_C) || defined(PERL_DECL_PROT)
-STATIC SV*     S_isa_lookup(pTHX_ HV *stash, const char *name, HV *name_stash, int len, int level);
+STATIC SV*     S_isa_lookup(pTHX_ HV *stash, const char *name, HV *name_stash, int len, int level)
+                       __attribute__nonnull__(pTHX_2);
+
 #endif
 
 #if defined(PERL_IN_LOCALE_C) || defined(PERL_DECL_PROT)
@@ -2918,7 +3006,9 @@ PERL_CALLCONV void        Perl_sv_catsv_flags(pTHX_ SV* dsv, SV* ssv, I32 flags)
 PERL_CALLCONV STRLEN   Perl_sv_utf8_upgrade_flags(pTHX_ SV *sv, I32 flags)
                        __attribute__nonnull__(pTHX_1);
 
-PERL_CALLCONV char*    Perl_sv_pvn_force_flags(pTHX_ SV* sv, STRLEN* lp, I32 flags);
+PERL_CALLCONV char*    Perl_sv_pvn_force_flags(pTHX_ SV* sv, STRLEN* lp, I32 flags)
+                       __attribute__nonnull__(pTHX_1);
+
 PERL_CALLCONV void     Perl_sv_copypv(pTHX_ SV* dsv, SV* ssv)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -2929,7 +3019,10 @@ PERL_CALLCONV char*      Perl_my_atof2(pTHX_ const char *s, NV* value)
 
 PERL_CALLCONV int      Perl_my_socketpair(int family, int type, int protocol, int fd[2]);
 #ifdef PERL_OLD_COPY_ON_WRITE
-PERL_CALLCONV SV*      Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv);
+PERL_CALLCONV SV*      Perl_sv_setsv_cow(pTHX_ SV* dsv, SV* ssv)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+
 #endif
 
 #if defined(USE_PERLIO) && !defined(USE_SFIO)
@@ -2966,9 +3059,15 @@ 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);
-PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX);
+PERL_CALLCONV PerlIO * Perl_PerlIO_stdin(pTHX)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV PerlIO * Perl_PerlIO_stdout(pTHX)
+                       __attribute__warn_unused_result__;
+
+PERL_CALLCONV PerlIO * Perl_PerlIO_stderr(pTHX)
+                       __attribute__warn_unused_result__;
+
 #endif /* PERLIO_LAYERS */
 
 PERL_CALLCONV void     Perl_deb_stack_all(pTHX);
@@ -3006,7 +3105,9 @@ PERL_CALLCONV void        Perl_do_dump_pad(pTHX_ I32 level, PerlIO *file, PADLIST *padl
                        __attribute__nonnull__(pTHX_2);
 
 PERL_CALLCONV void     Perl_pad_fixup_inner_anons(pTHX_ PADLIST *padlist, CV *old_cv, CV *new_cv)
-                       __attribute__nonnull__(pTHX_1);
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2)
+                       __attribute__nonnull__(pTHX_3);
 
 
 PERL_CALLCONV void     Perl_pad_push(pTHX_ PADLIST *padlist, int depth)
@@ -3036,7 +3137,8 @@ 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)
-                       __attribute__warn_unused_result__;
+                       __attribute__warn_unused_result__
+                       __attribute__nonnull__(pTHX_1);
 
 #endif
 PERL_CALLCONV void     Perl_save_set_svflags(pTHX_ SV* sv, U32 mask, U32 val);
@@ -3184,7 +3286,9 @@ PERL_CALLCONV bool        Perl_stashpv_hvname_match(pTHX_ const COP *cop, const HV *hv)
 
 
 #ifdef DEBUG_LEAKING_SCALARS_FORK_DUMP
-PERL_CALLCONV void     Perl_dump_sv_child(pTHX_ SV *sv);
+PERL_CALLCONV void     Perl_dump_sv_child(pTHX_ SV *sv)
+                       __attribute__nonnull__(pTHX_1);
+
 #endif
 
 #ifdef PERL_DONT_CREATE_GVSV
diff --git a/toke.c b/toke.c
index 33ec2c4..ae56a6f 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -9085,7 +9085,7 @@ S_scan_ident(pTHX_ register char *s, register const char *send, char *dest, STRL
 {
     register char *d;
     register char *e;
-    char *bracket = 0;
+    char *bracket = Nullch;
     char funny = *s++;
 
     if (isSPACE(*s))
@@ -9263,7 +9263,7 @@ S_scan_pat(pTHX_ char *start, I32 type)
     char *s = scan_str(start,FALSE,FALSE);
 
     if (!s) {
-       char *delimiter = skipspace(start);
+       char * const delimiter = skipspace(start);
        Perl_croak(aTHX_ *delimiter == '?'
                   ? "Search pattern not terminated or ternary operator parsed as search pattern"
                   : "Search pattern not terminated" );