This is a live mirror of the Perl 5 development currently hosted at
embed.fnc: Remove pure declaration for fcns that deal with SVs
authorKarl Williamson <>
Mon, 12 Dec 2016 21:50:34 +0000 (14:50 -0700)
committerKarl Williamson <>
Wed, 14 Dec 2016 17:45:02 +0000 (10:45 -0700)
These aren't actually pure, as dealing with SVs can trigger side
effects, including processing of magic.


index f2cda86..c054f56 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -1939,7 +1939,7 @@ Apdmb     |void   |sv_force_normal|NN SV *sv
 Apd    |void   |sv_force_normal_flags|NN SV *const sv|const U32 flags
 pX     |SSize_t|tmps_grow_p    |SSize_t ix
 Apd    |SV*    |sv_rvweaken    |NN SV *const sv
-AnpPMd |SV*    |sv_get_backrefs|NN SV *const sv
+AnpMd  |SV*    |sv_get_backrefs|NN SV *const sv
 : This is indirectly referenced by globals.c. This is somewhat annoying.
 p      |int    |magic_killbackrefs|NN SV *sv|NN MAGIC *mg
 Ap     |OP*    |newANONATTRSUB |I32 floor|NULLOK OP *proto|NULLOK OP *attrs|NULLOK OP *block
@@ -1992,7 +1992,7 @@ Ap        |void   |sys_intern_dup |NN struct interp_intern* src|NN struct interp_intern*
 #  endif
-AmopP  |const XOP *    |custom_op_xop  |NN const OP *o
+Amop   |const XOP *    |custom_op_xop  |NN const OP *o
 ApR    |const char *   |custom_op_name |NN const OP *o
 ApR    |const char *   |custom_op_desc |NN const OP *o
 pRX    |XOPRETANY      |custom_op_get_field    |NN const OP *o|const xop_flags_enum field
diff --git a/proto.h b/proto.h
index 8a2c9d6..f8e2143 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -591,10 +591,7 @@ PERL_CALLCONV const char * Perl_custom_op_name(pTHX_ const OP *o)
 PERL_CALLCONV void     Perl_custom_op_register(pTHX_ Perl_ppaddr_t ppaddr, const XOP *xop);
        assert(ppaddr); assert(xop)
-/* PERL_CALLCONV const XOP *   Perl_custom_op_xop(pTHX_ const OP *o)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__; */
+/* PERL_CALLCONV const XOP *   Perl_custom_op_xop(pTHX_ const OP *o); */
 PERL_CALLCONV void     Perl_cv_ckproto_len_flags(pTHX_ const CV* cv, const GV* gv, const char* p, const STRLEN len, const U32 flags);
@@ -3071,12 +3068,9 @@ PERL_CALLCONV void       Perl_sv_free2(pTHX_ SV *const sv, const U32 refcnt);
 #define PERL_ARGS_ASSERT_SV_FREE2      \
 PERL_CALLCONV void     Perl_sv_free_arenas(pTHX);
-PERL_CALLCONV SV*      Perl_sv_get_backrefs(SV *const sv)
-                       __attribute__warn_unused_result__
-                       __attribute__pure__;
+PERL_CALLCONV SV*      Perl_sv_get_backrefs(SV *const sv);
 PERL_CALLCONV char*    Perl_sv_gets(pTHX_ SV *const sv, PerlIO *const fp, I32 append);
 #define PERL_ARGS_ASSERT_SV_GETS       \
        assert(sv); assert(fp)