Re: ext/ + -Wall
Doug MacEachern [Wed, 13 Jun 2001 10:02:16 +0000 (03:02 -0700)]
Message-ID: <Pine.LNX.4.21.0106130959050.24181-100000@mako.covalent.net>

p4raw-id: //depot/perl@10566

XSUB.h
lib/ExtUtils/xsubpp
perl.h

diff --git a/XSUB.h b/XSUB.h
index 74e37ed..a5f8e59 100644 (file)
--- a/XSUB.h
+++ b/XSUB.h
@@ -66,10 +66,7 @@ handled automatically by C<xsubpp>.
 #  define XS(name) void name(pTHXo_ CV* cv)
 #endif
 
-/* gcc -Wall: if an xsub has no arguments and PPCODE is used
- * and none of ST, XSRETURN or XSprePUSH macros are used
- * then `ax' (setup by dXSARGS) is unused. */
-#define dAX I32 ax PERL_UNUSED_DECL = MARK - PL_stack_base + 1
+#define dAX I32 ax = MARK - PL_stack_base + 1
 
 #define dITEMS I32 items = SP - MARK
 
index cadbf5c..bc4d6ae 100755 (executable)
@@ -1220,6 +1220,15 @@ EOF
 #      Perl_croak(aTHX_ "Usage: $pname($report_args)");
 EOF
 
+    #gcc -Wall: if an xsub has no arguments and PPCODE is used
+    #it is likely none of ST, XSRETURN or XSprePUSH macros are used
+    #hence `ax' (setup by dXSARGS) is unused
+    #XXX: could breakup the dXSARGS; into dSP;dMARK;dITEMS
+    #but such a move could break third-party extensions
+    print Q<<"EOF" if $PPCODE and $num_args == 0;
+#   PERL_UNUSED_VAR(ax); /* -Wall */
+EOF
+
     print Q<<"EOF" if $PPCODE;
 #    SP -= items;
 EOF
diff --git a/perl.h b/perl.h
index 43e1150..457838f 100644 (file)
--- a/perl.h
+++ b/perl.h
@@ -231,6 +231,12 @@ struct perl_thread;
 #  define PERL_UNUSED_DECL
 #endif
 
+/* gcc -Wall:
+ * for silencing unused variables that are actually used most of the time,
+ * but we cannot quite get rid of, such `ax' in PPCODE+noargs xsubs
+ */
+#define PERL_UNUSED_VAR(var) if (0) var = var
+
 #define NOOP (void)0
 #define dNOOP extern int Perl___notused PERL_UNUSED_DECL