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, &not_compiling, COP);
     PL_curcop = &not_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

Reply via email to