In perl.git, the branch blead has been updated <http://perl5.git.perl.org/perl.git/commitdiff/bb6a367ad5d39a6d163bda06f6788f8e7833b713?hp=fd2709db56c97e05ef8ae1f7c0f586d6f61103c2>
- Log ----------------------------------------------------------------- commit bb6a367ad5d39a6d163bda06f6788f8e7833b713 Author: Daniel Dragan <[email protected]> Date: Sat Nov 15 23:45:19 2014 -0500 misc optimizing in DynaLoader dl_last_error is "#define dl_last_error (SvPVX(MY_CXT.x_dl_last_error))" since the data is already in a SV *, use newSVsv instead of turning it into a strlen-ed (eventually) char *. -win32 dl_load_file never uses flags, so don't do a SvIV in void context - dl_load_file cant use "flags=NULL" because of test "calling DynaLoader::dl_load_file() with no argument" in DynaLoader.t -OS_Error_String stop repeatedly computing address into MY_CXT and derefing after PerlProc_GetOSError function sizes in machine code bytes on VC 2003 b4 0x69 OS_Error_String af 0x67 b4 0x9D _XS_DynaLoader_dl_error af 0x6B b4 0x108 _XS_DynaLoader_dl_load_file af 0xD6 M ext/DynaLoader/DynaLoader_pm.PL M ext/DynaLoader/dl_aix.xs M ext/DynaLoader/dl_dllload.xs M ext/DynaLoader/dl_dlopen.xs M ext/DynaLoader/dl_dyld.xs M ext/DynaLoader/dl_freemint.xs M ext/DynaLoader/dl_hpux.xs M ext/DynaLoader/dl_symbian.xs M ext/DynaLoader/dl_vms.xs M ext/DynaLoader/dl_win32.xs M ext/DynaLoader/dlutils.c M pod/perldelta.pod commit f8d5a52263698f3448751c5ac18d2b5edac28b36 Author: Daniel Dragan <[email protected]> Date: Sat Nov 15 21:00:16 2014 -0500 readd noreturn and silence "noreturn that returns" warning on MSVC Based on commit 73758d77 (by me), in commit 117af67d629 more things got noreturn removed on MSVC. See also ML post "(Hugmeir) Re: [perl.git] branch blead, updated. v5.21.0-377-gdc3bf40" This caused a measurable increase in machine code size in 117af67d629 . In commit 73758d77 , the reason there was no increase is Perl_magic_regdatum_set is called only through a magic vtable. Optimizing this to noreturn is forbidden unless the struct member type specifies it (and it obviously doesn't, since this is the magic vtable). The other not-noreturn on MSVC function, Perl_screaminstr, has no core usage (its only reference is in the export table) or CPAN grep usage so therefore it is being removed. It was made fatal in commit 9e3f0d16db . before .text section of perl521.dll on VC 2003 32b, 0xc66a3 bytes, after 0xc6453 M embed.fnc M embed.h M pod/perldelta.pod M proto.h M util.c commit c1f06047c0ded9ef04cacab9735c6c65fa803b18 Author: Father Chrysostomos <[email protected]> Date: Sat Nov 15 17:39:08 2014 -0800 perldiag: Correct âCan't use %s for loop variableâ It is no longer true that the variable can only be a simple scalar. More to the point, this message should never be reached. If you try to use something prohibited as your loop variable, you get a syntax error or âMissing $â. M pod/perldiag.pod commit 15e6c899987f354dd90584eb3d5acc4257c60e3a Author: Father Chrysostomos <[email protected]> Date: Sat Nov 15 17:26:42 2014 -0800 op.c: cmmoent typo M op.c commit 89183700b771feabc9aa03f0bd3415fb3b9b9c6d Author: Father Chrysostomos <[email protected]> Date: Sat Nov 15 17:09:18 2014 -0800 op.c: Correct comment added by c427f4d2d M op.c ----------------------------------------------------------------------- Summary of changes: embed.fnc | 22 ++-------------- embed.h | 25 ++++-------------- ext/DynaLoader/DynaLoader_pm.PL | 2 +- ext/DynaLoader/dl_aix.xs | 4 +-- ext/DynaLoader/dl_dllload.xs | 4 +-- ext/DynaLoader/dl_dlopen.xs | 4 +-- ext/DynaLoader/dl_dyld.xs | 4 +-- ext/DynaLoader/dl_freemint.xs | 7 +++-- ext/DynaLoader/dl_hpux.xs | 4 +-- ext/DynaLoader/dl_symbian.xs | 4 +-- ext/DynaLoader/dl_vms.xs | 6 ++--- ext/DynaLoader/dl_win32.xs | 29 ++++++++++++++------- ext/DynaLoader/dlutils.c | 3 ++- op.c | 4 +-- pod/perldelta.pod | 8 +++++- pod/perldiag.pod | 3 +-- proto.h | 58 ++++++++++------------------------------- util.c | 47 +++++++++++++++++++++------------ 18 files changed, 101 insertions(+), 137 deletions(-) diff --git a/embed.fnc b/embed.fnc index 9f3539e..77ceca8 100644 --- a/embed.fnc +++ b/embed.fnc @@ -281,12 +281,7 @@ norx |void |win32_croak_not_implemented|NN const char * fname #endif #if defined(PERL_IMPLICIT_CONTEXT) Afnrp |void |croak_nocontext|NULLOK const char* pat|... -:removing noreturn to silence a warning -#ifdef _MSC_VER -Afnp |OP* |die_nocontext |NULLOK const char* pat|... -#else Afnrp |OP* |die_nocontext |NULLOK const char* pat|... -#endif Afnp |void |deb_nocontext |NN const char* pat|... Afnp |char* |form_nocontext |NN const char* pat|... Anp |void |load_module_nocontext|U32 flags|NN SV* name|NULLOK SV* ver|... @@ -343,14 +338,8 @@ Anp |char* |delimcpy |NN char* to|NN const char* toend|NN const char* from \ |NN const char* fromend|int delim|NN I32* retlen : Used in op.c, perl.c pM |void |delete_eval_scope -:removing noreturn to silence a warning -#ifdef _MSC_VER -Apd |OP* |die_sv |NN SV *baseex -Afpd |OP* |die |NULLOK const char* pat|... -#else Aprd |OP* |die_sv |NN SV *baseex Afrpd |OP* |die |NULLOK const char* pat|... -#endif : Used in util.c pr |void |die_unwind |NN SV* msv Ap |void |dounwind |I32 cxix @@ -850,7 +839,8 @@ p |int |magic_nextpack |NN SV *sv|NN MAGIC *mg|NN SV *key p |U32 |magic_regdata_cnt|NN SV* sv|NN MAGIC* mg p |int |magic_regdatum_get|NN SV* sv|NN MAGIC* mg :removing noreturn to silence a warning for this function resulted in no -:change to the interpreter DLL image under VS 2003 -O1 -GL 32 bits +:change to the interpreter DLL image under VS 2003 -O1 -GL 32 bits only because +:this is used in a magic vtable, do not use this on conventionally called funcs #ifdef _MSC_VER p |int |magic_regdatum_set|NN SV* sv|NN MAGIC* mg #else @@ -1322,14 +1312,6 @@ Apd |NV |scan_hex |NN const char* start|STRLEN len|NN STRLEN* retlen Ap |char* |scan_num |NN const char* s|NN YYSTYPE *lvalp Apd |NV |scan_oct |NN const char* start|STRLEN len|NN STRLEN* retlen AMpd |OP* |op_scope |NULLOK OP* o -:removing noreturn to silence a warning -#ifdef _MSC_VER -Ap |char* |screaminstr |NN SV *bigstr|NN SV *littlestr|I32 start_shift \ - |I32 end_shift|NN I32 *old_posp|I32 last -#else -Apr |char* |screaminstr |NN SV *bigstr|NN SV *littlestr|I32 start_shift \ - |I32 end_shift|NN I32 *old_posp|I32 last -#endif : Only used by perl.c/miniperl.c, but defined in caretx.c px |void |set_caret_X Apd |void |setdefout |NN GV* gv diff --git a/embed.h b/embed.h index 32ef097..7fddb5d 100644 --- a/embed.h +++ b/embed.h @@ -117,6 +117,10 @@ #define debstackptrs() Perl_debstackptrs(aTHX) #define delimcpy Perl_delimcpy #define despatch_signals() Perl_despatch_signals(aTHX) +#ifndef PERL_IMPLICIT_CONTEXT +#define die Perl_die +#endif +#define die_sv(a) Perl_die_sv(aTHX_ a) #define do_binmode(a,b,c) Perl_do_binmode(aTHX_ a,b,c) #define do_close(a,b) Perl_do_close(aTHX_ a,b) #define do_gv_dump(a,b,c,d) Perl_do_gv_dump(aTHX_ a,b,c,d) @@ -750,16 +754,6 @@ #if !(defined(NO_MATHOMS)) #define sv_nounlocking(a) Perl_sv_nounlocking(aTHX_ a) #endif -#if !(defined(_MSC_VER)) -#ifndef PERL_IMPLICIT_CONTEXT -#define die Perl_die -#endif -#define die_sv(a) Perl_die_sv(aTHX_ a) -#define screaminstr(a,b,c,d,e,f) Perl_screaminstr(aTHX_ a,b,c,d,e,f) -# if defined(PERL_IMPLICIT_CONTEXT) -#define die_nocontext Perl_die_nocontext -# endif -#endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) #define my_bzero Perl_my_bzero #endif @@ -805,6 +799,7 @@ #if defined(PERL_IMPLICIT_CONTEXT) #define croak_nocontext Perl_croak_nocontext #define deb_nocontext Perl_deb_nocontext +#define die_nocontext Perl_die_nocontext #define form_nocontext Perl_form_nocontext #define fprintf_nocontext Perl_fprintf_nocontext #define load_module_nocontext Perl_load_module_nocontext @@ -817,9 +812,6 @@ #define sv_setpvf_nocontext Perl_sv_setpvf_nocontext #define warn_nocontext Perl_warn_nocontext #define warner_nocontext Perl_warner_nocontext -# if defined(_MSC_VER) -#define die_nocontext Perl_die_nocontext -# endif #endif #if defined(PERL_IN_REGCOMP_C) || defined(PERL_IN_PERL_C) || defined(PERL_IN_UTF8_C) #define _new_invlist_C_array(a) Perl__new_invlist_C_array(aTHX_ a) @@ -896,13 +888,6 @@ #define do_spawn(a) Perl_do_spawn(aTHX_ a) #define do_spawn_nowait(a) Perl_do_spawn_nowait(aTHX_ a) #endif -#if defined(_MSC_VER) -#ifndef PERL_IMPLICIT_CONTEXT -#define die Perl_die -#endif -#define die_sv(a) Perl_die_sv(aTHX_ a) -#define screaminstr(a,b,c,d,e,f) Perl_screaminstr(aTHX_ a,b,c,d,e,f) -#endif #if defined(PERL_CORE) || defined(PERL_EXT) #define av_reify(a) Perl_av_reify(aTHX_ a) #define current_re_engine() Perl_current_re_engine(aTHX) diff --git a/ext/DynaLoader/DynaLoader_pm.PL b/ext/DynaLoader/DynaLoader_pm.PL index e3df1cd..2809e46 100644 --- a/ext/DynaLoader/DynaLoader_pm.PL +++ b/ext/DynaLoader/DynaLoader_pm.PL @@ -85,7 +85,7 @@ package DynaLoader; # [email protected], August 1994 BEGIN { - $VERSION = '1.27'; + $VERSION = '1.28'; } use Config; diff --git a/ext/DynaLoader/dl_aix.xs b/ext/DynaLoader/dl_aix.xs index 548e4ed..dc20b74 100644 --- a/ext/DynaLoader/dl_aix.xs +++ b/ext/DynaLoader/dl_aix.xs @@ -759,11 +759,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") XS_DYNAMIC_FILENAME))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error ; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_dllload.xs b/ext/DynaLoader/dl_dllload.xs index ff0c7a9..1f99b61 100644 --- a/ext/DynaLoader/dl_dllload.xs +++ b/ext/DynaLoader/dl_dllload.xs @@ -184,11 +184,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") XSRETURN(1); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error ; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_dlopen.xs b/ext/DynaLoader/dl_dlopen.xs index 2759709..c3df9ea 100644 --- a/ext/DynaLoader/dl_dlopen.xs +++ b/ext/DynaLoader/dl_dlopen.xs @@ -259,11 +259,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") XS_DYNAMIC_FILENAME))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error ; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_dyld.xs b/ext/DynaLoader/dl_dyld.xs index 2ed10bb..3027dda 100644 --- a/ext/DynaLoader/dl_dyld.xs +++ b/ext/DynaLoader/dl_dyld.xs @@ -213,11 +213,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") XS_DYNAMIC_FILENAME))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error ; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_freemint.xs b/ext/DynaLoader/dl_freemint.xs index f154dcb..0bf620e 100644 --- a/ext/DynaLoader/dl_freemint.xs +++ b/ext/DynaLoader/dl_freemint.xs @@ -191,12 +191,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") XS_DYNAMIC_FILENAME))); XSRETURN(1); -char * +SV * dl_error() - PREINIT: - dMY_CXT; CODE: - RETVAL = dl_last_error ; + dMY_CXT; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_hpux.xs b/ext/DynaLoader/dl_hpux.xs index 6c7b3e4..2844d2a 100644 --- a/ext/DynaLoader/dl_hpux.xs +++ b/ext/DynaLoader/dl_hpux.xs @@ -171,11 +171,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") filename, NULL, XS_DYNAMIC_FILENAME))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error ; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_symbian.xs b/ext/DynaLoader/dl_symbian.xs index b509a6a..c17f397 100644 --- a/ext/DynaLoader/dl_symbian.xs +++ b/ext/DynaLoader/dl_symbian.xs @@ -213,11 +213,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") XS_DYNAMIC_FILENAME))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dl_vms.xs b/ext/DynaLoader/dl_vms.xs index 23cf11b..bc9782c 100644 --- a/ext/DynaLoader/dl_vms.xs +++ b/ext/DynaLoader/dl_vms.xs @@ -347,13 +347,13 @@ dl_install_xsub(perl_name, symref, filename="$Package") XS_DYNAMIC_FILENAME))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error ; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: - RETVAL + RETVAL #if defined(USE_ITHREADS) diff --git a/ext/DynaLoader/dl_win32.xs b/ext/DynaLoader/dl_win32.xs index ac59e11..178ca7c 100644 --- a/ext/DynaLoader/dl_win32.xs +++ b/ext/DynaLoader/dl_win32.xs @@ -47,10 +47,13 @@ OS_Error_String(pTHX) dMY_CXT; DWORD err = GetLastError(); STRLEN len; - if (!dl_error_sv) - dl_error_sv = newSVpvs(""); - PerlProc_GetOSError(dl_error_sv,err); - return SvPV(dl_error_sv,len); + SV ** l_dl_error_svp = &dl_error_sv; + SV * l_dl_error_sv; + if (!*l_dl_error_svp) + *l_dl_error_svp = newSVpvs(""); + l_dl_error_sv = *l_dl_error_svp; + PerlProc_GetOSError(l_dl_error_sv,err); + return SvPV(l_dl_error_sv,len); } static void @@ -114,11 +117,14 @@ BOOT: void dl_load_file(filename,flags=0) char * filename - int flags +#flags is unused + SV * flags = NO_INIT PREINIT: void *retv; + SV * retsv; CODE: { + PERL_UNUSED_VAR(flags); DLDEBUG(1,PerlIO_printf(Perl_debug_log,"dl_load_file(%s):\n", filename)); if (dl_static_linked(filename) == 0) { retv = PerlProc_DynaLoad(filename); @@ -126,12 +132,15 @@ dl_load_file(filename,flags=0) else retv = (void*) Win_GetModuleHandle(NULL); DLDEBUG(2,PerlIO_printf(Perl_debug_log," libref=%x\n", retv)); - ST(0) = sv_newmortal() ; - if (retv == NULL) + + if (retv == NULL) { SaveError(aTHX_ "load_file:%s", OS_Error_String(aTHX)) ; + retsv = &PL_sv_undef; + } else - sv_setiv( ST(0), (IV)retv); + retsv = sv_2mortal(newSViv((IV)retv)); + ST(0) = retsv; } int @@ -186,11 +195,11 @@ dl_install_xsub(perl_name, symref, filename="$Package") filename))); -char * +SV * dl_error() CODE: dMY_CXT; - RETVAL = dl_last_error; + RETVAL = newSVsv(MY_CXT.x_dl_last_error); OUTPUT: RETVAL diff --git a/ext/DynaLoader/dlutils.c b/ext/DynaLoader/dlutils.c index f8b23cc..96ea8be 100644 --- a/ext/DynaLoader/dlutils.c +++ b/ext/DynaLoader/dlutils.c @@ -79,12 +79,13 @@ dl_unload_all_files(pTHX_ void *unused) if ((sub = get_cvs("DynaLoader::dl_unload_file", 0)) != NULL) { dl_librefs = get_av("DynaLoader::dl_librefs", 0); + EXTEND(SP,1); while ((dl_libref = av_pop(dl_librefs)) != &PL_sv_undef) { dSP; ENTER; SAVETMPS; PUSHMARK(SP); - XPUSHs(sv_2mortal(dl_libref)); + PUSHs(sv_2mortal(dl_libref)); PUTBACK; call_sv((SV*)sub, G_DISCARD | G_NODEBUG); FREETMPS; diff --git a/op.c b/op.c index 98d6ff3..00c1255 100644 --- a/op.c +++ b/op.c @@ -4138,7 +4138,7 @@ S_fold_constants(pTHX_ OP *o) StructCopy(&PL_compiling, ¬_compiling, COP); PL_curcop = ¬_compiling; /* The above ensures that we run with all the correct hints of the - currently compiling COP, but that IN_PERL_RUNTIME is not true. */ + currently compiling COP, but that IN_PERL_RUNTIME is true. */ assert(IN_PERL_RUNTIME); PL_warnhook = PERL_WARNHOOK_FATAL; PL_diehook = NULL; @@ -6098,7 +6098,7 @@ S_assignment_type(pTHX_ const OP *o) } /* - Helper function for newASSIGNOP to detection commonality between the + Helper function for newASSIGNOP to detect commonality between the lhs and the rhs. (It is actually called very indirectly. newASSIGNOP flags the op and the peephole optimizer calls this helper function if the flag is set.) Marks all variables with PL_generation. If it diff --git a/pod/perldelta.pod b/pod/perldelta.pod index c893a8e..793cc83 100644 --- a/pod/perldelta.pod +++ b/pod/perldelta.pod @@ -144,6 +144,10 @@ L<IO::Socket> has been upgraded from version 1.37 to 1.38. Document the limitations of the isconnected() method. [perl #123096] +=item * + +L<DynaLoader> has been upgraded from version 1.27 to 1.28. + =back =head2 Removed Modules and Pragmata @@ -383,7 +387,9 @@ well. =item * -XXX +C<screaminstr> has been removed. Although marked as public API, it is +undocumented and has no usage in modern perl versions on CPAN Grep. Calling it +has been fatal since 5.17.0. =back diff --git a/pod/perldiag.pod b/pod/perldiag.pod index 3ba649f..d9dd692 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -1355,8 +1355,7 @@ it's loaded, etc. =item Can't use %s for loop variable -(F) Only a simple scalar variable may be used as a loop variable on a -foreach. +(P) The parser got confused when trying to parse a C<foreach> loop. =item Can't use global %s in "%s" diff --git a/proto.h b/proto.h index 03a36f0..656d6b4 100644 --- a/proto.h +++ b/proto.h @@ -904,6 +904,16 @@ PERL_CALLCONV char* Perl_delimcpy(char* to, const char* toend, const char* from, assert(to); assert(toend); assert(from); assert(fromend); assert(retlen) PERL_CALLCONV void Perl_despatch_signals(pTHX); +PERL_CALLCONV_NO_RET OP* Perl_die(pTHX_ const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); + +PERL_CALLCONV_NO_RET OP* Perl_die_sv(pTHX_ SV *baseex) + __attribute__noreturn__ + __attribute__nonnull__(pTHX_1); +#define PERL_ARGS_ASSERT_DIE_SV \ + assert(baseex) + PERL_CALLCONV_NO_RET void Perl_die_unwind(pTHX_ SV* msv) __attribute__noreturn__ __attribute__nonnull__(pTHX_1); @@ -5232,16 +5242,6 @@ PERL_CALLCONV void* Perl_my_cxt_init(pTHX_ int *index, size_t size) #endif #if !(defined(_MSC_VER)) -PERL_CALLCONV_NO_RET OP* Perl_die(pTHX_ const char* pat, ...) - __attribute__noreturn__ - __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); - -PERL_CALLCONV_NO_RET OP* Perl_die_sv(pTHX_ SV *baseex) - __attribute__noreturn__ - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DIE_SV \ - assert(baseex) - PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__noreturn__ __attribute__nonnull__(pTHX_1) @@ -5249,20 +5249,6 @@ PERL_CALLCONV_NO_RET int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) #define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \ assert(sv); assert(mg) -PERL_CALLCONV_NO_RET char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) - __attribute__noreturn__ - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_SCREAMINSTR \ - assert(bigstr); assert(littlestr); assert(old_posp) - -# if defined(PERL_IMPLICIT_CONTEXT) -PERL_CALLCONV_NO_RET OP* Perl_die_nocontext(const char* pat, ...) - __attribute__noreturn__ - __attribute__format__null_ok__(__printf__,1,2); - -# endif #endif #if !defined(HAS_BZERO) && !defined(HAS_MEMSET) PERL_CALLCONV char* Perl_my_bzero(char* loc, I32 len) @@ -5765,6 +5751,10 @@ PERL_CALLCONV void Perl_deb_nocontext(const char* pat, ...) #define PERL_ARGS_ASSERT_DEB_NOCONTEXT \ assert(pat) +PERL_CALLCONV_NO_RET OP* Perl_die_nocontext(const char* pat, ...) + __attribute__noreturn__ + __attribute__format__null_ok__(__printf__,1,2); + PERL_CALLCONV char* Perl_form_nocontext(const char* pat, ...) __attribute__format__(__printf__,1,2) __attribute__nonnull__(1); @@ -5841,11 +5831,6 @@ PERL_CALLCONV void Perl_warner_nocontext(U32 err, const char* pat, ...) #define PERL_ARGS_ASSERT_WARNER_NOCONTEXT \ assert(pat) -# if defined(_MSC_VER) -PERL_CALLCONV OP* Perl_die_nocontext(const char* pat, ...) - __attribute__format__null_ok__(__printf__,1,2); - -# endif #endif #if defined(PERL_IMPLICIT_SYS) PERL_CALLCONV PerlInterpreter* perl_alloc_using(struct IPerlMem *ipM, struct IPerlMem *ipMS, struct IPerlMem *ipMP, struct IPerlEnv *ipE, struct IPerlStdIO *ipStd, struct IPerlLIO *ipLIO, struct IPer ... [56 chars truncated] @@ -8205,27 +8190,12 @@ PERL_CALLCONV int Perl_do_spawn_nowait(pTHX_ char* cmd) #endif #if defined(_MSC_VER) -PERL_CALLCONV OP* Perl_die(pTHX_ const char* pat, ...) - __attribute__format__null_ok__(__printf__,pTHX_1,pTHX_2); - -PERL_CALLCONV OP* Perl_die_sv(pTHX_ SV *baseex) - __attribute__nonnull__(pTHX_1); -#define PERL_ARGS_ASSERT_DIE_SV \ - assert(baseex) - PERL_CALLCONV int Perl_magic_regdatum_set(pTHX_ SV* sv, MAGIC* mg) __attribute__nonnull__(pTHX_1) __attribute__nonnull__(pTHX_2); #define PERL_ARGS_ASSERT_MAGIC_REGDATUM_SET \ assert(sv); assert(mg) -PERL_CALLCONV char* Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) - __attribute__nonnull__(pTHX_1) - __attribute__nonnull__(pTHX_2) - __attribute__nonnull__(pTHX_5); -#define PERL_ARGS_ASSERT_SCREAMINSTR \ - assert(bigstr); assert(littlestr); assert(old_posp) - #endif #ifdef PERL_CORE # include "pp_proto.h" diff --git a/util.c b/util.c index 49faf9b..35ab087 100644 --- a/util.c +++ b/util.c @@ -917,23 +917,6 @@ Perl_fbm_instr(pTHX_ unsigned char *big, unsigned char *bigend, SV *littlestr, U } } -char * -Perl_screaminstr(pTHX_ SV *bigstr, SV *littlestr, I32 start_shift, I32 end_shift, I32 *old_posp, I32 last) -{ - PERL_ARGS_ASSERT_SCREAMINSTR; - PERL_UNUSED_ARG(bigstr); - PERL_UNUSED_ARG(littlestr); - PERL_UNUSED_ARG(start_shift); - PERL_UNUSED_ARG(end_shift); - PERL_UNUSED_ARG(old_posp); - PERL_UNUSED_ARG(last); - - /* This function must only ever be called on a scalar with study magic, - but those do not happen any more. */ - Perl_croak(aTHX_ "panic: screaminstr"); - NORETURN_FUNCTION_END; -} - /* =for apidoc foldEQ @@ -1565,6 +1548,13 @@ The function never actually returns. =cut */ +#ifdef _MSC_VER +# pragma warning( push ) +# pragma warning( disable : 4646 ) /* warning C4646: function declared with + __declspec(noreturn) has non-void return type */ +# pragma warning( disable : 4645 ) /* warning C4645: function declared with +__declspec(noreturn) has a return statement */ +#endif OP * Perl_die_sv(pTHX_ SV *baseex) { @@ -1573,6 +1563,9 @@ Perl_die_sv(pTHX_ SV *baseex) assert(0); /* NOTREACHED */ NORETURN_FUNCTION_END; } +#ifdef _MSC_VER +# pragma warning( pop ) +#endif /* =for apidoc Am|OP *|die|const char *pat|... @@ -1585,6 +1578,13 @@ The function never actually returns. */ #if defined(PERL_IMPLICIT_CONTEXT) +#ifdef _MSC_VER +# pragma warning( push ) +# pragma warning( disable : 4646 ) /* warning C4646: function declared with + __declspec(noreturn) has non-void return type */ +# pragma warning( disable : 4645 ) /* warning C4645: function declared with +__declspec(noreturn) has a return statement */ +#endif OP * Perl_die_nocontext(const char* pat, ...) { @@ -1596,8 +1596,18 @@ Perl_die_nocontext(const char* pat, ...) va_end(args); NORETURN_FUNCTION_END; } +#ifdef _MSC_VER +# pragma warning( pop ) +#endif #endif /* PERL_IMPLICIT_CONTEXT */ +#ifdef _MSC_VER +# pragma warning( push ) +# pragma warning( disable : 4646 ) /* warning C4646: function declared with + __declspec(noreturn) has non-void return type */ +# pragma warning( disable : 4645 ) /* warning C4645: function declared with +__declspec(noreturn) has a return statement */ +#endif OP * Perl_die(pTHX_ const char* pat, ...) { @@ -1608,6 +1618,9 @@ Perl_die(pTHX_ const char* pat, ...) va_end(args); NORETURN_FUNCTION_END; } +#ifdef _MSC_VER +# pragma warning( pop ) +#endif /* =for apidoc Am|void|croak_sv|SV *baseex -- Perl5 Master Repository
