This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix some compilation warnings
authorKarl Williamson <khw@cpan.org>
Thu, 12 Jun 2014 20:35:45 +0000 (14:35 -0600)
committerKarl Williamson <khw@cpan.org>
Thu, 12 Jun 2014 21:04:54 +0000 (15:04 -0600)
After commits d6ded95025185cb1ec8ca3ba5879cab881d8b180 and
130c5df3625bd130cd1e2771308fcd4eb66cebb2, there are some compilation
warnings if not all locale categories are used.

embed.fnc
embed.h
perl.h
pp.c
pp_sort.c
proto.h

index 22205d8..7574d3f 100644 (file)
--- a/embed.fnc
+++ b/embed.fnc
@@ -2042,7 +2042,9 @@ s |I32    |sv_i_ncmp      |NN SV *const a|NN SV *const b
 s      |I32    |amagic_ncmp    |NN SV *const a|NN SV *const b
 s      |I32    |amagic_i_ncmp  |NN SV *const a|NN SV *const b
 s      |I32    |amagic_cmp     |NN SV *const str1|NN SV *const str2
+#   ifdef USE_LOCALE_COLLATE
 s      |I32    |amagic_cmp_locale|NN SV *const str1|NN SV *const str2
+#endif
 s      |I32    |sortcv         |NN SV *const a|NN SV *const b
 s      |I32    |sortcv_xsub    |NN SV *const a|NN SV *const b
 s      |I32    |sortcv_stacked |NN SV *const a|NN SV *const b
diff --git a/embed.h b/embed.h
index 5710e0a..13504b1 100644 (file)
--- a/embed.h
+++ b/embed.h
 #  endif
 #  if defined(PERL_IN_PP_SORT_C)
 #define amagic_cmp(a,b)                S_amagic_cmp(aTHX_ a,b)
-#define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b)
 #define amagic_i_ncmp(a,b)     S_amagic_i_ncmp(aTHX_ a,b)
 #define amagic_ncmp(a,b)       S_amagic_ncmp(aTHX_ a,b)
 #define qsortsvu(a,b,c)                S_qsortsvu(aTHX_ a,b,c)
 #define sortcv_xsub(a,b)       S_sortcv_xsub(aTHX_ a,b)
 #define sv_i_ncmp(a,b)         S_sv_i_ncmp(aTHX_ a,b)
 #define sv_ncmp(a,b)           S_sv_ncmp(aTHX_ a,b)
+#    if defined(USE_LOCALE_COLLATE)
+#define amagic_cmp_locale(a,b) S_amagic_cmp_locale(aTHX_ a,b)
+#    endif
 #  endif
 #  if defined(PERL_IN_PP_SYS_C)
 #define doform(a,b,c)          S_doform(aTHX_ a,b,c)
diff --git a/perl.h b/perl.h
index 4c5e8f0..82c1d91 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -5276,6 +5276,7 @@ typedef struct am_table_short AMTS;
 #define PERLDB_SAVESRC_NOSUBS  (PL_perldb && (PL_perldb & PERLDBf_SAVESRC_NOSUBS))
 #define PERLDB_SAVESRC_INVALID (PL_perldb && (PL_perldb & PERLDBf_SAVESRC_INVALID))
 
+#ifdef USE_LOCALE
 /* These locale things are all subject to change */
 /* Returns TRUE if the plain locale pragma without a parameter is in effect
  */
@@ -5305,6 +5306,22 @@ typedef struct am_table_short AMTS;
 #define IN_LC_RUNTIME(category)         (IN_LC_ALL_RUNTIME || (IN_LC_PARTIAL_RUNTIME && _is_in_locale_category(FALSE, (category))))
 #define IN_LC(category)                 (IN_LC_COMPILETIME(category) || IN_LC_RUNTIME(category))
 
