This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
embed.fnc: Mark some functions as pure
authorKarl Williamson <khw@cpan.org>
Mon, 12 Dec 2016 16:38:24 +0000 (09:38 -0700)
committerKarl Williamson <khw@cpan.org>
Wed, 14 Dec 2016 17:45:03 +0000 (10:45 -0700)
Some of these were identified by me, and some by Andy Lester

embed.fnc
proto.h

index c054f56..ca15006 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -677,9 +677,9 @@ ApbmM       |SV**   |hv_store_flags |NULLOK HV *hv|NULLOK const char *key \
                                |I32 klen|NULLOK SV *val|U32 hash|int flags
 Amd    |void   |hv_undef       |NULLOK HV *hv
 poX    |void   |hv_undef_flags |NULLOK HV *hv|U32 flags
-Am     |I32    |ibcmp          |NN const char* a|NN const char* b|I32 len
+AmP    |I32    |ibcmp          |NN const char* a|NN const char* b|I32 len
 AnpP   |I32    |foldEQ         |NN const char* a|NN const char* b|I32 len
-Am     |I32    |ibcmp_locale   |NN const char* a|NN const char* b|I32 len
+AmP    |I32    |ibcmp_locale   |NN const char* a|NN const char* b|I32 len
 AnpP   |I32    |foldEQ_locale  |NN const char* a|NN const char* b|I32 len
 Am     |I32    |ibcmp_utf8     |NN const char *s1|NULLOK char **pe1|UV l1 \
                                |bool u1|NN const char *s2|NULLOK char **pe2 \
@@ -2934,8 +2934,8 @@ Apbm      |GV*    |gv_SVadd       |NULLOK GV *gv
 #if defined(PERL_IN_UTIL_C)
 s      |bool   |ckwarn_common  |U32 w
 #endif
-Apo    |bool   |ckwarn         |U32 w
-Apo    |bool   |ckwarn_d       |U32 w
+ApoP   |bool   |ckwarn         |U32 w
+ApoP   |bool   |ckwarn_d       |U32 w
 : FIXME - exported for ByteLoader - public or private?
 XEopMR |STRLEN *|new_warnings_bitfield|NULLOK STRLEN *buffer \
                                |NN const char *const bits|STRLEN size
@@ -2977,7 +2977,7 @@ Apnod     |Size_t |my_strlcat     |NULLOK char *dst|NULLOK const char *src|Size_t size
 Apnod  |Size_t |my_strlcpy     |NULLOK char *dst|NULLOK const char *src|Size_t size
 #endif
 
-Apdn   |bool   |isinfnan       |NV nv
+APpdn  |bool   |isinfnan       |NV nv
 p      |bool   |isinfnansv     |NN SV *sv
 
 #if !defined(HAS_SIGNBIT)
diff --git a/proto.h b/proto.h
index f8e2143..7fcb579 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -521,8 +521,14 @@ PERL_CALLCONV void Perl_ck_warner_d(pTHX_ U32 err, const char* pat, ...)
 #define PERL_ARGS_ASSERT_CK_WARNER_D   \
        assert(pat)
 
-PERL_CALLCONV bool     Perl_ckwarn(pTHX_ U32 w);
-PERL_CALLCONV bool     Perl_ckwarn_d(pTHX_ U32 w);
+PERL_CALLCONV bool     Perl_ckwarn(pTHX_ U32 w)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__;
+
+PERL_CALLCONV bool     Perl_ckwarn_d(pTHX_ U32 w)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__;
+
 PERL_CALLCONV void     Perl_clear_defarray(pTHX_ AV* av, bool abandon);
 #define PERL_ARGS_ASSERT_CLEAR_DEFARRAY        \
        assert(av)
@@ -1281,8 +1287,14 @@ PERL_CALLCONV SV**       Perl_hv_store_flags(pTHX_ HV *hv, const char *key, I32 klen,
 #endif
 /* PERL_CALLCONV void  hv_undef(pTHX_ HV *hv); */
 PERL_CALLCONV void     Perl_hv_undef_flags(pTHX_ HV *hv, U32 flags);
-/* PERL_CALLCONV I32   ibcmp(pTHX_ const char* a, const char* b, I32 len); */
-/* PERL_CALLCONV I32   ibcmp_locale(pTHX_ const char* a, const char* b, I32 len); */
+/* PERL_CALLCONV I32   ibcmp(pTHX_ const char* a, const char* b, I32 len)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__; */
+
+/* PERL_CALLCONV I32   ibcmp_locale(pTHX_ const char* a, const char* b, I32 len)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__; */
+
 /* PERL_CALLCONV I32   ibcmp_utf8(pTHX_ const char *s1, char **pe1, UV l1, bool u1, const char *s2, char **pe2, UV l2, bool u2); */
 PERL_CALLCONV void     Perl_init_argv_symbols(pTHX_ int argc, char **argv);
 #define PERL_ARGS_ASSERT_INIT_ARGV_SYMBOLS     \
@@ -1665,7 +1677,10 @@ PERL_CALLCONV bool       Perl_is_utf8_xidfirst(pTHX_ const U8 *p)
 #define PERL_ARGS_ASSERT_IS_UTF8_XIDFIRST      \
        assert(p)
 
-PERL_CALLCONV bool     Perl_isinfnan(NV nv);
+PERL_CALLCONV bool     Perl_isinfnan(NV nv)
+                       __attribute__warn_unused_result__
+                       __attribute__pure__;
+
 PERL_CALLCONV bool     Perl_isinfnansv(pTHX_ SV *sv);
 #define PERL_ARGS_ASSERT_ISINFNANSV    \
        assert(sv)