+#else   /* No locale usage */
+#   define IN_LOCALE_RUNTIME                0
+#   define IN_SOME_LOCALE_FORM_RUNTIME      0
+#   define IN_LOCALE_COMPILETIME            0
+#   define IN_SOME_LOCALE_FORM_COMPILETIME  0
+#   define IN_LOCALE                        0
+#   define IN_SOME_LOCALE_FORM              0
+#   define IN_LC_ALL_COMPILETIME            0
+#   define IN_LC_ALL_RUNTIME                0
+#   define IN_LC_PARTIAL_COMPILETIME        0
+#   define IN_LC_PARTIAL_RUNTIME            0
+#   define IN_LC_COMPILETIME(category)      0
+#   define IN_LC_RUNTIME(category)          0
+#   define IN_LC(category)                  0
+#endif
+
 #ifdef USE_LOCALE_NUMERIC
 
 /* These macros are for toggling between the underlying locale (LOCAL) and the
@@ -5415,8 +5432,6 @@ typedef struct am_table_short AMTS;
 #define UNLOCK_NUMERIC_STANDARD()
 
 #define Atof                           my_atof
-#define IN_LOCALE_RUNTIME              0
-#define IN_LOCALE_COMPILETIME          0
 
 #endif /* !USE_LOCALE_NUMERIC */
 
diff --git a/pp.c b/pp.c
index 4146256..1d25900 100644 (file)
--- a/pp.c
+++ b/pp.c
@@ -3574,8 +3574,9 @@ PP(pp_ucfirst)
             /* Here, is ucfirst non-UTF-8, not in locale (unless that locale is
              * UTF-8, which we treat as not in locale), and cased latin1 */
            UV title_ord;
-
+#ifdef USE_LOCALE_CTYPE
       do_uni_rules:
+#endif
 
            title_ord = _to_upper_title_latin1(*s, tmpbuf, &tculen, 's');
            if (tculen > 1) {
@@ -3875,7 +3876,9 @@ PP(pp_uc)
                }
            }
            else {
+#ifdef USE_LOCALE_CTYPE
           do_uni_rules:
+#endif
                for (; s < send; d++, s++) {
                    *d = toUPPER_LATIN1_MOD(*s);
                    if (LIKELY(*d != LATIN_SMALL_LETTER_Y_WITH_DIAERESIS)) {
@@ -4259,7 +4262,9 @@ PP(pp_fc)
                 *d = toFOLD(*s);
         }
         else {
+#ifdef USE_LOCALE_CTYPE
       do_uni_folding:
+#endif
             /* For ASCII and the Latin-1 range, there's only two troublesome
              * folds, \x{DF} (\N{LATIN SMALL LETTER SHARP S}), which under full
              * casefolding becomes 'ss'; and \x{B5} (\N{MICRO SIGN}), which
index 86a5e36..0d9ef47 100644 (file)
--- a/pp_sort.c
+++ b/pp_sort.c
@@ -2001,6 +2001,8 @@ S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
     return sv_cmp(str1, str2);
 }
 
+#ifdef USE_LOCALE_COLLATE
+
 static I32
 S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
 {
@@ -2022,6 +2024,8 @@ S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
     return sv_cmp_locale(str1, str2);
 }
 
+#endif
+
 /*
  * Local variables:
  * c-indentation-style: bsd
diff --git a/proto.h b/proto.h
index 27981e9..1c339e9 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -6588,12 +6588,6 @@ STATIC I32       S_amagic_cmp(pTHX_ SV *const str1, SV *const str2)
 #define PERL_ARGS_ASSERT_AMAGIC_CMP    \
        assert(str1); assert(str2)
 
-STATIC I32     S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
-                       __attribute__nonnull__(pTHX_1)
-                       __attribute__nonnull__(pTHX_2);
-#define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE     \
-       assert(str1); assert(str2)
-
 STATIC I32     S_amagic_i_ncmp(pTHX_ SV *const a, SV *const b)
                        __attribute__nonnull__(pTHX_1)
                        __attribute__nonnull__(pTHX_2);
@@ -6641,6 +6635,14 @@ STATIC I32       S_sv_ncmp(pTHX_ SV *const a, SV *const b)
 #define PERL_ARGS_ASSERT_SV_NCMP       \
        assert(a); assert(b)
 
+#  if defined(USE_LOCALE_COLLATE)
+STATIC I32     S_amagic_cmp_locale(pTHX_ SV *const str1, SV *const str2)
+                       __attribute__nonnull__(pTHX_1)
+                       __attribute__nonnull__(pTHX_2);
+#define PERL_ARGS_ASSERT_AMAGIC_CMP_LOCALE     \
+       assert(str1); assert(str2)
+
+#  endif
 #endif
 #if defined(PERL_IN_PP_SYS_C)
 STATIC OP*     S_doform(pTHX_ CV *cv, GV *gv, OP *retop)